import datetime import bumblebee.module def usage(): return "battery::" def notes(): return "Reads /sys/class/power_supply//[capacity|status]" def description(): return "Displays battery status, percentage and whether it's charging or discharging" class Module(bumblebee.module.Module): def __init__(self, args): super(Module, self).__init__(args) self._battery = "BAT0" if not args else args[0] self._capacity = 0 self._status = "Unknown" def data(self): with open("/sys/class/power_supply/{}/capacity".format(self._battery)) as f: self._capacity = int(f.read()) return "{:02d}%".format(self._capacity) def warning(self): return self._capacity < 20 def critical(self): return self._capacity < 10 def state(self): with open("/sys/class/power_supply/{}/status".format(self._battery)) as f: self._status = f.read().strip() if self._status == "Discharging": if self._capacity < 10: return "discharging_critical" if self._capacity < 25: return "discharging_low" if self._capacity < 50: return "discharging_medium" if self._capacity < 75: return "discharging_high" return "discharging_full" else: if self._capacity > 95: return "charged" return "charging" # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4