插入HDMI时自动检测

时间:2017-12-24 11:52:03

标签: linux bash audio hdmi

有时我通过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

1 个答案:

答案 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