The wayland-protocols package 1.39 has been released, containing a set of protocols and extensions that complement the core Wayland protocol and provide the capabilities needed to build composite servers and user environments.
All protocols consistently go through the development, testing and stabilization phases. After the development stage is completed (the "unstable" category), the protocol is placed in the "staging" branch and officially included in the wayland-protocols set, and after testing is completed, it is moved to the stable category. Protocols from the "staging" category can already be used in composite servers and clients where the functionality associated with them is required. Unlike the "unstable" category, "staging" prohibits making changes that violate compatibility, but if problems and shortcomings are detected during testing, a replacement with a new significant version of the protocol or another Wayland extension is not excluded.
The new version adds an additional phase of protocol promotion — "experimental", aimed at lowering the barrier to inclusion of protocols in the Wayland-Protocols set, accelerating the delivery of protocols to developers and stimulating early implementation in existing projects. The new phase will allow protocol developers to avoid lengthy discussions and red tape before acceptance into the Wayland-Protocols.
While a protocol needs to form a support team and receive a certain number of acknowledgements (ACK) from reviewers to enter the staging phase, it only needs to have no objections (NACK) during the two-week review period to enter the experimental phase. The experimental phase allows for changes that break compatibility and the addition of "raw" protocols that can be gradually brought to the required level.
The following protocols have been added to the "staging" category:
- 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. The protocol can be used to create dashboards and indicators that display a list of available virtual desktops and allow switching between them.
Wayland-protocols currently includes the following stable protocols that are backward compatible:
- "viewporter" - allows the client to perform scaling and cropping actions on the edges of the surface on the server side.
- "presentation-time" - provides video display.
- “xdg-shell” is an interface for creating and interacting with surfaces like windows, which allows them to be moved around the screen, minimized, maximized, resized, etc.
- “linux-dmabuf” - provides sharing of several video cards using DMA-BUF technology (allows you to create a wl_buffer based on DMA-BUF).
- "tablet" - organization of input from graphic tablets.
Protocols tested in the "staging" branch:
- drm-lease - provides the resources necessary to form a stereo image with different buffers for the left and right eyes when displayed on virtual reality helmets.
- "ext-session-lock" - defines the means of locking the session, for example, during the operation of the screen saver or the output of the authentication dialog.
- "single-pixel-buffer" - allows you to create single-pixel buffers that include four 32-bit RGBA values.
- "xdg-activation" - allows you to transfer focus between different surfaces of the first level (for example, using xdg-activation, one application can switch focus to another).
- content-type - allows clients to pass composite server Information about the content being displayed that can be used to optimize content-aware behavior, such as setting specific DRM properties such as "content type." Support for the following content types is declared: none (no data type information), photo (digital photo output requiring minimal processing), video (video or animation, requiring more precise synchronization to avoid stuttering), and game (game launching, requiring output with minimal latency).
- ext-idle-notify - Allows composite servers to send user inactivity notifications to clients, which can be used to activate additional power saving modes after a certain amount of inactivity.
- tearing-control - allows you to disable vertical sync (VSync) with vertical blanking pulse in full-screen applications, which is used to protect against tearing in the output (tearing). In multimedia applications, the appearance of artifacts due to tearing is an undesirable effect, but in game programs, artifacts can be tolerated if dealing with them leads to additional delays.
- ext-foreign-toplevel-list - Retrieves information about surfaces placed at the top level, which allow you to organize windows to dock on top of other content, for example, to attach your own panels and window switches.
- security-context - allows you to identify clients using sandbox isolation. A client can register a new connection to a Wayland-based composite server and attach a security context to it, after which the composite manager will limit the capabilities available to the established connection based on the specified security context.
- cursor-shape is an alternative way to customize the appearance of the cursor, based on passing a series of images of the cursor instead of snapping to a surface (wl_surface).
- “ext-transient-seat” - designed to create temporary independent sessions (seats) designed for use with virtual input devices. For example, when implementing the ability to connect to a remote desktop, the protocol allows you to create a separate session for each user with a virtual keyboard and mouse.
- "xdg-toplevel-drag" - extends the "drag & drop" mechanism with the ability to attach top-level windows to a drag operation, which can be used, for example, to organize dragging of toolbars or browser tabs with the mouse. The new protocol allows you to create detachable parts of a window that, when dragged from that window, become new windows and can be moved on top of the existing window before being re-attached.
- "xdg-dialog" - allows you to assign dialog-specific attributes to top-level surfaces, for example, you can create modal dialogs that block user interaction with the rest of the interface.
- "linux-drm-syncobj" - Provides tools for explicitly synchronizing buffers using DRM (Direct Rendering Manager) synchronization objects. It is assumed that in the context of synchronization when drawing to a buffer, the proposed protocol will improve work with drivers based on the Vulkan and OpenGL graphics APIs (the implementation is based on handlers in the drivers). The new protocol makes it possible to ensure that a render operation to a buffer is completed before the composite manager renders the buffer.
- alpha-modifier, which allows clients to change the transparency level of the surface and to offload transparency operations to the composite server, which in turn can forward these operations to KMS.
- xdg-toplevel-icon — binds the icon to the top-level window.
- ext-image-capture-source and ext-image-copy-capture - organize the capture of content displayed on the screen.
- xdg-system-bell — allows you to output a system signal, which can be used, for example, as a warning in a terminal emulator. The form of the signal output is determined at the discretion of the composite manager, it can be not only a sound, but a visual response.
- fifo — implements a FIFO (first in, first out) mechanism for processing the display surface content update queue. From a practical point of view, the protocol allows for output to wait for the vertical scan (vblank) to complete instead of using callbacks every time a new frame is ready to be displayed, which solves the problem of high GPU load when using VSync.
- 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).
Protocols being developed in the "unstable" branch:
- "fullscreen-shell" - control work in full screen mode.
- "input-method" - processing of input methods.
- "idle-inhibit" - blocking the launch of the screensaver (screen saver).
- "input-timestamps" - timestamps for input events.
- "keyboard-shortcuts-inhibit" - Controls the attachment of keyboard shortcuts and hotkeys.
- "linux-explicit-synchronization" is a Linux-specific mechanism for synchronizing buffers in relation to a surface.
- "pointer-gestures" - control from touch screens.
- "pointer constraints" - pointer constraints (blocking).
- "primary-selection" - by analogy with X11, it provides the primary clipboard (primary selection), the insertion of information from which is usually done with the middle mouse button.
- "relative pointer events" - relative pointer events.
- "text-input" - organization of text input.
- "xdg-foreign" is an interface for interacting with the surfaces of a "neighboring" client.
- "xdg-decoration" - rendering window decorations on the server side.
- "xdg-output" - additional information about the video output (used for fractional scaling).
- "xwayland-keyboard-grab" - Capture input in XWayland applications.
Source: opennet.ru
