istats-manager
Version:
Manage your stats CPU and battery
103 lines (91 loc) • 4.06 kB
JavaScript
;
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()
});
};