Os scripts do Udev são executados como root, mas você também precisa saber qual gerenciador de exibição está usando.
Esses scripts devem funcionar, mas você deve autorizar o gerenciador de exibição a fazê-lo.
Encontre o DM que você está usando:
pgrep -a Xorg
Veja a opção -auth, ele mostrará o gerenciador de exibição. Poderia ser sddm ou lightdm nos últimos lançamentos do Ubuntu.
Esta linha deve ser exportada como variável XAUTHORITY, assim:
ls /car/run/sddm*
por exemplo, esta pode ser uma saída válida:
/var/lib/mdm/:0.Xauth (Isso será usado pelo script)
É assim que o seu script deve ser:
#!/bin/bash
export DISPLAY=:0
export XAUTHORITY='ls /var/run/sddm*'
HDMI_STATUS="$(cat /sys/class/drm/card0-HDMI-A-1/status)"
USER='whoami'
export XAUTHORITY=/home/$USER/.Xauthority
export DISPLAY=:0
if [ "$HDMI_STATUS" = connected ];
then
sudo -u $USER pactl set-card-profile 0 output:hdmi-stereo+input:analog-stereo
else
sudo -u $USER pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
fi
exit 0
Isso permitirá que seu gerenciador de exibição altere a saída HDMI.
Siga as instruções para criar os arquivos de regras do udev e tornar o script executável.