Package: xmobar Version: 0.33-1 Followup-For: Bug #920555 Users looking for a non-polling solution to ALSA volume may be able to adapt my script for it:
#!/usr/bin/python3 import re import subprocess import sys r = re.compile(r"\[(\d+)%\].*\[(on|off)\]$") args = "stdbuf -oL alsactl monitor".split() p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while True: data = subprocess.check_output(["amixer", "get", "Master"]) vline = data.rsplit(b"\n", 2)[-2].decode("utf-8") m = r.search(vline) assert(m) vol = m.group(1) onoff = m.group(2) muted = "%" if onoff == "on" else "M" sys.stdout.write(f"({vol}{muted})\n") sys.stdout.flush() p.stdout.readline() # type: ignore Thanks, --Robbie