organize files
This commit is contained in:
75
quickshell/SystemStats.qml
Normal file
75
quickshell/SystemStats.qml
Normal file
@@ -0,0 +1,75 @@
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
// =====================
|
||||
// System stats
|
||||
// =====================
|
||||
property int cpuUsage: 0
|
||||
property int memUsage: 0
|
||||
|
||||
property var lastCpuIdle: 0
|
||||
property var lastCpuTotal: 0
|
||||
|
||||
Process {
|
||||
id: cpuProc
|
||||
// get cpu usage, first line of /proc/stat
|
||||
command: ["cat", "/proc/stat"]
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: {
|
||||
var line = this.text.split(/\r?\n/)[1].split(" ");
|
||||
|
||||
var user = parseInt(line[1]);
|
||||
var nice = parseInt(line[2]);
|
||||
var system = parseInt(line[3]);
|
||||
var idle = parseInt(line[4]);
|
||||
var iowait = parseInt(line[5]);
|
||||
var irq = parseInt(line[6]);
|
||||
var softirq = parseInt(line[7]);
|
||||
|
||||
var idleAll = idle + iowait;
|
||||
var total = user + nice + system + idle + iowait + irq + softirq;
|
||||
|
||||
var diffIdle = idleAll - root.lastCpuIdle;
|
||||
var diffTotal = total - root.lastCpuTotal;
|
||||
|
||||
if (diffTotal > 0) {
|
||||
root.cpuUsage = Math.round(100 * (1 - diffIdle / diffTotal));
|
||||
}
|
||||
|
||||
root.lastCpuIdle = idleAll;
|
||||
root.lastCpuTotal = total;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: memProc
|
||||
command: ["sh", "-c", "free | grep Mem"]
|
||||
stdout: SplitParser {
|
||||
onRead: data => {
|
||||
if (!data)
|
||||
return;
|
||||
var parts = data.trim().split(/\s+/);
|
||||
var total = parseInt(parts[1]) || 1;
|
||||
var used = parseInt(parts[2]) || 0;
|
||||
memUsage = Math.round(100 * used / total);
|
||||
}
|
||||
}
|
||||
Component.onCompleted: running = true
|
||||
}
|
||||
|
||||
// Update loop
|
||||
Timer {
|
||||
interval: 2000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: {
|
||||
cpuProc.running = true;
|
||||
memProc.running = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user