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 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 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.
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.