battery-wid

This commit is contained in:
Zacharias-Brohn
2026-02-11 16:26:33 +01:00
parent 0a543a5297
commit 99a7211ad3
2 changed files with 36 additions and 15 deletions
-11
View File
@@ -10,15 +10,4 @@ Singleton {
readonly property list<UPowerDevice> devices: UPower.devices.values readonly property list<UPowerDevice> devices: UPower.devices.values
readonly property bool onBattery: UPower.onBattery readonly property bool onBattery: UPower.onBattery
readonly property UPowerDevice displayDevice: UPower.displayDevice readonly property UPowerDevice displayDevice: UPower.displayDevice
property UPowerDevice batteryDevice: findDevice()
function findDevice(): UPowerDevice {
for ( let i = 0; i < root.devices.length; i++ ) {
console.log(root.devices[i])
if ( root.devices[i].isLaptopBattery ) {
return root.devices[i];
}
}
}
} }
+36 -4
View File
@@ -1,19 +1,51 @@
import Quickshell import Quickshell
import Quickshell.Services.UPower
import QtQuick import QtQuick
import QtQuick.Layouts
import qs.Components import qs.Components
import qs.Config import qs.Config
import qs.Helpers import qs.Helpers as Helpers
import qs.Modules import qs.Modules
Item { Item {
id: root id: root
implicitWidth: 100 implicitWidth: layout.childrenRect.width
anchors.top: parent.top anchors.top: parent.top
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
CustomText { RowLayout {
text: UPower.batteryDevice.percentage + "%" id: layout
anchors.centerIn: parent anchors.centerIn: parent
MaterialIcon {
animate: true
Layout.alignment: Qt.AlignVCenter
text: {
if (!Helpers.UPower.displayDevice.isLaptopBattery) {
if (PowerProfiles.profile === PowerProfile.PowerSaver)
return "energy_savings_leaf";
if (PowerProfiles.profile === PowerProfile.Performance)
return "rocket_launch";
return "balance";
}
const perc = Helpers.UPower.displayDevice.percentage;
const charging = [UPowerDeviceState.Charging, UPowerDeviceState.FullyCharged, UPowerDeviceState.PendingCharge].includes(Helpers.UPower.displayDevice.state);
if (perc === 1)
return charging ? "battery_charging_full" : "battery_full";
let level = Math.floor(perc * 7);
if (charging && (level === 4 || level === 1))
level--;
return charging ? `battery_charging_${(level + 3) * 10}` : `battery_${level}_bar`;
}
color: !Helpers.UPower.onBattery || UPower.displayDevice.percentage > 0.2 ? root.colour : Colours.palette.m3error
fill: 1
}
CustomText {
Layout.alignment: Qt.AlignVCenter
text: Helpers.UPower.displayDevice.isLaptopBattery ? qsTr("%1%").arg(Math.round(UPower.displayDevice.percentage * 100)) : qsTr("NaN")
}
} }
} }