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) + "%" } } }