Linux:连接外部监视器时如何运行脚本?


9

如何检测Linux中何时连接了外部监视器?

我需要运行各种脚本来设置我的工作区。

当监视器状态更改时,是否有一些聪明的方法来启动脚本?

我正在使用Nvidia显示驱动程序。


骇人听闻的方法是编写一个脚本,xrandr每隔几秒钟查询一次输出变化,并在发现差异的情况下运行该脚本。
new123456 20:01

理想情况下,您可以告诉udev运行脚本。我不希望在支持KMS之前,它可以与nvidia驱动程序一起使用,尽管我没有尝试过。stackoverflow.com/questions/5469828/…–
安迪

Answers:


2

有一组称为read-edid的工具,可以解析扩展的显示标识数据(EDID)。如果这些工具实际上检测到您的外部监视器,则您可能能够定期检查检测结果,并使用输出来启动脚本等。

您没有提到无论X是否运行,是否都需要执行此操作。


是的,我只需要在X中使用它。我还有其他一些工具可以检测显示(例如分散),但是我希望避免编写守护程序:)
Joernsn 2011年

1

我一直在寻找相同的答案:/
我正在使用disper(http://willem.engen.nl/projects/disper)和gconftool来启用/禁用我的第二台显示器以及第二台gnome面板。
分散-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


0

鉴于此,从270.18开始,nVidia二进制驱动程序似乎仍未实现现代XRandR,您可能只需要按照new123456的建议来轮询诸如xrandr改变屏幕尺寸之类的工具。

在我的系统上,我还没有找到一种方法使nVidia正确地宣布xrandr我有两台1280x1024显示器,而不是一台2560x1024的显示器......他们改变分辨率。(它会掩盖我的桌面胶)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.