From ce0dbc0a9627368b40ab178a6792cd0395f3300f Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Wed, 13 May 2026 00:43:09 -0700 Subject: add polling battery module --- panel.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'panel.py') diff --git a/panel.py b/panel.py index 854d57d..14349cf 100755 --- a/panel.py +++ b/panel.py @@ -446,6 +446,35 @@ class ModInterval(Mod): def set_error(self): self.out = Fmt.labelled(self.label, Fmt.bg('#a03000', ' error ')) +class ModBatteryPoll(ModInterval): + def __init__(self, battery, adapter=None, **kwargs): + kwargs.setdefault('label', 'BAT') + super().__init__(**kwargs) + self.battery = battery + self.adapter = adapter + + self._percent = None + self._charging = None + + def refresh(self): + with open(f'/sys/class/power_supply/{self.battery}/capacity') as f: + percent = f.read().rstrip('\n') + charging = None + if self.adapter: + with open(f'/sys/class/power_supply/{self.adapter}/online') as f: + charging = (f.read().rstrip('\n') == '1') + self._update_state(percent, charging) + + def _update_state(self, percent=None, charging=None): + if percent is not None: + self._percent = percent + if charging is not None: + self._charging = charging + buf = f'{self._percent}%%' + if self._charging: + buf += ' (charging)' + self.out = Fmt.labelled(self.label, buf) + class ModNetIf(ModInterval): def __init__(self, ifname, regex=False, **kwargs): kwargs.setdefault('label', ifname) @@ -554,8 +583,8 @@ class Panel: def spawn_panel(self): self.panel = subprocess.Popen( ('/home/david/dev/lemonbar-xft/lemonbar', - '-f', 'Monospace:size=10:dpi=96', - '-f', 'Monospace:size=10:dpi=96:bold', + '-f', 'Monospace:size=10', + '-f', 'Monospace:size=10:bold', '-b', '-g', f'{self.width}x{self.height}', '-u', '2', @@ -630,5 +659,5 @@ Panel( {'id': 'Asia/Yerevan', 'label': 'AMT'})), max_paint_delay=0.01, width=(re.match(r'[0-9]+', HLWMClient.exec('attr', 'monitors.0.geometry')) - .group()) + .group()), ).run() -- cgit v1.3.1