Wayland 1.24 is available

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

The main changes in the protocol:

  • The wl_fixes interface has been implemented to address issues with other base protocol APIs that cannot be resolved by the native capabilities of those interfaces. For example, the "wl_fixes::destroy_registry" request allows the wl_registry object to be destroyed, after which the client will not be able to use it, and the composite server will stop sending events through it.
  • The wl_keyboard::key API implements a "repeated" pseudo-state, which denotes whether a key is pressed. A key can be put into the "repeated" state only after entering the "pressed" state, but before entering the "released" state. Events associated with the new state can be generated multiple times while the key is pressed. This change allows composite servers to handle repeated key presses as separate states, rather than simply a stream of repeated "pressed" events, which can be useful for managing key presses. remote desktop.
  • Added functions wl_display_dispatch_queue_timeout() and wl_display_dispatch_timeout() for dispatching events in a queue taking into account the timeout (functions wl_display_dispatch and wl_display_dispatch_queue return 0 only if there are no events, and the *_timeiout variants also return XNUMX when a timeout occurs).
  • Added wl_shm_buffer_ref() and wl_shm_buffer_unref() functions to access the shared memory associated with the wl_shm_buffer buffer after it has been destroyed (e.g. when the client terminates). The functions allow the wl_shm_buffer buffer to be unlinked from the underlying wl_buffer resource lifetime when the composite server needs to delay transitioning to a new state.
  • Added functions wl_proxy_get_interface() and wl_resource_get_interface(), which return wl_interface for the specified resource, which is in demand in bindings for languages ​​with dynamic typing.
  • Added the wl_resource_post_error_vargs() function, which serves as an alternative to the wl_resource_post_error() function with the ability to pass a list of arguments for formatting the string (va_list).

The most notable events related to Wayland that have occurred since the last issue was published:

  • Improved Wayland support in NVIDIA proprietary drivers.
  • KDE plans to keep only Wayland support. Separation of kwin_x11 and kwin_wayland code.
  • Ubuntu and Kubuntu will only retain Wayland session support in GNOME and KDE.
  • GDM only supports Wayland by default.
  • GTK has deprecated the X11 backend.
  • Fedora 43 will remove packages used by GNOME to run on top of the X server from the repository. All GNOME users running X11 will be forced to switch to a Wayland-based session.
  • The Budgie desktop environment will retain only Wayland support.
  • Xfce 4.20 introduces partial support for Wayland.
  • MATE 1.28 with experimental Wayland support.
  • Wayback - A Wayland composite server for running X11-based desktops
  • Valve has launched Project Frog to accelerate the advancement of the new Wayland protocols.
  • Cosmoe is a GUI library that uses Wayland and a BeOS-style API.
  • Enable Wayland driver by default in Wine.
  • Transitioning Raspberry Pi OS to Wayland.
  • Release of FLTK 1.4.0 graphics toolkit with Wayland support.
  • The Wayland-Protocols suite has been extended with an additional protocol promotion phase, "experimental", aimed at lowering the barrier to protocol integration, accelerating the delivery of protocols to developers, and encouraging early implementation in existing projects.
  • AMD is developing its own ACS composite server using Wayland.
  • Seven alpha releases of the COSMIC desktop environment.
  • Composite servers updated: 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.

Protocol extensions added over the last year that complement the base Wayland protocol and are supplied in a separate Wayland-Protocols set:

  • color-management — capabilities for color management and support for extended dynamic range of brightness (HDR, High Dynamic Range).
  • color-representation-v1 — specifies the color representation 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 application restart.
  • ext-background-effect - applies effects to semi-transparent 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 - restores the state of windows for interrupted sessions (for example, after a composite manager crash).
  • xx-input-method — development of a new protocol for using text input methods. ext-data-control — allows privileged clients to control data handling, for example to implement clipboard managers.
  • ext-workspace — implements the concept virtual desktops and offers events with information about the state of desktops, as well as the ability to activate and deactivate desktops.
  • xdg-system-bell - allows you to output a system signal that can be used, for example, as a warning in a terminal emulator.
  • xdg-toplevel-icon - for attaching 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 (first in, first out) mechanism for processing the queue for updating the contents of the displayed surface.
  • commit-timing - allows you to attach a time limit to the surface content (the composite server should display the content change if possible after the specified time, but not before).

Let us recall that Wayland is a protocol for interaction between a composite server and applications working with it. Clients render their own windows in a separate buffer, passing updates to the composite server, which combines the contents of individual application buffers to produce a final output that takes into account possible nuances such as window overlap and transparency. In other words, the composite server does not provide an API for rendering individual elements, but only operates on already formed windows, which allows you to get rid of double buffering when using high-level libraries such as GTK and Qt, which take on the work of compositing the contents of windows.

Wayland solves many of the security problems of X11, since, unlike the latter, it isolates input and output for each window, does not allow a client to access the contents of other clients' windows, and does not allow interception of input events associated with other windows. Support for direct work with Wayland is implemented for most graphics libraries used in Linux, including GTK, Qt, SDL, FLTK, wxWidgets, Clutter, and EFL (Enlightenment Foundation Library).

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 running at the kernel level, which allows you to do without superuser privileges. To ensure the execution of regular X11 applications in a Wayland-based environment, the XWayland (Device-Dependent X) DDX component is used, similar in its organization to Xwin and Xquartz for Win32 and macOS platforms.

 Wayland 1.24 is available  Wayland 1.24 is available


Source: opennet.ru

Add a comment