ElectronJS 应用程序在多个 X11 显示器上有多个显示器

问题描述

我开发了一个 Electronjs 应用,它在启动时会在每个可用的显示器上打开一个 browserWindow。只要所有显示器都配置在同一显示器 (display 0) 上,它就可以正常工作。

如果我将某些监视器配置为 display 0,而将其他一些监视器配置为 display 1,则应用程序看不到后者,而 browserWindow 仅为前者创建。

搜索了文档,但没有找到任何关于如何管理多显示器配置(或者它是否不受支持)的信息。

是否有任何选项(或解决方法)允许应用查看 display 1 监视器?

解决方法

TL;DR:X11 并非设计为以这种方式工作。


this answer over at Unix & Linux SE 所示,每个 X 服务器仅支持一个显示器。因此,您必须生成多个 X 服务器才能获得多个显示——并且明确指定要使用的设备是有问题的,因为我的 X11 配置文件有免责声明,例如“已知有多个 Device 部分是有问题的" 链接到此 bug at X11's bugtracker

此外,环境变量 DISPLAY 确定应用程序将使用哪个 X 显示。在您选择的 shell 中尝试 echo $DISPLAY;它很可能会输出 :0,即显示 0。在运行时,X11 应用程序不能决定它想要与另一个 X 服务器通信,因为它无法确定是否存在另一个 X 服务器(或显示到哪个显示地址它会听)。它只知道(来自DISPLAY)它应该与哪一个交谈。

要说明的另一点是,您不能在不花大力气的情况下跨多个 X 服务器运行相同的桌面会话(请参阅上面链接的答案)。此外,我不认为这在所有桌面环境中都是可行的,例如 KDE Plasma 绑定到一个特定的 X 服务器(以便能够处理它自己的一组监视器配置)。