Wayland-Protocols 1.35 Now Available for Release

Published package release wayland-protocols 1.35which contains a set of protocols and extensions that complement the capabilities of the base Wayland protocol and provide the capabilities necessary for building composite servers and user environments.

All protocols sequentially go through three phases – development, testing and stabilization. After completion of the development stage (category “unstable“) the protocol is placed in the branch “staging” and is 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 in “staging” is prohibited from making changes that violate compatibility, but if problems and shortcomings are identified during testing, replacement with a new significant version of the protocol or another Wayland extension is not excluded.

Advertisement

In the new version:

  • The protocol has been transferred to the stable category tablet-v2which provides tools for organizing input from graphics tablets.
  • A new protocol has been added to the “staging” category alpha-modifierallowing clients to change the level of surface transparency and outsource transparency operations to the composite server, which in turn can forward these operations to KMS.
  • A recommendation has been added to the xdg-shell protocol not to display decoration outside the geometric boundaries of the window when using a tiled window layout.

Currently, wayland-protocols includes the following stable protocols, which provide backward compatibility:

  • viewporter” – allows the client to perform scaling and trimming of surface edges on the server side.
  • presentation-time” – provides video display.
  • xdg-shell” – an interface for creating and interacting with surfaces as windows, which allows you to move them around the screen, collapse, expand, resize, 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 graphics tablets.

Protocols tested in branch “staging“:

  • drm-lease – provides the resources necessary to generate a stereo image with different buffers for the left and right eyes when outputting to virtual reality headsets.
  • ext-session-lock” – defines a means of blocking the session, for example, while the screen saver is running or the authentication dialog is displayed.
  • 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 first-level surfaces (for example, using xdg-activation, one application can switch focus to another).
  • content-type – Allows clients to provide the composite server with information about the content being displayed, which can be used to optimize content-aware behavior, such as setting specific DRM properties such as “content type”. Declared support for the following content types: none (no information about the data type), photo (output of digital photos, requiring minimal processing), video (video or animation, requires more accurate synchronization to eliminate stuttering) and game (running games, requiring output with minimal latency).
  • 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 time of inactivity.
  • tearing-control – allows you to disable vertical synchronization (VSync) with a vertical damping pulse in full-screen applications, which is used to protect against tearing during output. In multimedia applications, artifacts due to tearing are an undesirable effect, but in gaming programs, artifacts can be tolerated if dealing with them causes additional delays.
  • ext-foreign-toplevel-list – obtaining information about surfaces located at the top level, which allow you to organize windows on top of other content, for example, to connect 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 – an alternative way to customize the appearance of the cursor, based on passing a series of cursor images instead of snapping to a surface (wl_surface).
  • ext-transient-seat” – is intended for creating temporary independent sessions (seats) designed for use in conjunction 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 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 the dragging of toolbars or browser tabs with the mouse. The new protocol allows you to create detachable parts of a window, which, when dragged from this window, become new windows and can be moved on top of an 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 synchronization objects DRM (Direct Rendering Manager). 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.

Protocols being developed in the “branch”unstable“:

Advertisement

  • “fullscreen-shell” – controls work in full screen mode.
  • “input-method” – processing 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 hot keys.
  • “linux-explicit-synchronization” is a Linux-specific mechanism for synchronizing surface-bound buffers.
  • “pointer-gestures” – control from touch screens.
  • “pointer constraints” – pointer constraints (blocking).
  • “primary-selection” – by analogy with X11, ensures the operation of the primary clipboard (primary selection), information from which is usually inserted with the middle mouse button.
  • “relative pointer events” – relative pointer events.
  • “text-input” – organization of text input.
  • “xdg-foreign” – interface for interaction with the surfaces of the “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.
  • Thanks for reading:

Advertisement