summaryrefslogtreecommitdiff
path: root/.config/quickshell/Services/Uptime.qml
diff options
context:
space:
mode:
authorSam Nystrom <sam@samnystrom.dev>2026-01-15 16:53:43 -0500
committerSam Nystrom <sam@samnystrom.dev>2026-01-15 16:53:43 -0500
commit53008538e5bef961e9ceb5abc5c5ee05a559e97d (patch)
tree3ad2f4fa7fbc88ff4bb67c75395cc4acdb9c09fb /.config/quickshell/Services/Uptime.qml
parent3ac17574dbcfe68b2fba11aeeb445f04d1170c2a (diff)
update qs config
Diffstat (limited to '.config/quickshell/Services/Uptime.qml')
-rw-r--r--.config/quickshell/Services/Uptime.qml63
1 files changed, 63 insertions, 0 deletions
diff --git a/.config/quickshell/Services/Uptime.qml b/.config/quickshell/Services/Uptime.qml
new file mode 100644
index 0000000..155be44
--- /dev/null
+++ b/.config/quickshell/Services/Uptime.qml
@@ -0,0 +1,63 @@
+pragma Singleton
+
+import Quickshell
+import Quickshell.Io
+import QtQuick
+
+Singleton {
+ id: root
+ property string uptime
+
+ Process {
+ id: uptimeProc
+ command: ["uptime"]
+ running: true
+ stdout: StdioCollector {
+ onStreamFinished: {
+ var t = this.text.trim().split(" up ")[1]
+
+ var days = 0
+ if (t.includes("day")) {
+ var [d, t] = t.split(" day")
+ days = parseInt(d.trim())
+ t = t.split(", ")[1]
+ }
+ t = t.split(", ")[0]
+
+ var hours = 0
+ var minutes = 0
+
+ if (t.includes("min")) {
+ minutes = parseInt(t.split(' min')[0])
+ } else {
+ var [h, m] = t.split(":")
+ hours = parseInt(h.trim())
+ minutes = parseInt(m.trim())
+ }
+
+ var uptime = "Up ";
+ if (days > 0) {
+ uptime += days + " day"
+ if (days != 1) uptime += "s"
+ uptime += ", "
+ }
+ if (hours > 0) {
+ uptime += hours + " hour"
+ if (hours != 1) uptime += "s"
+ uptime += ", "
+ }
+ uptime += minutes + " minute"
+ if (minutes != 1) uptime += "s"
+
+ root.uptime = uptime
+ }
+ }
+ }
+
+ Timer {
+ interval: 60000
+ running: true
+ repeat: true
+ onTriggered: uptimeProc.running = true
+ }
+}