Release of Wayland-Protocols 1.49

The release of the wayland-protocols package 1.49 has been presented, which contains a set of protocols and extensions that complement the basic Wayland protocol and provide the necessary capabilities for building composite servers and user environments.

In the new version:

  • An experimental protocol, xx-fractional-scale, has been added, allowing the scaling of logical coordinate systems, where values are set as integers, to improve positioning accuracy and increase the resolution of logical coordinates to individual pixels. This feature addresses the issue of the limited resolution of the logical coordinate system, which is insufficient for positioning at the level of individual pixels, necessary for the full implementation of fractional scaling.
  • Support for operation on systems with multiple GPUs has been added to the linux-dmabuf protocol. On such systems, a client can negotiate with the compositors proxy server which GPU should be used.
  • The color-management-v1 protocol has been updated to support image metadata in the BT.2100 format for use in composite server specific handlers that correctly display HDR content created for Windows.

All protocols sequentially go through development, testing, and stabilization phases. After the development stage is completed (unstable category), the protocol is placed in the staging branch and officially included in the wayland-protocols set, and after testing is finished, it moves to the stable category. Protocols from the staging category can already be used in composites servers and clients where associated functionality is required. Unlike the unstable category, changes that break compatibility are not allowed in staging, but if issues and shortcomings arise during testing, a significant new version of the protocol or another Wayland extension may replace it.

To speed up the delivery of protocols to developers and encourage early implementation in existing projects, since the last but one release, an 'experimental' phase has been added, which allows changes that break compatibility and the addition of 'raw' protocols that can be gradually refined. While forming a support team and obtaining a certain number of acknowledgments (ACK) from reviewers is required for a protocol to enter the 'staging' phase, it is sufficient to have no objections (NACK) during a two-week review period for it to enter 'experimental'.

The current version of the wayland-protocols set includes the following stable protocols that ensure backward compatibility:

  • viewporter - allows the client to perform scaling and cropping actions on the surface from the client's side. server.
  • ‘presentation-time’ — provides video display.
  • «xdg-shell» — an interface for creating and interacting with surfaces as windows, allowing them to be moved around the screen, minimized, maximized, resized, etc.
  • «linux-dmabuf» — provides capabilities for creating wl_buffers based on DMA-BUF.
  • "tablet" — input organization from graphic tablets.

Protocols currently being tested in the 'staging' branch:

  • drm-lease provides the resources necessary for forming a stereo image with different buffers for the left and right eye when outputting to virtual reality headsets.
  • ext-session-lock defines session lock mechanisms, such as during the screensaver operation or the display of an authentication dialog.
  • single-pixel-buffer allows the creation of single-pixel buffers that include four 32-bit RGBA values.
  • xdg-activation allows passing focus between different top-level surfaces (for example, using
    xdg-activation, one application can switch the focus to another).
  • content-type allows clients to convey information about the displayed content that can be used to optimize behavior based on content, such as setting specific DRM properties like 'content type'. Support is declared for the following content types: none (no information about data type), photo (output of digital photos requiring minimal processing), video (video or animation requiring more precise synchronization to avoid stuttering), and game (launching games requiring output with minimal latency). server ext-idle-notify allows composite servers to send notifications to clients about user inactivity, which can be used to activate additional power-saving modes after a certain period of inactivity.
  • tearing-control allows disabling vertical synchronization (VSync) with frame-destroying pulse in fullscreen applications, used to prevent tearing during output. In multimedia applications, the appearance of artifacts due to tearing is an undesirable effect, but in gaming programs, artifacts can be tolerated if combating them leads to additional delays.
  • ext-foreign-toplevel-list retrieves information about surfaces positioned at the very top level (toplevel) that allow the organization of window pinning over other content, for example, to connect custom panels and window switches.
  • ext-foreign-toplevel-list retrieves information about surfaces positioned at the very top level (toplevel) that allow the organization of window pinning over other content, for example, to connect custom panels and window switches.
  • security-context — allows identifying clients using sandbox isolation. A client can register a new connection to a composite server based on Wayland and attach a security context to it, after which the composite manager will restrict the capabilities available for the established connection according to the specified security context.
  • cursor-shape — an alternative way to set the cursor appearance based on transmitting a series of cursor images instead of binding to a surface (wl_surface).
  • 'ext-transient-seat' is designed for creating temporary independent sessions (seats) intended for use with virtual input devices. For instance, when implementing remote desktop connectivity, the protocol allows for creating a separate session with virtual keyboard and mouse for each user.
  • «xdg-toplevel-drag» — extends the ‘drag & drop’ mechanism by allowing the attachment of top-level windows to the movement operation, which can be used, for example, to organize mouse dragging of toolbars or browser tabs. The new protocol enables the creation of detachable parts of the window that, when dragged out of the original window, become new windows and can be moved above the existing window before reattaching.
  • «xdg-dialog» — allows assigning top-level surfaces with properties specific to dialog windows, for example, it can create modal dialogs that block user interaction with the rest of the interface.
  • «linux-drm-syncobj» — provides tools for explicit synchronization of buffers using DRM (Direct Rendering Manager) sync objects. It is expected that in the context of synchronization during rendering to a buffer, the proposed protocol will improve interaction with drivers based on graphical APIs Vulkan and OpenGL (the implementation is based on handlers in the drivers). The new protocol allows ensuring that the rendering operation to the buffer is completed before the composite manager displays this buffer.
  • alpha-modifier, allowing clients to change the transparency level of the surface and offloading transparency operations to the composite server, which can, in turn, redirect these operations to KMS.
  • xdg-toplevel-icon — binding an icon to a top-level window.
  • ext-image-capture-source and ext-image-copy-capture — organizing the capture of content displayed on the screen.
  • xdg-system-bell — allows the output of a system signal that can be used, for example, as a warning in terminal emulators. The form of the signal output is determined at the discretion of the composite manager; it can be not only sound but also a visual response.
  • fifo — implements a FIFO mechanism (first-come, first-served) for processing the queue of updates to the displayed surface. Practically, the protocol allows for using vertical synchronization (vblank) waiting instead of callback calls whenever ready to display a new frame, addressing the issue of high GPU load when using VSync.
  • commit-timing allows binding a time constraint to the surface content (the compositor server should display the content change as soon as possible after the specified time, but not earlier).
  • ext-data-control — allows privileged clients to manage data processing, for instance, for clipboard managers.
  • ext-workspace — implements the concept virtual desktops and offers events with information about the state of the workspaces, as well as features for activating and deactivating workspaces. The protocol can be used to create panels and indicators that display the list of available virtual desktops and allow switching between them.
  • color-management provides capabilities for color management and support for high dynamic range (HDR). With the added extension, client applications can obtain information about output device color characteristics and transmit data about their own content's color representation to the composite server. This information can be used in the composite server for automatic color management when displaying content on different output devices, such as converting content 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, which the composite server can use to identify windows after the application restarts (for example, the application can set tags "main window" and "settings" for the main and settings windows). Such identification is useful for restoring position, size, and properties of windows after a restart, as well as for applying special rules for certain types of windows.
  • color-representation defines the color representation of a Wayland surface. Wayland clients can send metadata necessary for defining transparency, color model, subsampling, and quantization range applied when converting buffer data corresponding to the YCbCr color model into RGB representation.
  • 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.
  • xdg-session-management — functionality for restoring the state and position of windows in an interrupted session, for example, after a crash of the compositing server or application.

Protocols being developed in the 'experimental' branch:

  • xx-session-management — restoration of window states for interrupted sessions (e.g., after a crash of the composite manager).
  • xx-input-method — allows applications to implement text input methods for compositing servers and to generate the entered text, which can be used, for example, to create virtual keyboards and IME layers (Input Method Editor) for processing input.
  • xx-text-input — enables compositing servers to implement input methods and send text to applications. The protocol standardizes interaction between the compositing server and applications, and allows managing features such as text input transmission, handling input focus change events, and accounting for the specifics of input fields (language, text selection, content type).
  • xx-cutouts — for obtaining information about cutouts on the screen (for example, areas under the front camera on a smartphone screen).
  • xx-zones — for creating and adding top-level windows into "zones" — environments with their own coordinate space. The protocol allows for the logical arrangement of windows, where each window is positioned relative to another window.
  • xx-keyboard-filter — for intercepting client-chosen keyboard events, modifying input events or blocking the transmission of certain events to the Wayland surface that currently has input focus.

Protocols being developed in the ‘unstable’ branch:

  • «fullscreen-shell» — management of fullscreen operation.
  • «input-method» — processing of input methods.
  • «idle-inhibit» — prevents the screensaver (screen saver) from starting.
  • «input-timestamps» — timestamps for input events.
  • «keyboard-shortcuts-inhibit» — manages the attachment of keyboard shortcuts and hotkeys.
  • «linux-explicit-synchronization» — Linux-specific buffer synchronization mechanism related to surfaces.
  • «pointer-gestures» — manages input from touch screens.
  • «pointer constraints» — pointer restrictions (blocking).
  • «primary-selection» — similar to X11, enables the primary clipboard (primary selection), where information is typically pasted using the middle mouse button.
  • «relative pointer events» — relative pointer events.
  • «text-input» — organization of text input.
  • «xdg-foreign» — interface for interaction with 'foreign' client surfaces.
  • «xdg-decoration» — rendering of window decorations on the server side.
  • «xdg-output» — additional information about video output (used for fractional scaling).
  • «xwayland-keyboard-grab» — input capture in XWayland applications.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers đŸ”„ Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster