After over a year of development, a stable release of the Wayland protocol, inter-process communication mechanism, and libraries 1.23 has been presented. The 1.23 branch is backwards compatible at the API and ABI level with 1.x releases and mainly contains bug fixes and minor protocol updates. The project's developments are distributed under the MIT license. The reference compositor server Weston, providing code and working examples for using Wayland in desktop environments and embedded solutions, is evolving within a separate development cycle.
Key changes in the protocol:
- The libwayland library implements an API that allows the client to define the maximum size of the internal buffer for connections on the server side. The base maximum buffer size is set via the wl_display interface, and the new API allows clients to modify it for each client connection. Practically, this change enables the use of larger buffers in specific Wayland clients, such as Xwayland, which have a higher event input intensity.
- For requests, events, and enums, the option to use the XML attribute "deprecated-since" has been provided to mark deprecated elements. In Wayland terminology, requests are messages sent from the client to server; events are messages sent from the server to the client; enums are sets of numeric values associated with a specific name that the protocol manipulates.
- The wayland-scanner utility, designed to generate header files and C code based on XML files describing the protocol, has added an "enum-header" mode, which includes specifying only enums in the header files.
- The wayland-scanner ensures the generation of validation functions for enums on the server side.
- The ability to assign names to event queues has been added to simplify debugging.
- The functions wl_client_get_user_data() and wl_client_set_user_data() have been added, making it easier to attach arbitrary data to the client.
- The wl_shm.release request has been added, allowing the client to inform the server that it has stopped using a shared object, enabling the server to free the associated memory.
- Support for the OpenBSD platform has been added.
Wayland-related events that occurred since the last release:
- XWayland 24.1.0 has been released with support for Explicit Sync technology and enhanced support for 2D acceleration architectures GLAMOR and EXA.
- Update of the labwc (Lab Wayland Compositor) with features similar to the Openbox window manager.
- The wprs project develops a session manager for Wayland similar to the screen utility, but for graphical applications.
- Release of the Niri compositing server, which uses Wayland and offers a method of tiling layout with grouping of windows into an infinitely scrollable ribbon on the screen.
- Update of the Wayland-Protocols set of protocols and extensions: 1.34, 1.33, 1.32, 1.35.
- Development of the SDL3 library, which uses Wayland by default.
- Release of the LXQt 2.0.0 desktop environment with Wayland support in the PCManFM-Qt file manager, notifications system, desktop, program launcher (Runner), panel, logout interface, LXQt settings interface, and most applications.
- Release of the Sway 1.9 desktop environment that uses Wayland.
- New composite manager miracle-wm based on Wayland and components for building Mir compositing managers.
- Louvre — a new library for developing compositors servers based on Wayland.
- Work on implementing Wayland support in Xfce.
- Initial Wayland support in the Budgie desktop environment.
- Initial Wayland support in the Cinnamon desktop environment.
- Nearly complete porting of the MATE desktop to Wayland.
- The Lubuntu distribution is transitioning to using Qt 6 and Wayland.
- KDE 6 now offers a default session using the Wayland protocol. Support for Wayland extensions for color management has been implemented.
- The Electron platform has included a window decorating mode for Wayland.
- Update of the Wayfire compositor, using Wayland and allowing the formation of user interfaces with 3D effects similar to 3D plugins for Compiz.
- Wayland support in the IntelliJ IDE and OpenJDK.
- Wayland support in the GNU Emacs text editor.
- In GNOME, the session based on Wayland has implemented support for the software KVM switch Input Leap, allowing the use of one keyboard and mouse to control multiple computers.
- The Fedora edition with the KDE desktop has discontinued support for X11 protocol-based sessions in the base distribution.
- Improved support for Wayland-based environments in proprietary NVIDIA drivers.
- A driver has been implemented that allows the use of Wine in environments based on the Wayland protocol without the need for XWayland and X11 components.
- The release of the composite server Weston 13.0 has been formed.
- A special Live distribution of Rebecca Black Linux is being released for testing the operation of KDE, GNOME, Enlightenment, Wayfire, Mir, Xfce, and Sway on top of Wayland.
- In Linux builds of Firefox, the use of the Wayland composite server is enabled by default instead of XWayland. There is also an option to create builds that support operation only in Wayland.
It is worth noting that Wayland is a protocol for interaction between the compositing server and the applications that work with it. Clients render their windows in a separate buffer, sending update information to the compositing server, which combines the contents of the individual application buffers to produce the final output, taking into account possible nuances such as window overlap and transparency. In other words, the compositing server does not provide an API for rendering individual elements but only operates with already formed windows, which allows eliminating double buffering when using high-level libraries such as GTK and Qt that handle the composition of window contents.
Wayland resolves many security issues of X11, as it isolates input and output for each window, preventing a client from accessing the contents of other clients' windows, and does not allow capturing input events related to other windows. Currently, direct support for working with Wayland has been implemented for GTK, Qt, SDL (starting from version 2.0.2), Clutter, and EFL (Enlightenment Foundation Library). Starting from Qt 5.4, the QtWayland module has been included, providing components for running Qt applications in the Weston composite server environment developed by the Wayland project.
Interaction with hardware in Wayland/Weston, such as initialization, switching video modes (drm modesetting), and memory management (GEM for i915 and TTM for radeon and nouveau) of graphics cards, can be performed directly through a module operating at the kernel level, allowing operation without superuser privileges. The Weston composite server can function not only using the Linux kernel's DRM module but also on top of X11, another Wayland composite server, framebuffer, and RDP. Furthermore, projects are being developed to ensure functionality over the graphical stack of the Android platform.
Within the Weston project, one implementation of a composite server is being developed. Any other product that supports the Wayland protocol can also act as a composite server. For example, work is currently underway to support Wayland in KWin. In its current form, Weston has already gone beyond just a set of examples for testing the Wayland protocol and can be enhanced with functionality through plugins and extensions. User interfaces and advanced window management features are suggested to be implemented as external backends to Weston. To enable regular X11 applications in a Wayland-based environment, the DDX component XWayland (Device-Dependent X) is used, which is organized similarly to Xwin and Xquartz for Win32 and macOS platforms.


Source: opennet.ru
