【问题标题】:ElectronJS app multiple monitors on multiple X11 displaysElectronJS 在多个 X11 显示器上应用多个监视器
【发布时间】:2021-04-26 23:48:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请澄清:您说的是 Linux,如果是,您是指 X11 显示中的“显示”吗?如果不是,你的物理显示器和软件显示器的区别在哪里?
  • 是的,我说的是 X11 Linux 显示配置。

标签: electron x11


【解决方案1】:

TL;DR: X11 不是为这种方式设计的。


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

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

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

【讨论】:

  • 谢谢您的解释;如果我理解正确,在 DISPLAY 0 上运行的应用程序无法知道其他 DISPLAY 的存在。对吗?
  • 这就是第二段所说的,是的。此外,即使是桌面环境也无法确定。
猜你喜欢
  • 2019-01-19
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多