diff --git a/Modules/Bar/Widgets/SystemMonitor.qml b/Modules/Bar/Widgets/SystemMonitor.qml index f28b50678..0f4028194 100644 --- a/Modules/Bar/Widgets/SystemMonitor.qml +++ b/Modules/Bar/Widgets/SystemMonitor.qml @@ -329,7 +329,7 @@ Rectangle { } NText { - text: `${SystemStatService.diskPercent}%` + text: `${SystemStatService.diskPercents["/"]}%` family: Settings.data.ui.fontFixed pointSize: textSize applyUiScale: false diff --git a/Modules/ControlCenter/Cards/SystemMonitorCard.qml b/Modules/ControlCenter/Cards/SystemMonitorCard.qml index 3e23aa893..390d4ee3c 100644 --- a/Modules/ControlCenter/Cards/SystemMonitorCard.qml +++ b/Modules/ControlCenter/Cards/SystemMonitorCard.qml @@ -46,7 +46,7 @@ NBox { Layout.alignment: Qt.AlignHCenter } NCircleStat { - value: SystemStatService.diskPercent + value: SystemStatService.diskPercents["/"] icon: "storage" flat: true contentScale: 0.8 diff --git a/Services/SystemStatService.qml b/Services/SystemStatService.qml index 1e89d5c24..cf58b75aa 100644 --- a/Services/SystemStatService.qml +++ b/Services/SystemStatService.qml @@ -9,18 +9,18 @@ import qs.Commons Singleton { id: root + // Configuration + property int sleepDuration: 3000 + // Public values property real cpuUsage: 0 property real cpuTemp: 0 property real memGb: 0 property real memPercent: 0 - property real diskPercent: 0 + property var diskPercents: ({}) property real rxSpeed: 0 property real txSpeed: 0 - // Configuration - property int sleepDuration: 3000 - // Internal state for CPU calculation property var prevCpuStats: null @@ -94,15 +94,22 @@ Singleton { // Uses 'df' aka 'disk free' Process { id: dfProcess - command: ["df", "--output=pcent", "/"] + command: ["df", "--output=target,pcent"] running: false stdout: StdioCollector { onStreamFinished: { const lines = text.trim().split('\n') - if (lines.length >= 2) { - const percent = lines[1].replace(/[^0-9]/g, '') - root.diskPercent = parseInt(percent) || 0 + const newPercents = {} + // Start from line 1 (skip header) + for (let i = 1; i < lines.length; i++) { + const parts = lines[i].trim().split(/\s+/) + if (parts.length >= 2) { + const target = parts[0] + const percent = parseInt(parts[1].replace(/[^0-9]/g, '')) || 0 + newPercents[target] = percent + } } + root.diskPercents = newPercents } } }