mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
SystemMonitor: get available disk space
This commit is contained in:
@@ -136,8 +136,9 @@
|
||||
"showSwapUsage": false,
|
||||
"showNetworkStats": false,
|
||||
"showDiskUsage": false,
|
||||
"diskPath": "/",
|
||||
"showDiskDetails": false
|
||||
"showDiskUsageAsPercent": false,
|
||||
"showDiskAvailable": false,
|
||||
"diskPath": "/"
|
||||
},
|
||||
"Taskbar": {
|
||||
"onlySameOutput": true,
|
||||
|
||||
@@ -38,6 +38,8 @@ ColumnLayout {
|
||||
property bool valueShowSwapUsage: widgetData.showSwapUsage !== undefined ? widgetData.showSwapUsage : widgetMetadata.showSwapUsage
|
||||
property bool valueShowNetworkStats: widgetData.showNetworkStats !== undefined ? widgetData.showNetworkStats : widgetMetadata.showNetworkStats
|
||||
property bool valueShowDiskUsage: widgetData.showDiskUsage !== undefined ? widgetData.showDiskUsage : widgetMetadata.showDiskUsage
|
||||
property bool valueShowDiskUsageAsPercent: widgetData.showDiskUsageAsPercent !== undefined ? widgetData.showDiskUsageAsPercent : widgetMetadata.showDiskUsageAsPercent
|
||||
property bool valueShowDiskAvailable: widgetData.showDiskAvailable !== undefined ? widgetData.showDiskAvailable : widgetMetadata.showDiskAvailable
|
||||
property string valueDiskPath: widgetData.diskPath !== undefined ? widgetData.diskPath : widgetMetadata.diskPath
|
||||
property bool valueShowDiskDetails: widgetData.showDiskDetails !== undefined ? widgetData.showDiskDetails : widgetMetadata.showDiskDetails
|
||||
|
||||
@@ -55,8 +57,9 @@ ColumnLayout {
|
||||
settings.showSwapUsage = valueShowSwapUsage;
|
||||
settings.showNetworkStats = valueShowNetworkStats;
|
||||
settings.showDiskUsage = valueShowDiskUsage;
|
||||
settings.showDiskUsageAsPercent = valueShowDiskUsageAsPercent;
|
||||
settings.showDiskAvailable = valueShowDiskAvailable;
|
||||
settings.diskPath = valueDiskPath;
|
||||
settings.showDiskDetails = valueShowDiskDetails;
|
||||
|
||||
return settings;
|
||||
}
|
||||
@@ -207,16 +210,27 @@ ColumnLayout {
|
||||
}
|
||||
|
||||
NToggle {
|
||||
id: showDiskDetails
|
||||
id: showDiskUsageAsPercent
|
||||
Layout.fillWidth: true
|
||||
label: I18n.tr("bar.system-monitor.storage-details-label")
|
||||
description: I18n.tr("bar.system-monitor.storage-details-description")
|
||||
checked: valueShowDiskDetails
|
||||
label: "Disk as percentage"
|
||||
description: "Show disk space as percentage instead of absolute values."
|
||||
checked: valueShowDiskUsageAsPercent
|
||||
onToggled: checked => {
|
||||
valueShowDiskDetails = checked;
|
||||
valueShowDiskUsageAsPercent = checked;
|
||||
settingsChanged(saveSettings());
|
||||
}
|
||||
}
|
||||
|
||||
NToggle {
|
||||
id: showDiskAvailable
|
||||
Layout.fillWidth: true
|
||||
label: "Disk space available"
|
||||
description: "Shows how much disk space is available instead of how much is used."
|
||||
checked: valueShowDiskAvailable
|
||||
onToggled: checked => {
|
||||
valueShowDiskAvailable = checked;
|
||||
settingsChanged(saveSettings());
|
||||
}
|
||||
visible: !isVertical
|
||||
}
|
||||
|
||||
NComboBox {
|
||||
|
||||
@@ -30,6 +30,7 @@ Singleton {
|
||||
property real swapTotalGb: 0
|
||||
property var diskPercents: ({})
|
||||
property var diskUsedGb: ({}) // Used space in GB per mount point
|
||||
property var diskAvailableGb: ({}) // available space in GB per mount point
|
||||
property var diskSizeGb: ({}) // Total size in GB per mount point
|
||||
property real rxSpeed: 0
|
||||
property real txSpeed: 0
|
||||
@@ -385,7 +386,7 @@ Singleton {
|
||||
// --block-size=1 gives us bytes for precise GB calculation
|
||||
Process {
|
||||
id: dfProcess
|
||||
command: ["df", "--output=target,pcent,used,size", "--block-size=1", "-x", "efivarfs"]
|
||||
command: ["df", "--output=target,pcent,used,size,avail", "--block-size=1", "-x", "efivarfs"]
|
||||
running: false
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: {
|
||||
@@ -393,6 +394,7 @@ Singleton {
|
||||
const newPercents = {};
|
||||
const newUsedGb = {};
|
||||
const newSizeGb = {};
|
||||
const newAvailableGb = {};
|
||||
const bytesPerGb = 1024 * 1024 * 1024;
|
||||
// Start from line 1 (skip header)
|
||||
for (var i = 1; i < lines.length; i++) {
|
||||
@@ -402,14 +404,17 @@ Singleton {
|
||||
const percent = parseInt(parts[1].replace(/[^0-9]/g, '')) || 0;
|
||||
const usedBytes = parseFloat(parts[2]) || 0;
|
||||
const sizeBytes = parseFloat(parts[3]) || 0;
|
||||
const availBytes = parseFloat(parts[4]) || 0;
|
||||
newPercents[target] = percent;
|
||||
newUsedGb[target] = usedBytes / bytesPerGb;
|
||||
newSizeGb[target] = sizeBytes / bytesPerGb;
|
||||
newAvailableGb[target] = availBytes / bytesPerGb;
|
||||
}
|
||||
}
|
||||
root.diskPercents = newPercents;
|
||||
root.diskUsedGb = newUsedGb;
|
||||
root.diskSizeGb = newSizeGb;
|
||||
root.diskAvailableGb = newAvailableGb;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user