There's a similar question here but the scenario and objectives are different. The author cares about "just making it work", while I do also care about performance and efficiency.

What I'm trying to do is having a main GUI and on top of that applications/programs in the form of containers (such as Docker). Think of something like QubesOS.

The main GUI is Wayland and it'd control the taskbar, start menu, window borders but nothing else (basically a simple window manager like IceWM). On top of that I'd run containers with a streamlined Linux kernel + X server + app code. So isolated X applications on top of the main Wayland system.

The issue here is that I don't quite understand how to run such containers without also adding the overhead of Xwayland, like the answer mentioned above explains.

So, can an X server be directly run in the isolated container instead of relying on Xwayland?


My issue is I'm trying to have a main Wayland based gui/desktop while X apps are isolated in containers. Isn't there a way to run those X apps inside containers without the Xwayland overhead?

The quoted comment is confused. Please carefully study the reply which immediately follows it, and clears up this confusion.

You need an X server in any case.

If you want to run an X app, and what you have is a Wayland display server, you need an Xwayland to translate.

If you want to avoid overhead and take full advantage of Wayland's performance - then you need containers that support native Wayland containers. Like running Flatpak apps under Wayland. (AFAIK if you run Flatpak apps under an X desktop, it just gives up and allows full insecure X access).


X is network transparent (at least in principle), so you could run the X server anywhere it pleases you instead of in all containers that contain an app. It doesn't matter if you run the X server in an additional container (connected to the app containers via network), on your host, or even on a separate computer you use as X terminal.

All you have to do is to configure the X server to accept networked clients, and set DISPLAY in all containers having apps to the correct address. You may also have to set up corrected credentials in .Xauthory etc.

However, more modern GUI applications are used to having accelerated graphics hardware on the same machine where they are running, and often make extensive use of it for pretty effects. This may not work over the network, or it may work but may not be fast or responsive enough.

In that case, I'd think about setting up some sort of VNC solution with VirtualGL.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.