自动检测何时插入 HDMI
Automatically detect when HDMI is plugged in
有时我会通过 HDMI 将笔记本电脑连接到电视以获得更大的屏幕。不幸的是,它不会自动切换音频输出,所以我每次插入或拔出它时都必须自己做,用这两个中的任何一个,让声音来自我想要的地方。
pacmd set-card-profile 0 output:hdmi-stereo-extra1
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
有什么方法可以检测 HDMI 是否已插入,或者至少是否发生了变化?谢谢!
Linux 薄荷 18.2 Xfce x64,华硕 P756U
我使用两种不同的方法来确定是否插入了 HDMI:
a) 使用 xrandr
一个简单的 xrandr 将报告您的 hdmi 监视器已连接
要在脚本中使用它,您可以执行以下操作:
hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print }')
以上将 return 连接的 hdmi 端口(即 HDMI-1),或者如果没有连接 HDMI,则 return 什么都没有。
然后您可以使用
[[ ! -z "$hdmi_active" ]] && do_your_stuff
如果未设置 $hdmi_active
,z
将变为 true
。 ! z
恢复此行为并且 returns true
如果 hdmi_active 有一个值 = hdmi 已连接
b) 使用 HDMI 状态文件:
$ cat /sys/class/drm/card0/*HDMI*/status
此return已连接/断开您的 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
有时我会通过 HDMI 将笔记本电脑连接到电视以获得更大的屏幕。不幸的是,它不会自动切换音频输出,所以我每次插入或拔出它时都必须自己做,用这两个中的任何一个,让声音来自我想要的地方。
pacmd set-card-profile 0 output:hdmi-stereo-extra1
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
有什么方法可以检测 HDMI 是否已插入,或者至少是否发生了变化?谢谢!
Linux 薄荷 18.2 Xfce x64,华硕 P756U
我使用两种不同的方法来确定是否插入了 HDMI:
a) 使用 xrandr
一个简单的 xrandr 将报告您的 hdmi 监视器已连接
要在脚本中使用它,您可以执行以下操作:
hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print }')
以上将 return 连接的 hdmi 端口(即 HDMI-1),或者如果没有连接 HDMI,则 return 什么都没有。
然后您可以使用
[[ ! -z "$hdmi_active" ]] && do_your_stuff
如果未设置 $hdmi_active
,z
将变为 true
。 ! z
恢复此行为并且 returns true
如果 hdmi_active 有一个值 = hdmi 已连接
b) 使用 HDMI 状态文件:
$ cat /sys/class/drm/card0/*HDMI*/status
此return已连接/断开您的 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