Add showing level of value through bar

This commit is contained in:
Sem
2026-04-03 19:52:27 +02:00
parent 406b8eb628
commit 506aeeff43
4 changed files with 72 additions and 19 deletions

View File

@@ -10,13 +10,13 @@ Item {
// =====================
property int cpuUsage: 0
property int memUsage: 0
property int gpuUsage: 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: {
@@ -56,12 +56,29 @@ Item {
var parts = data.trim().split(/\s+/);
var total = parseInt(parts[1]) || 1;
var used = parseInt(parts[2]) || 0;
memUsage = Math.round(100 * used / total);
root.memUsage = Math.round(100 * used / total);
}
}
Component.onCompleted: running = true
}
Process {
id: gpuProc
command: ["cat", "/sys/class/drm/card1/device/gpu_busy_percent"]
stdout: StdioCollector {
onStreamFinished: {
console.log("GPU usage data:", this.text);
if (!this.text) {
return;
}
var gpuUsage = parseInt(this.text.trim()) || 0;
root.gpuUsage = gpuUsage;
}
}
}
// Update loop
Timer {
interval: 2000
@@ -70,6 +87,7 @@ Item {
onTriggered: {
cpuProc.running = true;
memProc.running = true;
gpuProc.running = true;
}
}
}

View File

@@ -48,6 +48,7 @@ ShellRoot {
cpuUsage: stats.cpuUsage
memUsage: stats.memUsage
gpuUsage: stats.gpuUsage
}
}

37
quickshell/ui/BarText.qml Normal file
View File

@@ -0,0 +1,37 @@
import QtQuick
import Quickshell
import "../constants"
Item {
id: root
property int value: 0
property string prefix: ""
property string separator: "-"
property int valuePadding: 3
property int padding: 4
property string paddingChar: "0"
width: textItem.implicitWidth + padding
height: textItem.implicitHeight + padding
Rectangle {
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width
height: Math.max(1, root.value / 100 * parent.height)
color: Colors.md3.on_secondary
opacity: 1.0
}
Text {
id: textItem
anchors.centerIn: parent
z: 1
text: root.prefix + root.separator + String(root.value).padStart(root.valuePadding, root.paddingChar)
color: Colors.md3.inverse_primary
font.pixelSize: Constants.fontSize
font.family: Constants.fontFamily
font.bold: true
}
}

View File

@@ -16,6 +16,7 @@ Item {
property int cpuUsage: 0
property int memUsage: 0
property int gpuUsage: 0
RowLayout {
anchors.fill: parent
@@ -71,35 +72,31 @@ Item {
RowLayout {
spacing: 10
//TODO put this in separate component
Text {
id: cpuText
text: "CPU: " + cpuUsage + "%"
color: Constants.colYellow
font.pixelSize: Constants.fontSize
font.family: Constants.fontFamily
font.bold: true
BarText {
prefix: "C"
value: cpuUsage
}
Rectangle {
width: 1
height: 16
color: Constants.colMuted
color: Colors.md3.on_background
}
Text {
id: memText
text: "Mem: " + memUsage + "%"
color: Constants.colCyan
font.pixelSize: Constants.fontSize
font.family: Constants.fontFamily
font.bold: true
BarText {
prefix: "M"
value: memUsage
}
Rectangle {
width: 1
height: 16
color: Constants.colMuted
color: Colors.md3.on_background
}
BarText {
prefix: "G"
value: gpuUsage
}
Clock {}