如何检测 Linux 中外接显示器的连接情况?
我需要运行各种脚本来设置我的工作区。
当监视状态改变时,是否有一些巧妙的方法可以启动脚本?
我正在使用 Nvidia 显示驱动程序。
答案1
有一套工具叫做已读可以解析扩展显示标识数据 (EDID)。如果这些工具确实检测到了您的外接显示器,您可能能够定期检查检测情况并使用输出来启动脚本等。
但是您没有提到无论 X 是否正在运行是否都需要执行此操作。
答案2
您应该使用udev
事件......可能的规则可能如下所示:
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/ninette/.Xauthority", RUN+="/usr/local/bin/0x_hw_hotplug_monitor.sh"
(来源https://bbs.archlinux.org/viewtopic.php?pid=1329375#p1329375)
答案3
我正在寻找相同的答案:/
我正在使用 disper (http://willem.engen.nl/projects/disper) 和 gconftool 来启用/禁用我的第二台显示器以及其上的第二个 gnome 面板。disper
-l 列出了所有连接的显示器,因此您可以将其作为最后的手段进行轮询。
# only primary display
disper -s
gconftool-2 --type int --set /apps/panel/toplevels/panel_1/screen -- -1
# dual display (nvidia twinview)
disper -e
gconftool-2 --type int --set /apps/panel/toplevels/panel_1/screen 0
killall gnome-panel
答案4
鉴于截至 270.18,nVidia 二进制驱动程序似乎仍然没有实现现代 XRandR,您可能只需要按照 new123456 的建议轮询类似xrandr
屏幕尺寸变化的工具。
在我的系统上,我还没有找到一种方法让 nVidia 正确地宣布xrandr
我有两个 1280x1024 显示器,而不是一个 2560x1024 显示器……正如您所猜测的,当我禁止他们更改分辨率时,全屏游戏中心就会出现在两个显示器上。(这会弄乱我的桌面便签)