每次连接 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 时,它可以工作。但它不会自动运行。
我究竟做错了什么?
答案1
您是否尝试过重新加载 udev?它应该会自动识别新规则,但也许没有……
sudo udevadm control --reload-rules ; sudo udevadm trigger
答案2
- 尝试将其重命名为
99-hdmi_sound.rules
(仅限 2 位数字) RUN
&改为使用并省略ACTION
SUBSYSTEM=="drm", RUN+="/lib/udev/hdmi_sound_toggle.sh"
这可能是环境问题(不是同一个用户,或者未声明的
env
变量)。尝试添加一些echo
或touch
命令来跟踪您的脚本。示例:echo `date --rfc-3339='ns'` START >> /home/<your-username>/Desktop/udev_test_log.txt
在开头、结尾、里面各放一个
if
,else
...