Xorg, X11, Wayland? Linux Display Servers And Protocols Explained

Xorg, X11, Wayland? Linux Display Servers And Protocols Explained

Have you ever wondered what X server, Xorg, X11, Wayland, and stuff like that do? Wayland vs. Xorg, what is better? This guide is for you!

You always stumble upon those terms and know they have to do with the graphics, but you’d like to learn more.

What is a Display Server in Linux?

A display server  is a program whose primary task is to coordinate the input and output of its clients to and from the rest of the operating system, the hardware, and each other. The display server communicates with its clients over the display server protocol.

The display server is crucial in any graphical user interface, specifically the windowing system. The basic component of the Graphical User Interface (GUI) sits between the graphical interface and the kernel.

So, thanks to a display server, you can use your computer with GUI. Without it, you would only be restricted to a command-line interface.

It is vital not to confuse the display server with a desktop environment. The desktop environments (Gnome, KDE, Xfce, MATE, etc.) use display servers.

The display server communicates with its clients over the display server protocol. There are three display server protocols available in Linux. X11 and Wayland are two of them. The third, Mir, is beyond the scope of this tutorial.

X Window System, Xorg, X11, Explained

X Window System

X Window System, often referred to merely as X, is old. First originating in 1984, it was the default windowing system for most UNIX-like operating systems, including Linux.

X.Org

X.Org server is the free and open-source implementation of the X Window System display server stewarded by the X.Org Foundation. It is an application that interacts with client applications via the X11 protocol to draw things on display and to send input events like mouse movements, clicks, and keystrokes.

Typically, one would start an X server which will wait for client’s applications to connect to it. However, Xorg is based on a client/server model and thus allows clients to run either locally or remotely on a different machine.

If it’s not obvious, it’s implicit in the design of X11 that the application and the display don’t have to be on the same computer. When X was developed, it was widespread that the X server would run on a workstation, and the users would run applications on a remote computer with more processing power.

X11

X11 is a network protocol. It describes how messages are exchanged between a client (application) and the display (server). These messages typically carry primitive drawing commands like “draw a box,” “write these characters at this position,” “the left mouse button has been clicked,” etc.

But X11 is old, and it was still a pile of hacks sitting on top of a protocol not overhauled for over 30 years. Most of the X Server protocol’s features were not used anymore.

All of the work that X11 did was redelegated to the individual applications and the window manager. And yet all of those old features are still there, weighing down on all of these applications, hurting performance and security.

Wayland, the Next-generation Display Server

Wayland was begun by Kristian Hogsberg, an X.Org developer, as a personal project in 2008. It is a communication protocol that specifies the communication between a display server and its clients.

Wayland is developed as a free and open-source community-driven project to replace the X Window System (also known as X11 or Xorg ) with a modern, secure, and more straightforward windowing system.

In Wayland, the compositor is the display server. The compositor is a window manager that provides applications with an off-screen buffer for each window. The window manager composites the window buffers into an image representing the screen and writes the result into the display memory.

The Wayland protocol lets the compositor send the input events directly to the clients and enables the client to send the damage event directly to the compositor.

As in the X case, when the client receives the event, it updates the user interface (UI). But in the Wayland rendering happens in the client, so the client sends a request to the compositor to indicate the region that was updated.

Wayland’s main advantage over X is that it starts from scratch. One of the main reasons for X’s complexity is that, over the years, its role has changed. As a result, today, X11 acts largely as “a really terrible” communications protocol between the client and the window manager.

Wayland is also superior when it comes to security. With X11, it’s possible to do something known as “keylogging” by allowing any program to exist in the background and read what’s happening with other windows open in the X11 area.

This simply won’t happen with Wayland, as each program works independently.

Conclusion

However, the X Window System still has many advantages over Wayland. Even though Wayland eliminates most of the design flaws of the Xorg, it has its issues. Even though the Wayland project has been up for more than ten years, things are not 100% stable.

As of 2022, most video games and graphics-intensive applications for Linux are still written for X11. Also, many closed-source graphics drivers, such as those for NVIDIA GPUs, do not yet offer complete support for Wayland.

X cannot last and Wayland, in many ways, is an improvement. But for now, the vast majority of native applications were written for Xorg. Until those apps are all ported, Xorg needs to be maintained. Wayland is not very stable yet, compared to Xorg.

8 Comments

  1. Fascinating, but how does one use it? Maybe you can point to as tutorial. I’m trying to get my x-client to display on my x-server running wayland.

  2. But X is available under Wayland as XWayland. That makes it not a big deal to run under Wayland and let X applications run with xwayland ???

  3. I think X is on top of Wayland as a compatibility layer.
    Once people start writing apps to Wayland, XWayland (X over Wayland) will see less and less use.
    It it not?

  4. Came across this article after suddenly seeing errors on my CentOS 8 server when I tried to give a remote support tech access to troubleshoot an issue with backup software. We were trying to use Team Viewer which worked fine before I migrated from CentOS 8 to CentOS 8 Stream. Now I get an error when trying to launch a connection “Wayland detected, incoming connection will fail” or something to that effect. Now I need to search for an alternative remote support program or find a workaround. Anyone know if Wayland can be temporarily disabled? Since it seems to be a new feature of CentOS 8 Stream I don’t want to try to completely uninstall it.

  5. The ability to insert a network connection between the application and the display server is IMMENSELY important. It allows me to run a full linux desktop remotely through SSH from tiny machines that usually bog down with running a full desktop as well as their industrial or scientific applications. X11 allows all that rendering power to be done remotely on a desktop, at the resolution of the desktop! relegating all that to a tiny machine running a VNC application on top of the machines main applications will ruin their usability and performance!!!! I sincerely hope that Wayland becomes only an alternative for some users and lazy developers, and that X11 will ALWAYS be available in the future.

    • Most usecases do not see users SSHing to external graphical sessions. In fact, I would argue that the most common usecase today is local machine processing and rendering. This makes Wayland a more sensible choice over Xorg. And even then, suppose that you do need to connect to a remote graphical environment – Wayland is still able to do so, just in a less elegant way compared to Xorg which has the feature integrated by design. This is perfectly fine as most users will not see much use out of it.

      • I agree with Joe that the remote X11 capability is important as there are some of us old time Unix/Linux users that still use that functionality. I realize most linux users probably don’t even know it exists but it’s sure handy to ssh -X to a server and launch any X app using your local display. I’ve been using this feature since about 1989 and hate to see it go away.

Leave a Reply

Your email address will not be published.