Я раздражался, что каждый раз я соединяю свой HDMI-кабель, я должен вручную изменить звуковые настройки.
Я начал изучать правила udev, что я выпустил, эти два файла:
/etc/udev/rules.d/99-hdmi_sound.rules
SUBSYSTEM=="drm", RUN+="/lib/udev/hdmi_sound_toggle.sh"
/lib/udev/hdmi_sound_toggle.sh
:
#!/bin/bash
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
if [ $HDMI_STATUS = "connected" ]
then
sudo -u root pactl set-card-profile 0 output:hdmi-stereo
else
sudo -u root pactl set-card-profile 0 output:analog-stereo
fi
Когда я выполняю hdmi_sound_toggle.sh в терминале, он работает. Это не автоматически работает, все же.
Что я делаю неправильно?
Вы попытались перезагрузить udev? Это должно распознать новые правила автоматически, но возможно это не сделало...
sudo udevadm control --reload-rules ; sudo udevadm trigger
99-hdmi_sound.rules
(только с 2 цифрами) & используйте RUN
вместо этого и опустите ACTION
SUBSYSTEM=="drm", RUN+="/lib/udev/hdmi_sound_toggle.sh"
, Это могла быть проблема среды (не тот же пользователь, или необъявленный env
переменные). Попытайтесь добавить [приблизительно 116] или touch
команды для трассировки сценария. Пример:
echo `date --rfc-3339='ns'` START >> /home/<your-username>/Desktop/udev_test_log.txt
Помещенный в начале, конце, в if
, else
...