mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-08-11 00:28:53 +00:00
75 lines
1.8 KiB
QML
75 lines
1.8 KiB
QML
pragma Singleton
|
|
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Services.UPower
|
|
import qs.Commons
|
|
import qs.Services
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
enum ChargingMode {
|
|
Full,
|
|
Balanced,
|
|
Conservative
|
|
}
|
|
|
|
property int chargingMode: BatteryService.ChargingMode.Balanced
|
|
readonly property string batteryTresholdScript: Quickshell.shellDir + '/Bin/set-battery-treshold.sh'
|
|
|
|
// Choose icon based on charge and charging state
|
|
function getIcon(percent, charging, isReady) {
|
|
if (!isReady) {
|
|
return "battery-exclamation"
|
|
}
|
|
|
|
if (charging) {
|
|
return "battery-charging"
|
|
} else {
|
|
if (percent >= 90)
|
|
return "battery-4"
|
|
if (percent >= 50)
|
|
return "battery-3"
|
|
if (percent >= 25)
|
|
return "battery-2"
|
|
if (percent >= 0)
|
|
return "battery-1"
|
|
return "battery"
|
|
}
|
|
}
|
|
|
|
function setChargingMode(newMode) {
|
|
switch (newMode) {
|
|
case BatteryService.ChargingMode.Full:
|
|
BatteryService.chargingMode = newMode
|
|
chargeLimitProcess.command = [batteryTresholdScript, "100"]
|
|
break
|
|
case BatteryService.ChargingMode.Balanced:
|
|
BatteryService.chargingMode = newMode
|
|
chargeLimitProcess.command = [batteryTresholdScript, "80"]
|
|
break
|
|
case BatteryService.ChargingMode.Conservative:
|
|
BatteryService.chargingMode = newMode
|
|
chargeLimitProcess.command = [batteryTresholdScript, "60"]
|
|
break
|
|
default:
|
|
return
|
|
}
|
|
chargeLimitProcess.running = true
|
|
}
|
|
|
|
Process {
|
|
id: chargeLimitProcess
|
|
workingDirectory: Quickshell.shellDir
|
|
running: false
|
|
stderr: StdioCollector {
|
|
onStreamFinished: {
|
|
if (this.text) {
|
|
Logger.warn("BatteryService", "ChargeLimitProcess stderr:", this.text)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|