我已阅读以下问题的答案这个问题但我没有 ACPI,该/sys/class/drm/card0-socket/status
方法不起作用,并且该xrandr
方法会阻塞我的 CPU。udevadm monitor
插入(拔出)显示器时不显示任何内容。
我有一台 2013 年左右的 Lenovo ThinkPad w530,配有 nVidia Quadro 等。我正在使用nouveau
驱动程序运行 Lubuntu 18.04。显示器是 27 英寸飞利浦 271S。我使用的是 VGA 电缆。
如何检测显示器的插入(拔出)情况?
答案1
我采取了轮询外部屏幕 EDID 的方式。我安装了 read-edid 包,在 visudo 中添加了一行
%sudo ALL=(ALL:ALL) NOPASSWD:/usr/bin/get-edid
允许无密码 get-edid 并使用以下循环:
#!/bin/bash # edid_based_automatic_display_loop.sh 导出NEW_CONNECTION=1 导出NEW_DISCONNECTION=1 尽管 : 做 睡觉 1 sudo get-edid 2>/dev/null|parse-edid 2>/dev/null|grep "PHL 271S7Q">/dev/null _DISCONNECTED=`回显 $?` # 回显“已断开$_DISCONNECTED” 如果 [ $_DISCONNECTED = "0" -a $NEW_CONNECTION = "1" ] ;然后 导出NEW_DISCONNECTION=1; 导出NEW_CONNECTION=0; bash /home/bruno/.screenlayout/only_external.sh elif [ $_DISCONNECTED = "1" -a $NEW_DISCONNECTION = "1" ] ;然后 导出NEW_DISCONNECTION = 0; 导出NEW_CONNECTION=1; bash /home/bruno/.screenlayout/only_laptop.sh 菲 完毕