X11

如何在沒有 acpi、xrandr、/sys 和 udev 的情況下檢測顯示器何時插入或拔出?

  • June 29, 2019

我已經閱讀了這個問題的答案,但我沒有 ACPI,該/sys/class/drm/card0-socket/status方法不起作用並且該xrandr方法阻塞了我的 CPU。udevadm monitor(拔下)插入顯示器時不顯示任何內容。

我有一個大約 2013 年的聯想 ThinkPad w530 和 nVidia quadro 的東西。我正在與nouveau驅動程序一起執行 Lubuntu 18.04。顯示器是 27 英寸飛利浦 271S。我使用的是 VGA 電纜。

如何檢測監視器(拔出)插入?

我求助於輪詢外部螢幕 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=`回顯 $?`
# echo "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
是
完畢

引用自:https://unix.stackexchange.com/questions/481728