如何使用 python 在 ubuntu 中检测/列出多重显示?

如何使用 python 在 ubuntu 中检测/列出多重显示?

我想列出使用 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

这就是您将获得的结果!

相关内容