Solved it.
I had to use pacmd set-default-sink
rather than pactl set-card-profile
. To be able to use it in a script, you must export PULSE_RUNTIME_PATH
also. Create /usr/local/bin/hdmi_sound_toggle
:
#!/bin/sh
HDMI_STATUS=`cat /sys/class/drm/card0/card0-HDMI-A-1/status`
export PULSE_RUNTIME_PATH="/run/user/1000/pulse/"
if [ $HDMI_STATUS = "connected" ]
then
sudo -u zed -E pacmd set-default-sink 0
else
sudo -u zed -E pacmd set-default-sink 1
fi
Where zed
is my username and 1000
is my UID.
chmod
the file to 0755.
Create a udev rule at /etc/udev/rules.d/hdmi_sound.rule
as sudo:
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/hdmi_sound_toggle"
Restart udev rules:
sudo udevadm control --reload
You can test that the udev rules works using udevadm monitor --property
.