A beneficio delle persone che si imbattono in questa domanda: la soluzione di Salem ha funzionato quasi per me nel 13.04, ho finito per raccogliere frammenti da tutto il web, penso che il patto per me fosse la mancanza della variabile d'ambiente PULSE_SERVER
Ecco la mia soluzione completa, che sostanzialmente ripete la soluzione di Salem con i pochi pezzi mancanti. L'ho anche rifatto come uno script di shell (nonostante il mio amore per Python) perché all'inizio avevo paura che il mio script Python si imbattesse in problemi relativi al percorso di importazione:
(uguale alla risposta di Salem) Crea un file /etc/udev/rules.d/hdmi_sound.rules
come root con il contenuto:
SUBSYSTEM=="drm", ACTION=="change", RUN+="/usr/local/bin/hdmi_sound_toggle"
Crea un file /usr/local/bin/hdmi_sound_toggle
come root con il contenuto:
#!/bin/sh
USER_NAME=`who | grep "(:0)" | cut -f 1 -d ' '`
USER_ID=`id -u $USER_NAME`
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
export PULSE_SERVER="unix:/run/user/"$USER_ID"/pulse/native"
if [ $HDMI_STATUS = "connected" ]
then
sudo -u $USER_NAME pactl --server $PULSE_SERVER set-card-profile 0 output:hdmi-stereo+input:analog-stereo
else
sudo -u $USER_NAME pactl --server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo
fi
Quindi renderlo eseguibile con chmod 0755 /usr/local/bin/hdmi_sound_toggle
Ho provato a rendere questo script il più generico possibile, ma potresti ancora aver bisogno di cambiare alcune linee, come il percorso del file HDMI_STATUS o i profili utilizzati. Puoi visualizzare un elenco di profili eseguendo pactl list cards
e guardando in Profili.
Nota che lo script non è riuscito per me quando ho rimosso la parola chiave "export" durante l'impostazione di PULSE_SERVER, penso che pactl stia cercando la variabile env
Non dimenticare di ricaricare le tue regole udev: sudo udevadm control --reload-rules
Aggiorna questo script è aggiornato per 14.04. Prima di allora, avresti usato USER_NAME invece di USER_ID ovunque