bumblebee-status/modules/contrib/amixer.py

43 lines
1.1 KiB
Python
Raw Normal View History

2020-04-13 09:14:22 +02:00
"""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"]