有时我通过HDMI将笔记本电脑连接到电视机以获得更大的屏幕。不幸的是,它不会自动切换音频输出,因此我每次插上或拔出它时都必须自己动手,这两个中的任何一个都能让声音来自我希望它来自的地方。
pacmd set-card-profile 0 output:hdmi-stereo-extra1
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
有没有办法检测HDMI是否插入,或者至少是否发生了变化?谢谢!
Linux Mint 18.2 Xfce x64,华硕P756U
答案 0 :(得分:4)
我使用两种不同的方法来确定是否插入了HDMI:
a)使用xrandr
一个简单的xrandr会将你的hdmi监视器报告为已连接
要在脚本中使用它,您可以执行以下操作:
hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print $1}')
上面将返回连接的hdmi端口(即HDMI-1),如果没有连接HDMI,将返回任何内容。
然后您可以使用类似
的内容[[ ! -z "$hdmi_active" ]] && do_your_stuff
如果未设置z
,则 true
变为$hdmi_active
。如果hdmi_active的值= hdmi已连接,! z
将恢复此行为并返回true
b)使用HDMI状态文件:
$ cat /sys/class/drm/card0/*HDMI*/status
返回hdmi端口的连接/断开连接:
$ cat /sys/class/drm/card0/*HDMI*/status
disconnected
disconnected
然后,您可以使用以下内容对该结果进行测试:
hdmi_active="$(cat /sys/class/drm/card0/*HDMI*/status |grep '^connected')" #Using ^ we avoind matching disconnected from the regex match, since ^ in an anchor to the beginning of the line
[[ ! -z "$hdmi_active" ]] && do_your_stuff #hdmi is active