forked from Shinonome/dots-hyprland
wbar: add updates indicator
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
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 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user