C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 15s
Python / fmt (pull_request) Successful in 29s
Python / lint (pull_request) Successful in 32s
Python / test (pull_request) Successful in 1m4s
Python / typecheck (pull_request) Failing after 1m10s
C++ / build (pull_request) Successful in 1m35s
Rust / fmt (pull_request) Successful in 36s
Rust / build (pull_request) Successful in 1m34s
Rust / clippy (pull_request) Successful in 1m28s
Python / buildcheck (pull_request) Successful in 2m35s
C++ / clang-tidy (pull_request) Successful in 3m32s
64 lines
2.0 KiB
QML
64 lines
2.0 KiB
QML
pragma Singleton
|
|
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Services.UPower
|
|
import qs.Config
|
|
import qs.Paths
|
|
import qs.Helpers
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
readonly property list<var> allPeripherals: [...logiDevices, ...upowerDevices.filter(d => !Battery.logiDevices.some(l => l.nativePath === d.nativePath))]
|
|
readonly property real currentPerc: UPower.displayDevice.percentage
|
|
readonly property var deviceState: UPower.displayDevice.state
|
|
readonly property string deviceStateString: UPowerDeviceState.toString(deviceState)
|
|
readonly property bool isLaptop: UPower.displayDevice.isLaptopBattery
|
|
readonly property alias logiDevices: adapter.devices
|
|
readonly property var lowestPeripheral: allPeripherals.reduce((lowest, current) => current.percentage < lowest.percentage ? current : lowest)
|
|
readonly property bool onBattery: UPower.onBattery
|
|
readonly property bool ready: UPower.displayDevice.ready
|
|
readonly property real timeToEmpty: UPower.displayDevice.timeToEmpty
|
|
readonly property real timeToFull: UPower.displayDevice.timeToFull
|
|
readonly property list<UPowerDevice> upowerDevices: UPower.devices.values.filter(d => d.state !== UPowerDeviceState.Unknown)
|
|
|
|
function getColors(percentage: real, state: string): var {
|
|
if (state === "charging" || state === "full" || state === "recharging")
|
|
return {
|
|
fg: DynamicColors.swapRG(DynamicColors.palette.m3error),
|
|
bg: DynamicColors.swapRG(DynamicColors.palette.m3onError)
|
|
};
|
|
else if (percentage <= 0.2)
|
|
return {
|
|
fg: DynamicColors.palette.m3error,
|
|
bg: DynamicColors.palette.m3onError
|
|
};
|
|
else
|
|
return {
|
|
fg: DynamicColors.palette.m3tertiary,
|
|
bg: DynamicColors.palette.m3onTertiary
|
|
};
|
|
}
|
|
|
|
function startDaemon(): void {
|
|
Quickshell.execDetached(["zshell-cli", "battery", "daemon"]);
|
|
}
|
|
|
|
FileView {
|
|
id: fileView
|
|
|
|
path: `${Paths.cache}/battery.json`
|
|
watchChanges: true
|
|
|
|
onFileChanged: reload()
|
|
|
|
JsonAdapter {
|
|
id: adapter
|
|
|
|
property list<var> devices: []
|
|
property real updated: 0.0
|
|
}
|
|
}
|
|
}
|