43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
|
"""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"]
|