我想列出使用 python3 的 Ubuntu/Debian 中是否可以使用多显示器(如果显示器通过 VGA 或 HDMI 连接到 ubuntu),或者当外部显示器连接时检测。
如果大家有办法的话,我不知道该怎么做,请帮助我。
答案1
你应该能够解析/var/log/Xorg.0.log
显示部分以EDID for output
[ 11.189] (II) modeset(0): EDID for output eDP-1
[ 11.191] (II) modeset(0): EDID for output DP-1
[ 11.206] (II) modeset(0): EDID for output HDMI-1
[ 11.206] (II) modeset(0): EDID for output DP-2
[ 11.218] (II) modeset(0): EDID for output HDMI-2
[ 11.231] (II) modeset(0): EDID for output DP-1-1
[ 11.244] (II) modeset(0): EDID for output DP-1-2
[ 11.244] (II) modeset(0): EDID for output DP-1-3
在此示例中,eDP-1 和 DP-1-1 是笔记本电脑显示器,DP-1 和 DP-1-2 是显示端口上的一个显示器,DP-2 和 DP-1-3 是另一个显示器。每个 EDID 条目之间的输出是详细的显示器信息:
[ 11.231] (II) modeset(0): Manufacturer: DEL Model: a07b Serial#: XXXXXXXX
[ 11.231] (II) modeset(0): Year: 2013 Week: 27
[ 11.231] (II) modeset(0): EDID Version: 1.4
[ 11.231] (II) modeset(0): Digital Display Input
[ 11.231] (II) modeset(0): 8 bits per channel
[ 11.231] (II) modeset(0): Digital interface is DisplayPort
另一个例子:
[ 6.893] (II) RADEON(0): EDID for output DisplayPort-0
[ 6.952] (II) RADEON(0): EDID for output HDMI-0
[ 6.983] (II) RADEON(0): EDID for output DVI-0
[ 6.998] (II) RADEON(0): EDID for output DVI-1
如您所见,命名约定并不一致,因为我的笔记本电脑每个端口都有一个 EDID,每个屏幕都有一个 EDID,而我的台式机没有。
答案2
您可以查找 /proc/fb 系统文件。这是一个帧缓冲区 proc 系统文件,它概括了您的实际视频适配器。
在 python3 中,只需打开此系统文件并读取结果:
fd = open("/proc/fb", "r")
printf(fd.readline())
假设您只连接了一个适配器:
$ cat /proc/fb
结果如下:
0 svgadrmfb
这就是您将获得的结果!