如何在 Wayland 顶部的容器中运行 X 服务器而不产生 Xwayland 开销?

如何在 Wayland 顶部的容器中运行 X 服务器而不产生 Xwayland 开销?

有一个类似的问题这里但场景和目标不同。作者关心“just make it work”,而我也关心性能和效率。

我想做的是拥有一个主 GUI,并在该应用程序/程序之上以容器(例如 Docker)的形式。想想类似的事情Qubes操作系统

主要的 GUI 是 Wayland,它可以控制任务栏、开始菜单、窗口边框,但仅此而已(基本上是一个简单的窗口管理器,如 IceWM)。最重要的是,我将使用简化的 Linux 内核 + X 服务器 + 应用程序代码来运行容器。因此,将 X 应用程序隔离在主 Wayland 系统之上。

这里的问题是,我不太明白如何在不增加 Xwayland 开销的情况下运行此类容器,就像上面提到的答案所解释的那样。

那么,X服务器是否可以直接运行在隔离的容器中,而不依赖于Xwayland呢?

答案1

我的问题是我试图拥有一个基于 Wayland 的主 GUI/桌面,而 X 应用程序则隔离在容器中。是否有一种方法可以在容器内运行这些 X 应用程序而无需 Xwayland 开销?

引用的评论很混乱。请仔细研究紧随其后的回复,以消除这种困惑。

无论如何,您都需要一个 X 服务器。


如果您想运行 X 应用程序,并且您拥有 Wayland 显示服务器,那么您需要需要翻译的 Xwayland。

如果您想避免开销并充分利用 Wayland 的性能 - 那么您需要支持本机 Wayland 容器的容器。就像在 Wayland 下运行 Flatpak 应用程序一样。 (据我所知,如果您在以下环境下运行 Flatpak 应用程序X桌面,它只是放弃并允许完全不安全的 X 访问)。

答案2

X 是网络透明的(至少原则上如此),因此您可以在任何您喜欢的地方运行 X 服务器,而不是在包含应用程序的所有容器中运行。如果您在附加容器(通过网络连接到应用程序容器)中、在您的主机上、甚至在用作 X 终端的单独计算机上运行 X 服务器,都没有关系。

您所要做的就是配置 X 服务器以接受联网客户端,并将DISPLAY所有具有应用程序的容器设置为正确的地址。您可能还需要在.Xauthory等中设置更正的凭据。

然而,更现代的 GUI 应用程序习惯于在运行它们的同一台机器上拥有加速图形硬件,并且经常广泛使用它来获得漂亮的效果。这可能无法在网络上工作,或者它可以工作但可能不够快或响应不够。

在这种情况下,我会考虑设置某种 VNC 解决方案虚拟GL

相关内容