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

36 lines
1.0 KiB
Python

from ignis.widgets import Widget
from ignis.services.upower import UPowerService, UPowerDevice
upower = UPowerService.get_default()
def battery_item(device: UPowerDevice) -> Widget.Box:
return Widget.Box(
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"],
),
],
)
def battery_widget() -> Widget.Box:
return Widget.Box(
setup=lambda self: upower.connect(
"battery-added", lambda x, device: self.append(battery_item(device))
),
)