Files
dotfiles/ignis/backup_30.03.2025/modules/bar/widgets/battery.py
T
2025-03-31 20:14:11 +02:00

38 lines
1.2 KiB
Python

from ignis.widgets import Widget
from ignis.services.upower import UPowerService, UPowerDevice
upower = UPowerService.get_default()
class BatteryItem(Widget.Box):
def __init__(self, device: UPowerDevice):
super().__init__(
css_classes=["battery-item"],
setup=lambda self: device.connect("removed", lambda x: self.unparent()),
child=[
Widget.Icon(
icon_name=device.bind("icon_name"), css_classes=["battery-icon"]
),
Widget.Label(
label=device.bind("percent", lambda x: f"{int(x)}%"),
css_classes=["battery-percent"],
),
Widget.Scale(
min=0,
max=100,
value=device.bind("percent"),
sensitive=False,
css_classes=["battery-scale"],
),
],
)
class Battery(Widget.Box):
def __init__(self):
super().__init__(
setup=lambda self: upower.connect(
"battery-added", lambda x, device: self.append(BatteryItem(device))
),
)