Kat*_*ers 1 linux audio bash hdmi
有时我通过HDMI将笔记本电脑连接到电视机以获得更大的屏幕.不幸的是,它不会自动切换音频输出,因此我每次插上或拔出它时都要自己动手,用这两个中的任何一个,让声音来自我希望它来自的地方.
pacmd set-card-profile 0 output:hdmi-stereo-extra1pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo有没有办法检测HDMI是否插入,或者至少是否发生了变化?谢谢!
Linux Mint 18.2 Xfce x64,华硕P756U
我使用两种不同的方法来确定是否插入了HDMI:
a)使用xrandr
一个简单的xrandr会将你的hdmi监视器报告为已连接要在脚本中使用它,你可以执行以下操作:
hdmi_active=$(xrandr |grep ' connected' |grep 'HDMI' |awk '{print $1}')
Run Code Online (Sandbox Code Playgroud)
如果没有连接HDMI,上方将返回连接的hdmi端口(即HDMI-1)或将不返回任何内容.
然后你可以使用类似的东西
[[ ! -z "$hdmi_active" ]] && do_your_stuff
Run Code Online (Sandbox Code Playgroud)
ztrue如果$hdmi_active没有设置就变成了.如果hdmi_active的值= hdmi已连接,则! z还原此行为并返回true
b)使用HDMI状态文件:
$ cat /sys/class/drm/card0/*HDMI*/status
Run Code Online (Sandbox Code Playgroud)
这将为您的hdmi端口返回已连接/已断开连接:
$ cat /sys/class/drm/card0/*HDMI*/status
disconnected
disconnected
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下内容测试该结果:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5501 次 |
| 最近记录: |