UNPKG

istats-manager

Version:
103 lines (91 loc) 4.06 kB
'use strict'; const {app, Menu, Tray, nativeImage} = require('electron'); const command = require('shelljs/global'); exports.status = function() { let tray = null; let stats = {}; app.on('ready', () => { tray = new Tray(nativeImage.createEmpty()); // aboutUs.webContents.openDevTools() function getStats(callback) { let cpuTemp = exec('istats cpu temp --no-graphs', {silent: true, async: true}); let fanSpeed = exec('istats fan speed --no-graphs', {silent: true, async: true}); let batteryTemp = exec('istats battery temp --no-graphs', {silent: true, async: true}); cpuTemp.stdout.on('data', function (data) { const cpuTempArr = data.trim().split('\n').map(stat => stat.split(':')); stats.cpu = {label: 'CPU', value: cpuTempArr[0][1].trim()}; fanSpeed.stdout.on('data', function (data) { const fanSpeedArr = data.trim().split('\n').map(stat => stat.split(':')); stats.fan = fanSpeedArr.map((fan, index) => { const fans = {label: `FAN ${index}`, value: fan[1].trim()}; return fans; }); batteryTemp.stdout.on('data', function (data) { const batteryTempArr = data.trim().split('\n').map(stat => stat.split(':')); stats.battery = {label: 'Battery', value: batteryTempArr[0][1].trim()}; return callback(stats); }) }) }) } let istatsManager = function (event) { getStats(function (box) { let menu = [ { label: "Refresh", click: function (menuItem) { istatsManager() } }, { type: "separator" }]; for (let index in box) { switch (index) { case 'fan': for (let fanKey in box[index]) { menu.push( {label: `${box[index][fanKey]['label']}: ${box[index][fanKey]['value']}`} ); } break; case 'cpu': const cpuTemp = box[index]['value'].trim().replace('°C', ''); tray.setTitle(`${parseInt(cpuTemp)}°C`); menu.push( {label: `${box[index]['label']}: ${box[index]['value']}`} ); break; default: menu.push( {label: `${box[index]['label']}: ${box[index]['value']}`} ); break; } } menu.push( { type: "separator" }, { label: "Quit", role: 'quit' }); let contextMenu = Menu.buildFromTemplate(menu); tray.setToolTip('Electron iStats'); tray.setContextMenu(contextMenu) }) }; // refresh cpu temperature to tray text setInterval(() => { let cpuTemp = exec('istats cpu temp --no-graphs', {silent: true, async: true}); cpuTemp.stdout.on('data', function (data) { const cpuTempArr = data.trim().split('\n').map(stat => stat.split(':')); const cpuTemp = cpuTempArr[0][1].trim().replace('°C', ''); tray.setTitle(`${parseInt(cpuTemp)}°C`); }); }, 1000); // Run istatsManager() }); };