Most Linux and Unix-based systems rely on the X Window System (or simply X) as the low-level protocol for building bitmap graphics interfaces. Put shortly, it’s a protocol which tells your programs how they should appear to you on the screen, depending on your actions. For example, moving a window around, or clicking a button.
On these systems, the X stack has grown to encompass functionality arguably belonging in client libraries, helper libraries, or the host operating system kernel. Support for things like PCI resource management, display configuration management, direct rendering, and memory management has been integrated into the X stack, imposing limitations like limited support for standalone applications, duplication in other projects, and high levels of complexity for systems combining multiple elements.
Moreover, X has grown to incorporate modern features like off-screen rendering and scene composition, but subject to the limitations of the X architecture. For example, the X implementation of composition adds additional context switches (thus slowing the CPU) and makes things like input redirection difficult.
Due to all the above limitations, Wayland was introduced to simplify the whole graphics stack.
In RHEL 8, you can choose between two protocols to build a graphical user interface: X11 and Walyland.
The Wayland protocol on RHEL 8 uses GNOME Shell as its compositor and display server, which is further referred as GNOME Shell on Wayland.
New installations of RHEL 8 automatically select GNOME Shell on Wayland, so the Wayland protocol is used by default. However, due to some Wayland limitations or in Environments where X11 is preferred over Wayland, you may want to switch to X.Org, or select the required combination of GNOME environment and display server.
Wayland and X11 Interoperability
Client applications need to be ported to the Wayland protocol or use a graphical toolkit that has a Wayland backend, such as GTK, to be able to work natively with the compositor and display server based on Wayland.
Legacy X11 applications that cannot be ported to Wayland automatically use Xwayland as a proxy between the X11 legacy clients and the Wayland compositor. Xwayland functions both as an X11 server and a Wayland client. The role of Xwayland is to translate the X11 protocol into the Wayland protocol and reversely, so that X11 legacy applications can work with the display server based on Wayland.
On GNOME Shell on Wayland, Xwayland is started automatically at startup, which ensures that most X11 legacy applications work as expected when using GNOME Shell on Wayland. However, the X11 and Wayland protocols are different, and so some clients relying on X11-specific features may behave differently under Xwayland.
GNOME Shell on Wayland supports new touchpad and touchscreen gestures. These gestures include:
- Switching workspaces by dragging up or down with four fingers.
- Opening the Activities Overview by bringing three fingers closer together