Add showing level of value through bar
This commit is contained in:
@@ -10,13 +10,13 @@ Item {
|
|||||||
// =====================
|
// =====================
|
||||||
property int cpuUsage: 0
|
property int cpuUsage: 0
|
||||||
property int memUsage: 0
|
property int memUsage: 0
|
||||||
|
property int gpuUsage: 0
|
||||||
|
|
||||||
property var lastCpuIdle: 0
|
property var lastCpuIdle: 0
|
||||||
property var lastCpuTotal: 0
|
property var lastCpuTotal: 0
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
id: cpuProc
|
id: cpuProc
|
||||||
// get cpu usage, first line of /proc/stat
|
|
||||||
command: ["cat", "/proc/stat"]
|
command: ["cat", "/proc/stat"]
|
||||||
stdout: StdioCollector {
|
stdout: StdioCollector {
|
||||||
onStreamFinished: {
|
onStreamFinished: {
|
||||||
@@ -56,12 +56,29 @@ Item {
|
|||||||
var parts = data.trim().split(/\s+/);
|
var parts = data.trim().split(/\s+/);
|
||||||
var total = parseInt(parts[1]) || 1;
|
var total = parseInt(parts[1]) || 1;
|
||||||
var used = parseInt(parts[2]) || 0;
|
var used = parseInt(parts[2]) || 0;
|
||||||
memUsage = Math.round(100 * used / total);
|
root.memUsage = Math.round(100 * used / total);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Component.onCompleted: running = true
|
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
|
// Update loop
|
||||||
Timer {
|
Timer {
|
||||||
interval: 2000
|
interval: 2000
|
||||||
@@ -70,6 +87,7 @@ Item {
|
|||||||
onTriggered: {
|
onTriggered: {
|
||||||
cpuProc.running = true;
|
cpuProc.running = true;
|
||||||
memProc.running = true;
|
memProc.running = true;
|
||||||
|
gpuProc.running = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ ShellRoot {
|
|||||||
|
|
||||||
cpuUsage: stats.cpuUsage
|
cpuUsage: stats.cpuUsage
|
||||||
memUsage: stats.memUsage
|
memUsage: stats.memUsage
|
||||||
|
gpuUsage: stats.gpuUsage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
37
quickshell/ui/BarText.qml
Normal file
37
quickshell/ui/BarText.qml
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,6 +16,7 @@ Item {
|
|||||||
|
|
||||||
property int cpuUsage: 0
|
property int cpuUsage: 0
|
||||||
property int memUsage: 0
|
property int memUsage: 0
|
||||||
|
property int gpuUsage: 0
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
@@ -71,35 +72,31 @@ Item {
|
|||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: 10
|
spacing: 10
|
||||||
|
|
||||||
//TODO put this in separate component
|
BarText {
|
||||||
Text {
|
prefix: "C"
|
||||||
id: cpuText
|
value: cpuUsage
|
||||||
text: "CPU: " + cpuUsage + "%"
|
|
||||||
color: Constants.colYellow
|
|
||||||
font.pixelSize: Constants.fontSize
|
|
||||||
font.family: Constants.fontFamily
|
|
||||||
font.bold: true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: 1
|
width: 1
|
||||||
height: 16
|
height: 16
|
||||||
color: Constants.colMuted
|
color: Colors.md3.on_background
|
||||||
}
|
}
|
||||||
|
|
||||||
Text {
|
BarText {
|
||||||
id: memText
|
prefix: "M"
|
||||||
text: "Mem: " + memUsage + "%"
|
value: memUsage
|
||||||
color: Constants.colCyan
|
|
||||||
font.pixelSize: Constants.fontSize
|
|
||||||
font.family: Constants.fontFamily
|
|
||||||
font.bold: true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: 1
|
width: 1
|
||||||
height: 16
|
height: 16
|
||||||
color: Constants.colMuted
|
color: Colors.md3.on_background
|
||||||
|
}
|
||||||
|
|
||||||
|
BarText {
|
||||||
|
prefix: "G"
|
||||||
|
value: gpuUsage
|
||||||
}
|
}
|
||||||
|
|
||||||
Clock {}
|
Clock {}
|
||||||
|
|||||||
Reference in New Issue
Block a user