forked from Shinonome/dots-hyprland
59 lines
1.5 KiB
QML
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());
|
|
}
|
|
}
|
|
}
|
|
}
|