import QtQuick import Quickshell import "." as M import "../services" as S import "../applets" as C import NovaStats as NS M.BarModule { id: root spacing: NS.ThemeService.moduleSpacing active: NS.ModulesService.batteryEnable && S.BatteryService.available tooltip: "Battery: " + Math.round(S.BatteryService.percent) + "%" + (S.BatteryService.charging ? " (charging)" : "") panelNamespace: "nova-battery" panelContentWidth: 240 panelComponent: Component { C.BatteryApplet { width: parent.width active: root._showPanel accentColor: root.accentColor } } property real _blinkOpacity: 1 M.PulseAnimation on _blinkOpacity { running: S.BatteryService.critical minOpacity: 0.45 } M.BarIcon { icon: { if (S.BatteryService.charging) return "\uDB80\uDC84"; const icons = ["\uDB80\uDC8E", "\uDB80\uDC7A", "\uDB80\uDC7B", "\uDB80\uDC7C", "\uDB80\uDC7D", "\uDB80\uDC7E", "\uDB80\uDC7F", "\uDB80\uDC80", "\uDB80\uDC81", "\uDB80\uDC82", "\uDB85\uDFE2"]; return icons[Math.min(10, Math.floor(S.BatteryService.percent / 10))]; } color: S.BatteryService.stateColor opacity: root._blinkOpacity font.pixelSize: NS.ThemeService.fontSize + 2 anchors.verticalCenter: parent.verticalCenter } M.BarLabel { label: Math.round(S.BatteryService.percent) + "%" minText: "100%" color: S.BatteryService.stateColor opacity: root._blinkOpacity anchors.verticalCenter: parent.verticalCenter } }