From 90ed62ccf25df7c2d8ee976ab6fcdf7950211053 Mon Sep 17 00:00:00 2001 From: Damian D'Souza Date: Thu, 9 Oct 2025 17:45:20 +0200 Subject: [PATCH] BatteryService: implement basic functionality to set battery treshold --- Services/BatteryService.qml | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Services/BatteryService.qml b/Services/BatteryService.qml index f927c83a..e7f17dd9 100644 --- a/Services/BatteryService.qml +++ b/Services/BatteryService.qml @@ -1,6 +1,7 @@ pragma Singleton import Quickshell +import Quickshell.Io import Quickshell.Services.UPower import qs.Commons import qs.Services @@ -8,6 +9,15 @@ 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) { @@ -28,4 +38,37 @@ Singleton { 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) + } + } + } + } }