1
0
Fork 0
NixOS/hosts/totsugeki/home-manager/desktop/ags/config/services/cpu.js
2024-09-05 21:01:29 +02:00

40 lines
914 B
JavaScript

class CPUService extends Service {
static {
Service.register(this, {}, { "current-usage": ["float", "r"] });
}
#previousIdle = 0.0;
#previousTotal = 0.0;
#currentUsage = 0.0;
get current_usage() {
return this.#currentUsage;
}
constructor() {
super();
this.#update();
const interval = setInterval(() => {
this.#update();
}, 2000);
}
#update() {
const currentValues = Utils.exec(
"sh -c 'cat /proc/stat | grep cpu | head -n 1 | tr -s \" \"'",
)
.split(" ")
.slice(1, 10)
.map(Number);
let idle = currentValues[3];
let total = currentValues.reduce((a, b) => a + b, 0);
this.#currentUsage =
1.0 - (idle - this.#previousIdle) / (total - this.#previousTotal);
this.#previousIdle = idle;
this.#previousTotal = total;
this.changed("current-usage");
}
}
const cpu = new CPUService();
export default cpu;