quickshell/modules/bar/Bat.qml
2026-08-28 23:52:51 +02:00

44 lines
1.2 KiB
QML

import Quickshell.Services.UPower
import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Layouts
import QtQuick.Effects
import qs
import qs.widgets
import qs.settings
BarComponent {
id: root
visible: UPower.displayDevice.isLaptopBattery
property double percent: UPower.displayDevice.percentage * 100
property bool hasBattery: UPower.displayDevice.isLaptopBattery
property bool charging: UPower.displayDevice.state === UPowerDeviceState.Charging
implicitWidth: batLayout.implicitWidth + 16
function batteryIcon(): string {
const p = root.percent;
const chg = root.charging;
const isFull = root.full;
if (isFull)
return "battery-level-100-charged-symbolic";
if (p < 10)
return chg ? "battery-empty-charging-symbolic" : "battery-empty-symbolic";
const level = Math.min(100, Math.floor(p / 10) * 10);
return chg ? `battery-level-${level}-charging-symbolic` : `battery-level-${level}-symbolic`;
}
RowLayout {
id: batLayout
anchors.centerIn: root
StyledIcon {
iconName: root.batteryIcon()
}
StyledText {
text: Math.floor(root.percent) + "%"
}
}
}