mirror of
https://github.com/rubickCenter/rubick
synced 2025-06-18 09:46:59 +08:00
feat: 触摸板支持系统监控
This commit is contained in:
parent
2d2743cbb1
commit
b58c37842a
BIN
src/main/common/icons/charger.png
Normal file
BIN
src/main/common/icons/charger.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
BIN
src/main/common/icons/chip.png
Normal file
BIN
src/main/common/icons/chip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
BIN
src/main/common/icons/hard-disk-drive.png
Normal file
BIN
src/main/common/icons/hard-disk-drive.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 876 B |
BIN
src/main/common/icons/internet.png
Normal file
BIN
src/main/common/icons/internet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
BIN
src/main/common/icons/power.png
Normal file
BIN
src/main/common/icons/power.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
src/main/common/icons/ram.png
Normal file
BIN
src/main/common/icons/ram.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
@ -6,6 +6,7 @@ import ioHook from 'iohook';
|
||||
import {throttle, commonConst} from './utils';
|
||||
import path from 'path';
|
||||
import fs from "fs";
|
||||
import mito from './monitor';
|
||||
|
||||
const browsers = require("../browsers")();
|
||||
const {picker, separator, superPanel} = browsers;
|
||||
@ -239,10 +240,21 @@ class Listener {
|
||||
showCloseButton: true
|
||||
});
|
||||
|
||||
const monitor = new TouchBarPopover({
|
||||
items: mito.touchBar,
|
||||
label: '系统监控',
|
||||
showCloseButton: true
|
||||
});
|
||||
|
||||
const touchBar = new TouchBar({
|
||||
items: [plugin, ...system]
|
||||
items: [
|
||||
plugin,
|
||||
monitor,
|
||||
...system
|
||||
]
|
||||
});
|
||||
mainWindow.setTouchBar(touchBar);
|
||||
mito.start(mainWindow);
|
||||
});
|
||||
}
|
||||
|
||||
|
124
src/main/common/monitor.js
Normal file
124
src/main/common/monitor.js
Normal file
@ -0,0 +1,124 @@
|
||||
const {TouchBar} = require('electron')
|
||||
const path = require('path')
|
||||
const si = require('systeminformation');
|
||||
const spawn = require('child_process').spawn;
|
||||
|
||||
const {TouchBarButton, TouchBarSpacer} = TouchBar;
|
||||
|
||||
const LOAD_NORMAL = "#2ecc71";
|
||||
const LOAD_MEDIUM = "#f1c40f";
|
||||
const LOAD_HIGH = "#d35400";
|
||||
const LOAD_SEVERE = "#e74c3c";
|
||||
|
||||
const cpu = new TouchBarButton({
|
||||
label: '',
|
||||
backgroundColor: "#bdc3c7",
|
||||
icon: path.join(__dirname, 'icons/chip.png'),
|
||||
iconPosition: "left",
|
||||
click: () => {
|
||||
spawn("/System/Applications/Utilities/Activity Monitor.app/Contents/MacOS/Activity\ Monitor", []);
|
||||
}
|
||||
});
|
||||
|
||||
const memory = new TouchBarButton({
|
||||
label: '',
|
||||
backgroundColor: "#bdc3c7",
|
||||
icon: path.join(__dirname, 'icons/ram.png'),
|
||||
iconPosition: "left"
|
||||
});
|
||||
|
||||
const network = new TouchBarButton({
|
||||
label: '',
|
||||
backgroundColor: '#3498db',
|
||||
icon: path.join(__dirname, 'icons/internet.png'),
|
||||
iconPosition: "left"
|
||||
});
|
||||
|
||||
const battery = new TouchBarButton({
|
||||
label: '',
|
||||
backgroundColor: "#bdc3c7",
|
||||
icon: path.join(__dirname, 'icons/power.png'),
|
||||
iconPosition: "left"
|
||||
});
|
||||
|
||||
const updateData = () => {
|
||||
si.currentLoad(function(data) {
|
||||
if (typeof data !== 'undefined' && data){
|
||||
const load = data.currentLoad.toFixed(0)
|
||||
cpu.label = load+"%"
|
||||
if (load <= 20) cpu.backgroundColor = LOAD_NORMAL;
|
||||
else if (load > 20 && load <= 40) cpu.backgroundColor = LOAD_MEDIUM;
|
||||
else if (load > 40 && load <= 80) cpu.backgroundColor = LOAD_HIGH;
|
||||
else if (load > 80 && load <= 100) cpu.backgroundColor = LOAD_SEVERE;
|
||||
}
|
||||
})
|
||||
si.mem(function(data) {
|
||||
if (typeof data !== 'undefined' && data){
|
||||
const load = ((100* data.active ) / data.total).toFixed(0)
|
||||
memory.label = load+"%"
|
||||
if (load <= 20) memory.backgroundColor = LOAD_NORMAL;
|
||||
else if (load > 20 && load <= 40) memory.backgroundColor = LOAD_MEDIUM;
|
||||
else if (load > 40 && load <= 80) memory.backgroundColor = LOAD_HIGH;
|
||||
else if (load > 80 && load <= 100) memory.backgroundColor = LOAD_SEVERE;
|
||||
}
|
||||
|
||||
})
|
||||
si.networkStats("", function(data) {
|
||||
if (typeof data !== 'undefined' && data){
|
||||
const kbtx = (data[0].tx_sec * 0.001).toFixed(0)
|
||||
const kbrx = (data[0].rx_sec * 0.001).toFixed(0)
|
||||
const l = (kbtx+kbrx).toString().length
|
||||
|
||||
network.label = "⇡"+ (kbtx*0.001).toFixed(2)
|
||||
+" ⇣"+ (kbrx*0.001).toFixed(2) +" MB/s"
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
si.battery( function(data) {
|
||||
if (typeof data !== 'undefined' && data){
|
||||
if (data.ischarging){
|
||||
battery.icon = path.join(__dirname, 'icons/charger.png')
|
||||
}else{
|
||||
battery.icon = path.join(__dirname, 'icons/power.png')
|
||||
}
|
||||
const load = data.percent.toFixed(0)
|
||||
battery.label = load+"%"
|
||||
if (load <= 20) battery.backgroundColor = LOAD_SEVERE;
|
||||
else if (load > 20 && load <= 40) battery.backgroundColor = LOAD_HIGH;
|
||||
else if (load > 40 && load <= 80) battery.backgroundColor = LOAD_MEDIUM;
|
||||
else if (load > 80 && load <= 100) battery.backgroundColor = LOAD_NORMAL
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const touchBar = new TouchBar({
|
||||
items: [
|
||||
cpu,
|
||||
new TouchBarSpacer({size: 'small'}),
|
||||
memory,
|
||||
new TouchBarSpacer({size: 'small'}),
|
||||
network,
|
||||
new TouchBarSpacer({size: 'small'}),
|
||||
battery,
|
||||
]
|
||||
})
|
||||
|
||||
let intervalObj;
|
||||
|
||||
const start = (window) => {
|
||||
window.on('blur', () => {
|
||||
clearInterval(intervalObj);
|
||||
});
|
||||
window.on('focus', () => {
|
||||
intervalObj = setInterval(() => {
|
||||
updateData();
|
||||
}, 1000);
|
||||
});
|
||||
updateData();
|
||||
}
|
||||
|
||||
export default {
|
||||
start,
|
||||
touchBar,
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user