Wayland-Protocols 1.46 release

The wayland-protocols package 1.46 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.

In the new version:

  • An experimental protocol, xx-input-method, has been added, allowing applications to implement text input methods for composite servers and generate input text, which can be used, for example, to create virtual keyboards and IME (Input Method Editor) layers for input processing.
  • The experimental xx-text-input protocol has been added, allowing composite servers to implement input methods and send text to applications. The protocol standardizes interactions between the composite server and applications and enables control over features such as transmitting input text, handling input focus events, and taking into account input field specifics (language, text selection, content type).
  • The color-management-v1 and color-representation-v1 protocols have been improved, providing capabilities for color management, HDR support, and defining the color representation of a Wayland surface.

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.

To speed up the delivery of protocols to developers and to stimulate early implementation of protocols in existing projects, starting with the release before last, an "experimental" phase was additionally added, in which changes that violate compatibility are allowed, and "raw" protocols can be added that can be gradually brought to the required level. If for a protocol to get into the "staging" phase it is necessary to form a support team and receive a certain number of confirmations (ACK) from review participants, then for getting into the "experimental" it is enough to have no objections (NACK) during the two-week review period.

The wayland-protocols suite currently includes the following stable protocols, which 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 as windows, allowing you to move them around the screen, collapse, expand, resize, etc.
  • "linux-dmabuf" - provides capabilities for creating wl_buffers 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 information about the rendered content to the composite server, which can be used to optimize content-aware behavior, such as setting DRM-specific properties such as "content type". Support for the following content types is declared: none (there is no information about the data type), photo (output of digital photos that requires minimal processing), video (video or animation, more precise synchronization is required to eliminate stuttering) and game (starting games, output from minimum delay).
  • 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" is designed to create temporary independent sessions (seats) designed for use with virtual input devices. For example, when implementing the ability to connect to remote desktop The protocol allows creating a separate session with a virtual keyboard and mouse for each user.
  • "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 explicit buffer synchronization using DRM (Direct Rendering Manager) synchronization objects. In the context of buffer-rendering synchronization, the proposed protocol is expected to improve the performance of drivers based on the Vulkan and OpenGL graphics APIs (implementation is based on driver handlers). The new protocol makes it possible to ensure that a buffer-rendering operation is complete before the compositing 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).
  • 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.
  • color-management — provides capabilities for color management and support for extended dynamic range of brightness (HDR, High Dynamic Range). With the added extension, client applications can obtain information about the color-related properties of output devices and pass data on the color-rendering properties of their own content to the composite server. In the composite server, this information can be used for automatic color management when displaying content on various output devices, for example, to convert content into a presentation suitable for display on HDR monitors. ICC profiles are used to describe color spaces.
  • xdg-toplevel-tag — Allows Wayland clients to attach tags to top-level surfaces that the compositing server can use to identify windows after an application restart (for example, an application might set "main window" and "settings" tags for the main window and the settings window). Such identification is useful for restoring the position, size, and properties of windows after a restart, and for defining special rules for certain types of windows.
  • color-representation — defines the color representation of the Wayland surface. Wayland clients can pass metadata needed to define transparency, color model, subsampling, and quantization range, and used when converting a buffer with data corresponding to the YCbCr color model to an RGB representation.
  • 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.

Protocols being developed in the experimental branch:

  • xx-session-management - restores the state of windows for interrupted sessions (for example, after a composite manager crash).

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

Add a comment