Sty 232014
 

Najczęściej podłączam laptopa do telewizora, aby coś na nim wyświetlić. Chcę wtedy aby obraz i dźwięk szły po kablu HDMI. O ile z obrazem nie ma problemu większego, bo jest automatycznie przełączany, to dźwięk trzeba ustawić samemu.
Jako, że Linuksy mnie rozleniwiły, wolę by robiło sie to samo. Nie jest to skomplikowane.

Tworzymy wykonywalny plik /usr/local/bin/toggle_hdmi_sound z zawartością:

#!/bin/sh
 
USER=`who | grep " :0 " | cut -f1 -d' '`
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
 
export PULSE_SERVER="`pactl info | grep -oE 'unix:.+'`"
 
if [ $HDMI_STATUS = "connected" ]
then
    su $USER -c"pactl --server $PULSE_SERVER set-card-profile 0 output:hdmi-stereo+input:analog-stereo" 
else
    su $USER -c"pactl --server $PULSE_SERVER set-card-profile 0 output:analog-stereo+input:analog-stereo" 
fi

Następnie tworzymy plik /etc/udev/rules.d/hdmi_sound.rules – regułę udev do uruchamiania powyższego polecenia:

KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0",  RUN+="/usr/local/bin/hdmi_sound_toggle"

Na koniec wystarczy przeładowac reguły udev:

udevadm control --reload-rules