What Is Wayland?
A Faster and More Secure Windowing System: Wayland vs. X11Wayland serves as a cutting-edge alternative to the aging X11 standard, acting as a windowing system for Linux distributions. While X11's popularity has dwindled, the adoption of Wayland has been sluggish due to the need for application modifications. However, it offers enhanced security, making it an attractive choice over X11. Let's delve into the details of these two systems.
Wayland is a contemporary alternative to X11, the longstanding windowing system on Linux. It functions as a communication protocol, facilitating the exchange of messages between an X Window display server and client applications. The Wayland project offers essential client and server libraries that empower applications to utilize this protocol. Initiated in 2008, the Wayland project was pioneered by a developer from Red Hat.
The Many Names of X
The X Window System, initially introduced in 1984 by the Massachusetts Institute of Technology for the Unix operating system, provides a framework for applications to create user interfaces utilizing its extensive functionality.
The X Window System reached version 11 in 1987 and was dubbed X11. It is currently managed by the X.Org Foundation and is still on version 11, although there have been multiple smaller releases since 1987. At present, the stable version is X11R7.7. The letter "X" in the name does not represent the Roman numeral for ten, nor does it imply any additional meaning such as "Xtra" or "Xtended." When they began the new project, they simply moved on to the next letter in the alphabet since the previous windowing system was called "W" for "windows."
You’ll hear the X Window System referred to as “X”, “X11”, “Xorg”, “X Windows”, and the “X Window System.”
How X11 Works
The X Window System takes care of handling low-level events and primitives such as mouse interaction, window drawing, and window movement. On the other hand, it is the responsibility of the applications to handle the visuals and design of the interface. This includes determining the appearance of the windows, the buttons they contain, and their positioning. Once the application programmer has made these choices, the X Window System then draws the final design on the screen.
In X11, there is a defined communication protocol that facilitates the exchange of information between the various components of the X Window System. This communication is necessary because the code used by an X-enabled application to draw its windows and interface elements is not contained within the application itself. This task is shared between an X server and the Window Manager.
Applications function as clients of the X server, wherein the Window Manager serves as a distinct type of client. The X server takes on the responsibility of resource management, executing drawing commands, and overseeing event handling, including keystrokes and mouse clicks, which are directed towards the relevant applications.
Furthermore, the X server acts as an intermediary in facilitating communication between the Window Manager and the applications, facilitating the exchange of messages between the two parties. The Window Manager diligently keeps track of the windows opened by applications, their respective positions on the screen, dimensions, and any overlapping occurrences.
A compositing Window Manager is responsible for managing an off-screen buffer for every window. Its role is to combine these buffers into a unified image that represents the top-most window, symbolizing the complete desktop, and then displaying it on the screen. Compositing Window Managers are utilized in all contemporary graphical desktop environments such as GNOME and KDE.
How Wayland Works
Wayland aims to address the drawbacks of X11. With X11, there is a prevalent need for extensive messaging, as the X server acts as an intermediary between clients and the Window Manager, as well as between all components and the graphics hardware through the kernel. This high volume of messaging can result in latency and a visually impaired experience characterized by a laggy and jumpy interface.
There is also a significant code base including the server application, the Window Manager application, and the X11 library utilized by clients. The maintenance and handling of legacy code becomes more challenging as the code base grows larger and older.
Wayland has revolutionized and simplified the code base through architectural changes, resulting in improved performance and enhanced security.
The server and Window manager have been merged into a single application, eliminating redundant code and leveraging the kernel's functionality. Wayland enables direct communication between the compositor and client applications. The compositor manages the mapping, size, and state of windows on the desktop, as well as handles keyboard, mouse, and window change events by forwarding them to the respective window owners.
The user interface of the applications is updated accordingly. One notable distinction is that the rendering is executed within the applications themselves, utilizing the associated Wayland libraries.
The application either updates the window buffer or generates a new one while discarding the previous buffer. Subsequently, the client application notifies the compositor to update its window mapping and utilize the new or modified video buffer.
This simplified architecture and modern code design deliver performance improvements, with window resizes and drags in particular, appearing smooth and fluid.
Wayland’s Slow Adoption by Applications
Wayland serves as the default windowing system in Debian 10 and later versions, Fedora 34 and later versions, Ubuntu 18.04 and later versions, as well as other distributions like Arch Linux. However, it is noteworthy that Wayland frequently executes X11 applications.
To enable the operation of X11 applications within Wayland, a compatibility layer called XWayland has been developed. This layer was necessary due to the fact that the majority of X11 applications have not been adapted or transferred to Wayland.
On desktop environments that support Wayland compositors such as GNOME, the official applications like the GNOME Text Editor, Maps, Files, and Calendar are all native to Wayland. However, it is worth noting that the majority of X11 applications remain unchanged and continue to be native X11 applications.
RELATEDNvidia Releases Open-Source Linux GPU Drivers, With a Catch
The XWayland middleware usually functions well, but certain X11 applications that involve screen recording or other low-level screen-related tasks may encounter issues. Utilizing Wayland with NVIDIA can be just as challenging as with X11, although personally, I have not faced any problems while using it on my main system with an NVIDIA GeForce GT 1030 GPU.
Some developers of X11 applications may rely on XWayland for compatibility instead of reworking them into Wayland applications. Consequently, the transition to Wayland may be slow and gradual, with new applications adopting it while existing X11 applications continue to depend on XWayland.
Are You Using Wayland or X11?
If you’re using one of the major Linux distributions, the chances are you’re already using Wayland. You can check by issuing the following command.
echo $XDG_SESSION_TYPE
On a system using Wayland, the output will be:
And on a system running the X Window System, you’ll see:
Rarely, the XDG_SESSION_TYPE environment variable is not set. In that case you can use this command instead:
Please rewrite
Retrieve the session ID by executing the following command:
loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value.
The nested loginctl command utilizes the show-user command to display properties of the specified user. The whoami command provides the name of the current user. By using the -p (property) option, the output from loginctl is limited to information concerning the "Display" setting, and the --value option ensures that only the value is returned. We exclude the "Display=" string from the loginctl response.
On a computer using Wayland, the displayed attributes of the session, obtained by passing the session ID to the outer loginctl and using the show-session command, can be restricted to only include information about the session type by utilizing the -p (property) option. Furthermore, by using the --value option, the value of the session type can be showcased without the accompanying "Type=" label.
If you’re running the X Window System, you’ll see:
Should You Use Wayland or X11?
If you're not experiencing any problems, it's advisable to continue using your current setup. However, if you're encountering glitches or experiencing stuttering screen updates, you can consider switching to the alternative option.
For GNOME users, if you wish to experiment with the other system, navigate to the login screen and select your user name. Then, locate and click on the gear wheel icon situated in the bottom-right corner of the screen.
A menu will offer you different versions of GNOME. Options that mention “Xorg” use the X Window System and those that don’t use Wayland.