import Quickshell.Services.UPower import QtQuick import QtQuick.Layouts import QtQuick.Effects import qs import qs.widgets import qs.settings BarComponent { id: root layer.enabled: true layer.effect: MultiEffect { id: dropShadow source: root shadowEnabled: true shadowHorizontalOffset: 4 shadowVerticalOffset: 2 shadowOpacity: 0.5 shadowColor: "#020202" } clip: true color: Colors.moduleBg 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 required property double moduleHeight implicitHeight: moduleHeight implicitWidth: batLayout.implicitWidth + 16 radius: Config.rounding function batteryIcon(percent) { if (root.charging) return "battery_android_frame_bolt"; if (percent <= 15) return "battery_android_alert"; if (percent <= 30) return "battery_android_frame_2"; if (percent <= 50) return "battery_android_frame_3"; if (percent <= 70) return "battery_android_frame_4"; if (percent <= 85) return "battery_android_frame_5"; if (percent <= 100) return "battery_android_frame_full"; } RowLayout { id: batLayout anchors.centerIn: root MaterialIcon { text: root.batteryIcon(root.percent) } StyledText { text: Math.floor(root.percent) + "%" } } }