From d91294f010cc342d1e807064bed56fcfa1d77a3a Mon Sep 17 00:00:00 2001 From: Tobi-wan Kenobi Date: Sun, 11 Dec 2016 07:28:15 +0100 Subject: [PATCH] [modules/battery] Fix ac and unknown display If the computer runs on AC, display that instead of showing "100%" in the status. Also, if reading the charging status fails for some reason (except the computer being on AC), go into critical state and display "n/a". see #23 --- bumblebee/modules/battery.py | 14 ++++++++++++-- bumblebee/theme.py | 5 +++-- themes/icons/awesome-fonts.json | 5 ++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/bumblebee/modules/battery.py b/bumblebee/modules/battery.py index 581a3eb..423d509 100644 --- a/bumblebee/modules/battery.py +++ b/bumblebee/modules/battery.py @@ -19,11 +19,15 @@ class Module(bumblebee.engine.Module): super(Module, self).__init__(engine, config, bumblebee.output.Widget(full_text=self.capacity) ) - battery = self.parameter("device", "BAT1") + battery = self.parameter("device", "BAT0") self._path = "/sys/class/power_supply/{}".format(battery) self._capacity = 100 def capacity(self): + if self._ac: + return "ac" + if self._capacity == -1: + return "n/a" return "{:03d}%".format(self._capacity) def update(self, widgets): @@ -31,16 +35,22 @@ class Module(bumblebee.engine.Module): self._ac = False if not os.path.exists(self._path): self._ac = True + self._capacity = 100 + return try: with open(self._path + "/capacity") as f: self._capacity = int(f.read()) except IOError: - self._capacity = 100 + self._capacity = -1 self._capacity = self._capacity if self._capacity < 100 else 100 def state(self, widget): state = [] + + if self._capacity < 0: + return ["critical", "unknown"] + if self._capacity < int(self.parameter("critical", 10)): state.append("critical") elif self._capacity < int(self.parameter("warning", 20)): diff --git a/bumblebee/theme.py b/bumblebee/theme.py index a7a7ccd..3486f70 100644 --- a/bumblebee/theme.py +++ b/bumblebee/theme.py @@ -121,8 +121,9 @@ class Theme(object): state_themes = [] # avoid infinite recursion - if name not in widget.state(): - for state in widget.state(): + states = widget.state() + if name not in states: + for state in states: state_themes.append(self._get(widget, state, {})) value = self._defaults.get(name, default) diff --git a/themes/icons/awesome-fonts.json b/themes/icons/awesome-fonts.json index c019337..770cfa8 100644 --- a/themes/icons/awesome-fonts.json +++ b/themes/icons/awesome-fonts.json @@ -1,5 +1,8 @@ { - "defaults": { "separator": "", "padding": " " }, + "defaults": { + "separator": "", "padding": " ", + "unknown": { "prefix": "" } + }, "date": { "prefix": "" }, "time": { "prefix": "" }, "memory": { "prefix": "" },