"""get volume level Parameters: * amixer.device: Device to use, defaults to "Master,0" """ import re import core.module import core.widget import util.cli class Module(core.module.Module): def __init__(self, config, theme): super().__init__(config, theme, core.widget.Widget(self.volume)) self.__level = "n/a" self.__muted = True device = self.parameter("device", "Master,0") self._cmdString = "amixer get {}".format(device) def volume(self, widget): if self.__level == "n/a": return self.__level 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): try: self.__level = util.cli.execute( "amixer get {}".format(self.parameter("device", "Master,0")) ) except Exception as e: self.__level = "n/a" def state(self, widget): if self.__muted: return ["warning", "muted"] return ["unmuted"] # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4