38 lines
1.2 KiB
Python
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))
|
|
),
|
|
)
|