ProfileCard: uptime is back

This commit is contained in:
quadbyte 2025-08-12 10:17:39 -04:00
parent 0202965f65
commit dab1b9b389

View file

@ -1,7 +1,9 @@
import QtQuick import QtQuick
import QtQuick.Effects
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell import Quickshell
import QtQuick.Effects import Quickshell.Io
import Quickshell.Widgets
import qs.Services import qs.Services
import qs.Widgets import qs.Widgets
@ -13,6 +15,8 @@ NBox {
// Hold a single instance of the Settings window (root is NLoader) // Hold a single instance of the Settings window (root is NLoader)
property var settingsWindow: null property var settingsWindow: null
property string uptimeText: "--"
Layout.fillWidth: true Layout.fillWidth: true
// Height driven by content // Height driven by content
implicitHeight: content.implicitHeight + Style.marginMedium * 2 * scaling implicitHeight: content.implicitHeight + Style.marginMedium * 2 * scaling
@ -42,7 +46,7 @@ NBox {
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
} }
NText { NText {
text: "System Uptime: —" text: `System Uptime: ${uptimeText}`
color: Colors.textSecondary color: Colors.textSecondary
} }
} }
@ -80,4 +84,39 @@ NBox {
} }
} }
} }
Timer {
interval: 60000
repeat: true
running: true
onTriggered: uptimeProcess.running = true
}
Process {
id: uptimeProcess
command: ["cat", "/proc/uptime"]
running: true
stdout: StdioCollector {
onStreamFinished: {
var uptimeSeconds = parseFloat(this.text.trim().split(' ')[0])
var minutes = Math.floor(uptimeSeconds / 60) % 60
var hours = Math.floor(uptimeSeconds / 3600) % 24
var days = Math.floor(uptimeSeconds / 86400)
// Format the output
if (days > 0) {
uptimeText = days + "d " + hours + "h"
} else if (hours > 0) {
uptimeText = hours + "h" + minutes + "m"
} else {
uptimeText = minutes + "m"
}
uptimeProcess.running = false
}
}
}
} }