我有 2 个通过 DisplayPort* 插入的显示器,名为DP1
和DP2
。
我将它们配置为彼此相邻,如下所示:
xrandr --output DP1 --pos 0x0 --output DP2 --pos 3840x0
问题:有时,启动时会以相反的顺序检测到它们,因此左侧显示器会被标记DP2
,而右侧显示器则会被DP1
标记。这是随机的,因此每次启动后我都需要检查并最终重新配置布局。
因此,我正在寻找一种方法来可靠地检测哪个显示器是哪个,在重新启动时。例如,有没有办法确定哪个端口 ID 对应于哪个分配的监视器名称?
我在阿奇。 FWIW,Windows 10 正确记住了顺序。
*如果重要的话,我正在使用通过 Thunderbolt 连接的戴尔坞站。
答案1
您也许可以将 EDID 块用于显示器。例如,以所需的方式设置系统,然后运行
$ xrandr --prop | grep -A2 EDID > desired-setup.txt
此后,每次设置完成后,您都会运行类似的
$ xrandr --prop | grep -A2 EDID > current-setup.txt
然后,如果current-setup.txt
与 相同desired-setup.txt
,则一切正常,否则您将需要使用交换的 DP1 和 DP2 进行替代设置。
此方案仅在显示器的 EDID 报告具有独特性的情况下才有效,其中前 18 个字节包括制造商 ID、产品代码和序列号(字节 12-15)以及制造周和年份。当然,它也只适用于特定的显示器。 (如果您需要更大的灵活性,则需要更高级的决策逻辑和 EDID 捕获“库”)
输出xrandr
以 16 字节的十六进制行显示 EDID 字节,这就是为什么您可能需要-A2
获取每个显示器的前 32 个字节。 (参见例如维基百科有关 EDID 块的描述)。