如何在 Linux 上实现“分屏”功能(用于游戏)

如何在 Linux 上实现“分屏”功能(用于游戏)

我正在尝试模拟通用分屏,仅适用于 Windows,但在 Linux(Fedora,最好是 Gnome/XOrg)上,我发现了很多关于xrandrXephyrxinerama,但是虽然我发现的所有教程听起来都很像我需要的,但我无法在一个窗口中并排运行一个应用程序的两个实例(在我的情况下是 Terraria)。

我发现最接近的

Xephyr -br -ac -noreset -screen 1920x600 :1 &
Xephyr -br -ac -noreset -screen 1920x600 :2 &
DISPLAY=:1 <command> &
DISPLAY=:2 <command> &

..这至少很难使用,因为你有两个带有各自装饰的独立窗口。

有没有一种方法(无需安装平铺窗口管理器,这将是我的下一个方法)“在一个窗口中运行应用程序,该窗口以静态预定义的方式包含不同虚拟显示的输出”?

或者用不太技术性的话来说:有没有办法在 Linux 上以并排方式运行不支持“并排”操作的应用程序?比如通用分屏或者tModLoader - 分屏(但对我来说不起作用)

答案1

这是一个脚本的示例存储库,该脚本旨在像通用分屏或 Nucleus 一样运行。它使用类似工具firejail(用于处理每个实例的输入)和嵌套weston会话(用于窗口分离,并且与 Xephyr 不同,它支持硬件加速)以及zenity用于 ui+处理游戏窗口。目前它仅支持游戏控制器和 2 个玩家:

https://github.com/AhmedKJ/Co-op-on-Linux

# Example :
./Co-Op-On-linux.sh --quickrun 1280x720 /home/user/game/thegame

即使它不是您正在寻找的,它也应该是构建自己的一个好起点。基本思路是您至少需要:

  • 处理窗口大小、定位和合成的程序,比如 Zephyr 或 Weston
  • 就像是火狱抓取 P1/P2 输入并将它们重定向到任一窗口。否则,X11 通常会将所有输入定向到焦点窗口。
  • 以及支持运行多个实例的软件/游戏,涉及 DRM/反作弊/文件访问

相关内容