Linux 当HDMI插入时自动检测

Linux 当HDMI插入时自动检测,linux,bash,audio,hdmi,Linux,Bash,Audio,Hdmi,有时我通过HDMI将笔记本电脑连接到电视上,以获得更大的屏幕。不幸的是,它不会自动切换音频输出,所以每次我插上或拔下它时,我都必须自己这样做,用这两种方法中的任何一种,让声音从我想要的地方发出 pacmd设置卡配置文件0输出:hdmi-stereo-extra1 pacmd设置卡配置文件0输出:模拟立体声+输入:模拟立体声 有没有办法检测HDMI是否已插入,或者至少是否发生了更改?谢谢 Linux Mint 18.2 Xfce x64,Asus P756U我使用两种不同的方法来确定HDMI是

有时我通过HDMI将笔记本电脑连接到电视上,以获得更大的屏幕。不幸的是,它不会自动切换音频输出,所以每次我插上或拔下它时,我都必须自己这样做,用这两种方法中的任何一种,让声音从我想要的地方发出

  • pacmd设置卡配置文件0输出:hdmi-stereo-extra1
  • pacmd设置卡配置文件0输出:模拟立体声+输入:模拟立体声
有没有办法检测HDMI是否已插入,或者至少是否发生了更改?谢谢


Linux Mint 18.2 Xfce x64,Asus P756U我使用两种不同的方法来确定HDMI是否已插入:

a) 使用xrandr
一个简单的xrandr将报告您的hdmi显示器已连接 要在脚本中使用此选项,可以执行以下操作:

hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print $1}')
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
以上内容将返回连接的hdmi端口(即hdmi-1),或者如果未连接hdmi,则不返回任何内容

然后你可以使用

[[ ! -z "$hdmi_active" ]] && do_your_stuff 
如果未设置
$hdmi_active
,则
z
变为
true
<代码>!z还原此行为,如果hdmi_active有一个值=hdmi已连接,则返回
true

b) 使用HDMI状态文件:

$ cat /sys/class/drm/card0/*HDMI*/status
这将返回hdmi端口的已连接/已断开连接:

$ cat /sys/class/drm/card0/*HDMI*/status
disconnected
disconnected
然后,您可以使用以下方法对该结果进行测试:

hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print $1}')
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

本Q与StackOverflow定义的编程无关。它可能更适合于或。使用Q底部的
标志
链接,让主持人移动它。请不要在两个不同的网站上发布相同的Q。在这里发布更多Qs之前,请阅读、、和。Good LuckStack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。