import QtQuick import Quickshell import Quickshell.Widgets import Quickshell.Services.UPower Item { id: root height: parent.height width: batteryIcon.width anchors.verticalCenter: parent.verticalCenter property var batteryDevice: Array.from(UPower.devices.values).find(dev => dev.isLaptopBattery) WrapperMouseArea { id: widgetMouseArea anchors.fill: parent hoverEnabled: true Item { anchors.fill: parent MaterialDesignIcon { id: batteryIcon implicitSize: 14 anchors.centerIn: parent icon: { if (!root.batteryDevice?.ready) return "battery-unknown"; if (root.batteryDevice.state == UPowerDeviceState.FullyCharged) return "power-plug-battery"; const perdec = 10 * Math.max(1, Math.ceil(root.batteryDevice.percentage * 10)); if (root.batteryDevice.state == UPowerDeviceState.Charging) return `battery-charging-${perdec}`; if (perdec == 100) return "battery"; return `battery-${perdec}`; } color: { if (!root.batteryDevice?.ready) return "#555"; if (root.batteryDevice.state != UPowerDeviceState.FullyCharged && root.batteryDevice.state != UPowerDeviceState.Charging && root.batteryDevice.timeToEmpty < 20 * 60) return "#f2201f"; if (root.batteryDevice.state != UPowerDeviceState.FullyCharged && root.batteryDevice.state != UPowerDeviceState.Charging && root.batteryDevice.timeToEmpty < 40 * 60) return "#f28a21"; if (root.batteryDevice.state != UPowerDeviceState.FullyCharged) return "#fff"; return "#555"; } } } } }