"""get volume level """ import re import bumblebee.input import bumblebee.output import bumblebee.engine class Module(bumblebee.engine.Module): def __init__(self, engine, config): super(Module, self).__init__(engine, config, bumblebee.output.Widget(full_text=self.volume) ) self._level = "0" self._muted = True device = self.parameter("device", "Master,0") self._cmdString = "amixer get {}".format(device) def volume(self, widget): m = re.search(r'([\d]+)\%', self._level) self._muted = True if m: if m.group(1) != "0" and "[on]" in self._level: self._muted = False return "{}%".format(m.group(1)) else: return "0%" def update(self, widgets): level = "" try: level = bumblebee.util.execute(self._cmdString) except Exception as e: level = "" self._level = level def state(self, widget): if self._muted: return ["warning", "muted"] return ["unmuted"]