import QtQuick import Quickshell import Quickshell.Io import Quickshell.Services.UPower import "BatteryModel.js" as BatteryModel Item { id: root property var shell: null property string omarchyPath: Quickshell.env("OMARCHY_PATH") readonly property int batteryThreshold: 10 PersistentProperties { id: persisted reloadableId: "omarchy-battery" property bool notifiedLowBattery: false } function batteryPercentage() { return BatteryModel.batteryPercentage(UPower.displayDevice) } function isDischarging() { return BatteryModel.isDischarging(UPower.displayDevice, UPower.onBattery, UPowerDeviceState.Discharging) } function checkBattery() { var state = BatteryModel.shouldWarnLowBattery(UPower.displayDevice, UPower.onBattery, UPowerDeviceState.Discharging, batteryThreshold, persisted.notifiedLowBattery) persisted.notifiedLowBattery = state.notifiedLowBattery if (state.notify) sendLowBatteryWarning(state.level) } function sendLowBatteryWarning(level) { if (warningProcess.running) return warningProcess.command = [ "omarchy-battery-low", String(level) ] warningProcess.running = true } Process { id: warningProcess } Timer { interval: 30000 running: true repeat: true triggeredOnStart: true onTriggered: root.checkBattery() } Connections { target: UPower function onOnBatteryChanged() { root.checkBattery() } } }