Resolvido.
Eu tive que usar pacmd set-default-sink em vez de pactl set-card-profile . Para poder usá-lo em um script, você deve exportar PULSE_RUNTIME_PATH também. Crie /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
Onde zed é meu nome de usuário e 1000 é meu UID.
chmod o arquivo para 0755.
Crie uma regra do udev em /etc/udev/rules.d/hdmi_sound.rule como sudo:
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/hdmi_sound_toggle"
Reinicie as regras do udev:
sudo udevadm control --reload
Você pode testar se as regras do udev funcionam usando udevadm monitor --property .