Wayland

Wayland is intended as a simpler replacement for X display server. "Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol. The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, an X application, or a wayland client itself. The clients can be traditional applications, X servers (rootless or fullscreen) or other display servers." Where possible, Wayland reuses existing drivers and infrastructure, such as the DRI drivers, the kernel side GEM scheduler and kernel mode setting.

USE flags
Several packages are aware of the  USE flag.

Since GTK+3 Wayland is supported. Unfortunately, the GTK+ port to Wayland has major functionality gaps. Nevertheless, when porting application in general two issues must be covered:
 * Ensure that your application uses gtk+-3.0 for its pkg-config request.
 * All calls to the gdk_x11_ namespace and raw Xlib calls must be wrapped in build-time and run-time backend checks.

More details including plans and progress can be found on the GNOME wiki.

For Qt an additional package called is required. In the Qt Wiki it says: "QtWayland is a Qt 5 module that wraps the functionality of Wayland. QtWayland is separated into a client and server side. The client side is the wayland platform plugin, and provides a way to run Qt applications as Wayland clients. The server side is the QtCompositor API, and allows users to write their own Wayland compositors."

Porting Qt applications is much easier than GTK+ applications. More information on how to use QtWayland can be found at http://wiki.qt.io/Qtwayland and at http://wayland.freedesktop.org/qt5.html.

Weston
Part of the Wayland project is a reference implementation of a Wayland compositor called Weston. Weston can run as an X client or under Linux KMS.

Usage
The Weston compositor is a minimal and fast compositor and is suitable for many embedded and mobile use cases.

Enable examples for building example applications like weston-image or weston-view.

Weston is configured with. Examples can be found at the Arch Linux Wiki.

The environment variable can be defined in the usual configuration files. For example, sets XDG_RUNTIME_DIR in his Bash shell configuration file and he has chosen that the directory will be in /tmp.

Before launch Weston with the DRM backend on a VT, either enable systemd session support for weston-launch (by using systemd and having the systemd-login devel headers at configure time), or add to the "weston-launch" group:

Launch Weston with the DRM backend on a VT:

Launch Weston with the DRM backend and XWayland support:

Launch Weston (wayland-1) nested in another Weston instance (wayland-0):

From an X terminal, launch Weston with the x11 backend:

Applications
As mentioned above GTK3+ and Qt support Wayland. Unfortunately most applications still require the X server. Several scenarios are possible to get them working.
 * Porting the application by rewriting the components with X.org dependencies such that they work also for wayland. Cf. Wayland-Ports. Other examples are mpv which is a video player based on MPlayer/mplayer2 or the minimalist web-client xombrero, midori and epiphany also have full support for wayland. GNOME and KDE are expected to be ported to it.


 * Xclients can be run on Wayland. Afterwards the required application can be run as usual on the Xclient. See X server running on wayland.
 * Xwayland it the third option which is running Wayland on the X server.

External resources

 * https://wiki.archlinux.org/index.php/Wayland
 * http://manpages.ubuntu.com/manpages/xenial/en/man1/weston.1.html
 * https://wiki.qt.io/Qtwayland
 * https://wiki.gnome.org/Initiatives/Wayland/GTK%2B
 * https://www.linux.com/news/what-why-and-how-wayland-and-weston-linux - A Linux.com article explaining Wayland (and Weston).