模拟额外显示器

模拟额外显示器

我有一个单显示器系统,我想测试为多显示器设计的 xmonad 配置。有没有办法使用 Xephyr 之类的工具模拟一个有 3 个显示器的系统来测试我的配置?

答案1

我使用 Xephyr 和 Xdmx 找到了解决方案

首先创建 Xephyr 显示器

Xephyr -screen 1920x1080 -ac :1
Xephyr -screen 1920x1080 -ac :2
Xephyr -screen 1920x1080 -ac :3

这将创建 3 个 1920x1080 的窗口,每个窗口将充当显示器

接下来将 xinerama 层添加到这些虚拟显示器上

Xdmx +xinerama -xinput local -display :1 -display :2 -display :3 -ac :4

接下来创建一个新的终端并启动你的窗口管理器或应用程序,如下所示

DISPLAY=:4.0
xmonad

或者如果您只是想测试应用程序的 xinerama 支持,而不是xmonad您可以运行xtermthunar

答案2

您只需要一个 Xephyr 实例。

Xephyr +xinerama -screen 1920x1080 -screen 1920x1080 -screen 1920x1080 -ac :1

如果需要 RANDR 扩展,请添加+extension RANDR参数。

Xephyr +extension RANDR +xinerama -screen 1920x1080 -screen 1920x1080 -screen 1920x1080 -ac :1

答案3

这对我有用:

Xephyr +xinerama +extension RANDR -screen 800x600+0+0 -screen 800x600+800+0 -ac :1

虽然DISPLAY=:1 xrandr仍然只返回一个屏幕,但我的 C 应用程序调用XineramaQueryScreens(dpy, &new_num_mons);给了我正确的几何形状。

答案4

虽然这回答了问题,但这并不是一个全面的解决方案。这些解决方案将三个屏幕放在水平行中(至少根据 xinerama ( xdpyinfo -ext XINERAMA -display :1) 的说法,实际的窗口位置将由窗口管理器负责)。如果您想将屏幕放置在其他位置,这将无济于事。

相关内容