当我合上笔记本电脑的盖子时,我使用脚本/etc/acpi
来关闭屏幕 ( )。xset dpms force off
现在我希望它在连接外部显示器时有不同的行为(将亮度设置为零)。我知道我可以测试它是否与 连接xrandr
,但该脚本是由 root 运行的,并且 xrandr 依赖于某个 X-session。有没有办法让 root 测试显示器是否已连接,而不管 X 会话如何?我正在使用 Arch Linux。
答案1
方法#1 - edid 解码
您可以用来edid-decode
查看连接了哪些监视器。这是来自我的 Ubuntu 16.04 系统,但这也适用于 Fedora 28 和 CentOS 7.x。
笔记:这个特定的系统有两个视频端口,我使用的是 VGA 端口。
这里显示器已插入:
$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: DEL Model a071 Serial Number 844247885
Manufacturer: @@@ Model 0 Serial Number 0
这是当我拔掉 VGA 显示器时的情况:
$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: @@@ Model 0 Serial Number 0
Manufacturer: @@@ Model 0 Serial Number 0
在这里它被重新插入:
$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: DEL Model a071 Serial Number 844247885
Manufacturer: @@@ Model 0 Serial Number 0
方法#2 - cat sysfs
如果您仔细查看一下/sys
您拥有的显示端口,则会在此处列出/sys/class/drm
。
$ ls /sys/class/drm
card0 card0-DP-1 card0-HDMI-A-1 controlD64 renderD128 version
显示器的显示端口为card0-DP-1
(VGA) 和card0-HDMI-A-1
(HDMI)。如果您查看每个目录,就会发现有一个名为status
.如果您使用cat
此文件,您可以看到端口的状态以及监视器是否已连接。
与上面相同的测试,插入:
$ cat /sys/class/drm/card0-DP-1/status
connected
拔掉插头:
$ cat /sys/class/drm/card0-DP-1/status
disconnected