Wayland 1.24 is now available

After 13 months of development, a stable release of the Wayland 1.24 protocol, interprocess communication mechanism, and libraries has been presented. The 1.24 branch is backwards compatible at the API and ABI level with the 1.x releases and mainly includes bug fixes and minor protocol updates. The project developments are distributed under the MIT license. The reference compositing server Weston, which provides code and working examples for using Wayland in desktop environments and embedded solutions, is being developed within a separate development cycle.

Key changes in the protocol:

  • The wl_fixes interface has been implemented to address issues with other software interfaces of the base protocols that cannot be resolved by these interfaces' capabilities alone. For instance, the request "wl_fixes::destroy_registry" allows for the destruction of the wl_registry object, after which the client will no longer be able to use it, and the compositing server will stop passing events through it.
  • In the wl_keyboard::key interface, a pseudo-state "repeated" has been implemented, indicating that a key is held down. A key can only enter the "repeated" state after transitioning to the "pressed" state but before reaching the "released" state. Associated events can be generated multiple times while the key is pressed. This change allows compositing servers to handle repeated key presses while the keys are held as separate states, rather than simply as a stream of repeated pressing events ("pressed"), which can be useful for working with remote desktops.
  • The functions wl_display_dispatch_queue_timeout() and wl_display_dispatch_timeout() have been added for dispatching events in the queue with timeout consideration (the wl_display_dispatch and wl_display_dispatch_queue functions return 0 only when there are no events, while the *_timeout variants return 0 as well when the timeout occurs).
  • The functions wl_shm_buffer_ref() and wl_shm_buffer_unref() have been added for accessing shared memory related to the wl_shm_buffer after its destruction (e.g., when a client exits). These functions allow dissociating the wl_shm_buffer from the lifetime of the main resource wl_buffer when a compositing server needs to delay transitioning to a new state.
  • Functions wl_proxy_get_interface() and wl_resource_get_interface() have been added, returning wl_interface for the specified resource, which is in demand in bindings for dynamically typed languages.
  • The function wl_resource_post_error_vargs() has been introduced as an alternative to wl_resource_post_error(), allowing a list of arguments to format the string (va_list).

The most notable events related to Wayland that have occurred since the last release:

  • Improved support for Wayland in proprietary NVIDIA drivers.
  • KDE plans to retain only Wayland support. Separation of the kwin_x11 and kwin_wayland code.
  • Ubuntu and Kubuntu will only keep support for the Wayland session in GNOME and KDE.
  • In GDM, only Wayland support is left by default.
  • GTK has deprecated the X11 backend.
  • In Fedora 43, it was decided to remove packages used in GNOME for running on the X server from the repository. All GNOME users on X11 will be forcibly switched to a Wayland-based session.
  • The Budgie desktop environment will retain only Wayland support.
  • Xfce 4.20 has implemented partial Wayland support.
  • MATE 1.28 with experimental Wayland support.
  • Wayback — a Wayland compositor server for running desktops based on X11.
  • Valve has launched the Frog project to accelerate the promotion of new Wayland protocols.
  • The Cosmoe GUI library, utilizing Wayland and BeOS-style API.
  • Wayland driver included by default in Wine.
  • Transition of Raspberry Pi OS to using Wayland.
  • Release of the FLTK 1.4.0 graphical toolkit with Wayland support.
  • The Wayland-Protocols set has added an additional phase of protocol promotion — 'experimental', aimed at lowering the barrier for protocol integration, speeding up reaching developers, and encouraging early implementation in existing projects.
  • AMD is developing its own ACS compositor server, using Wayland.
  • Seven alpha releases of the COSMIC desktop environment.
  • Updates to compositor servers: Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.

Extensions added over the last year, complementing the core Wayland protocol and provided in a separate set of Wayland-Protocols:

  • color-management — capabilities for managing color and supporting High Dynamic Range (HDR).
  • color-representation-v1 — the color representation assignment of the Wayland surface.
  • xdg-toplevel-tag — allows Wayland clients to attach tags to top-level surfaces that the compositing server can use to identify windows after the application restarts.
  • ext-background-effect — applies effects to the translucent parts of a Wayland surface, such as background blur.
  • pointer-warp — allows an application to instantly move the pointer to a specified position.
  • xx-session-management — restoration of window states for interrupted sessions (e.g., after a crash of the composite manager).
  • xx-input-method — the development of a new protocol for using text input methods. ext-data-control — allows privileged clients to manage data processing, for example, to implement clipboard managers.
  • ext-workspace — implements the concept virtual desktops and offers events with information about the status of desktops, as well as capabilities for activating and deactivating desktops.
  • xdg-system-bell — allows for outputting a system signal that can be used, for example, as a warning in terminal emulators.
  • xdg-toplevel-icon — to bind an icon to a top-level window.
  • ext-image-capture-source and ext-image-copy-capture — capture content displayed on the screen.
  • fifo — implements a FIFO mechanism (first in, first out) for updating the content display queue.
  • commit-timing — allows a time constraint to be tied to the surface content (the composite server must display the content change as close to the specified time as possible, but not earlier).

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 addresses many security issues of X11, as unlike the latter, it isolates input and output for each window, prevents a client from accessing the contents of other clients' windows, and does not allow interception of input events related to other windows. Direct support for working with Wayland is implemented for most graphical libraries used in Linux, including GTK, Qt, SDL, FLTK, wxWidgets, Clutter, and EFL (Enlightenment Foundation Library).

Interaction with hardware in Wayland/Weston, such as performing initialization, switching video modes (drm modesetting), and managing memory (GEM for i915 and TTM for radeon and nouveau) of graphics cards, can be done directly through a module operating at the kernel level, allowing for operation without superuser privileges. To run standard X11 applications in a Wayland-based environment, the DDX component XWayland (Device-Dependent X) is used, which operates similarly to Xwin and Xquartz for Win32 and macOS platforms.

Wayland 1.24 is now availableWayland 1.24 is now available


Source: opennet.ru
Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster