Files
illogical-impulse/dots/.config/quickshell/ii/services/Updates.qml
T
2025-12-06 23:14:08 +01:00

59 lines
1.5 KiB
QML

pragma Singleton
import qs.modules.common
import qs.modules.common.functions
import QtQuick
import Quickshell
import Quickshell.Io
/*
* System updates service. Currently only supports Arch.
*/
Singleton {
id: root
property bool available: false
property alias checking: checkUpdatesProc.running
property int count: 0
readonly property bool updateAdvised: available && count > Config.options.updates.adviseUpdateThreshold
readonly property bool updateStronglyAdvised: available && count > Config.options.updates.stronglyAdviseUpdateThreshold
function load() {}
function refresh() {
if (!available) return;
print("[Updates] Checking for system updates")
checkUpdatesProc.running = true;
}
Timer {
interval: Config.options.updates.checkInterval * 60 * 1000
repeat: true
running: Config.ready
onTriggered: {
print("[Updates] Periodic update check due")
root.refresh();
}
}
Process {
id: checkAvailabilityProc
running: true
command: ["which", "checkupdates"]
onExited: (exitCode, exitStatus) => {
root.available = (exitCode === 0);
root.refresh();
}
}
Process {
id: checkUpdatesProc
command: ["bash", "-c", "checkupdates | wc -l"]
stdout: StdioCollector {
onStreamFinished: {
root.count = parseInt(text.trim());
}
}
}
}