diff volume_linux.py @ 1:04c8a1b3976b

volume r/w on linux+osx
author drewp@bigasterisk.com
date Fri, 03 Mar 2023 21:24:53 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/volume_linux.py	Fri Mar 03 21:24:53 2023 -0800
@@ -0,0 +1,30 @@
+from pulsectl_asyncio import PulseAsync
+
+_pulse = None
+
+
+async def _init():
+    global _pulse
+    if _pulse is not None:
+        return
+    _pulse = PulseAsync('racc')
+    await _pulse.connect()
+
+
+async def _get_sink():
+    [sink] = [
+        s for s in (await _pulse.sink_list())
+        if s.description == 'Built-in Audio Analog Stereo'
+    ]
+    return sink
+
+
+async def get_volume():
+    await _init()
+    return (await _get_sink()).volume.value_flat
+
+
+async def set_volume(v: float):
+    await _init()
+    sync = await _get_sink()
+    await _pulse.volume_set_all_chans(sink, v)