lemonbar-config/lemonvol.py
2020-12-13 12:51:52 +01:00

31 lines
815 B
Python
Executable File

#!/usr/bin/env python3
from pulsectl import Pulse, PulseLoopStop
import sys
# Adapt to your use-case
sink_id = 0
with Pulse() as pulse:
def callback(ev):
if ev.index == sink_id:
raise PulseLoopStop
try:
pulse.event_mask_set('sink')
pulse.event_callback_set(callback)
last_value = round(pulse.sink_list()[sink_id].volume.value_flat * 100)
last_mute = pulse.sink_list()[sink_id].mute == 1
while True:
pulse.event_listen()
value = round(pulse.sink_list()[sink_id].volume.value_flat * 100)
mute = pulse.sink_list()[sink_id].mute == 1
if value != last_value or mute != last_mute:
if mute:
print('mute')
else:
print(value)
last_value = value
last_mute = mute
sys.stdout.flush()
except:
pass