Files
dotfiles/config/mpd/.config/mpd/bt-mpd-pause.py
T
2026-03-28 07:53:51 +01:00

42 lines
998 B
Python
Executable File

#!/usr/bin/env python3
"""Pause MPD when a Bluetooth audio device disconnects."""
import os
import subprocess
import dbus
from dbus.mainloop.glib import DBusGMainLoop
from gi.repository import GLib
MPD_SOCKET = os.environ.get(
"MPD_SOCKET",
os.path.join(
os.environ.get("XDG_RUNTIME_DIR", f"/run/user/{os.getuid()}"),
"mpdsocket",
),
)
def on_properties_changed(interface, changed, invalidated, path=None):
if interface != "org.bluez.Device1":
return
if "Connected" in changed and not changed["Connected"]:
subprocess.run(["mpc", "-h", MPD_SOCKET, "pause"], check=False)
def main():
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
bus.add_signal_receiver(
on_properties_changed,
signal_name="PropertiesChanged",
dbus_interface="org.freedesktop.DBus.Properties",
bus_name="org.bluez",
path_keyword="path",
)
GLib.MainLoop().run()
if __name__ == "__main__":
main()