import Quickshell.Widgets import Quickshell.Services.UPower import QtQuick import QtQuick.Layouts import qs import qs.widgets import qs.settings WrapperRectangle { id: root clip: true color: Colors.base01 property double percent: UPower.displayDevice.percentage * 100 property bool hasBattery: UPower.displayDevice.isLaptopBattery property bool charging: UPower.displayDevice.state == UPowerDeviceState.Charging leftMargin: 8 rightMargin: 8 radius: Config.rounding function batteryIcon(percent, charging) { if (percent <= 15) return charging ? "battery_charging_20" : "battery_alert"; if (percent <= 30) return charging ? "battery_charging_30" : "battery_2_bar"; if (percent <= 50) return charging ? "battery_charging_50" : "battery_3_bar"; if (percent <= 70) return charging ? "battery_charging_60" : "battery_4_bar"; if (percent <= 85) return charging ? "battery_charging_80" : "battery_5_bar"; if (percent <= 95) return charging ? "battery_charging_90" : "battery_6_bar"; return charging ? "battery_charging_full" : "battery_full"; } child: RowLayout { MaterialIcon { text: root.batteryIcon(root.percent, root.charging) } StyledText { text: Math.floor(root.percent) + "%" } } }