Finish the wonderland: System told truthfully, in eight tabs instead of ten

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 23:31:52 -04:00
parent 9ffaf45a4d
commit be0e55214b
57 changed files with 5040 additions and 925 deletions
@@ -30,7 +30,14 @@ Singleton {
property bool bluebubblesDetected: false
property string hyprlandVersion: ""
// Asked of the binary, never restated. The literal is only what About falls
// back to on a machine where `qs --version` cannot be run: a hardcoded
// version is a fact that goes stale the first time Quickshell updates and
// then reports the wrong number with complete confidence.
property string quickshellVersion: "0.3.0"
property bool quickshellVersionRead: false
property string lastError: ""
// Explicit seams keep reset sequencing testable without changing the live
@@ -53,6 +60,7 @@ Singleton {
property var lockBusy: function() { return LockScreen.busy; }
readonly property bool busy: monitorQuery.running || serviceQuery.running || versionQuery.running
|| quickshellVersionQuery.running
|| configWrite.running || configVerify.running || bluebubblesQuery.running
readonly property bool bluebubblesAvailable: root.bluebubblesDetected
@@ -142,6 +150,25 @@ Singleton {
}
}
// Started once, from refresh(), and never again once it has answered --
// the version cannot change under a running shell. `qs --version` prints
// "Quickshell 0.3.1 (revision ..., distributed by ...)"; only the number
// is a fact About needs, and a line that does not match leaves the
// fallback in place rather than putting a parse failure on screen.
Process {
id: quickshellVersionQuery
command: ["qs", "--version"]
stdout: StdioCollector {
onStreamFinished: {
const match = this.text.match(/Quickshell\s+(\d+(?:\.\d+)*)/);
if (match) {
root.quickshellVersion = match[1];
root.quickshellVersionRead = true;
}
}
}
}
Process {
id: bluebubblesQuery
command: ["flatpak", "info", "app.bluebubbles.BlueBubbles"]
@@ -176,6 +203,8 @@ Singleton {
serviceQuery.running = true;
if (!versionQuery.running && !root.hyprlandVersion)
versionQuery.running = true;
if (!quickshellVersionQuery.running && !root.quickshellVersionRead)
quickshellVersionQuery.running = true;
if (!bluebubblesQuery.running)
bluebubblesQuery.running = true;
}