root可以测试显示器是否连接吗?

root可以测试显示器是否连接吗?

当我合上笔记本电脑的盖子时,我使用脚本/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

参考

相关内容