Module wayland

Source
Available on crate feature wayland_frontend only.
Expand description

Protocol-related utilities

This module contains several handlers to manage the Wayland protocol and the clients.

§General structure

Most utilities provided in this module work in the same way:

  • A module specific *State struct will take the wayland display as argument and insert one or more globals into it through its constructor.
  • The module-State will have to be stored inside your global compositor state. (The same type you parametrized wayland_server::Display over.)
  • You need to implement a module-specific *Handler-trait for your compositor state. This implementation will be called when wayland events require custom handling.
  • Call the matching delegate_*! macro from smithay on your state to implement some required wayland_server traits.
  • If you want to remove a previously inserted global, just drop the *State.

§Provided helpers

§Core functionality

The most fundamental module is the compositor module, which provides the necessary logic to handle the fundamental component by which clients build their windows: surfaces. Following this, the shell module contains the logic allowing clients to use their surface to build concrete windows with the usual interactions. Different kind of shells exist, but in general you will want to support at least the xdg variant, which is the standard used by most applications.

Then, the seat module contains logic related to input handling. These helpers are used to forward input (such as pointer action or keystrokes) to clients, and manage the input focus of clients. Tightly coupled with it is the selection module, which handles cross-client interactions such as accessing the clipboard, or drag’n’drop actions.

The shm module provides the necessary logic for client to provide buffers defining the contents of their windows using shared memory. This is the main mechanism used by clients that are not hardware accelerated. As a complement, the dmabuf module provides support hardware-accelerated clients; it is tightly linked to the backend::allocator module.

The output module helps forwarding to clients information about the display monitors that are available. This notably plays a key role in HiDPI handling, and more generally notifying clients about whether they are currently visible or not (allowing them to stop drawing if they are not, for example).

Modules§

alpha_modifier
Implementation of wp_alpha_modifier protocol
buffer
Buffer management traits.
commit_timing
Utilities for handling the wp-commit-timing protocol
compositor
Utilities for handling surfaces, subsurfaces and regions
content_type
Implementation of wp_content_type protocol
cursor_shape
Utilities for compositor side cursor theming support
dmabuf
Linux DMABUF protocol
drm_leasebackend_drm
DRM Lease protocol
drm_syncobjbackend_drm
DRM syncobj protocol
fifo
Utilities for handling the wp-fifo protocol
foreign_toplevel_list
Foreign toplevel list
fractional_scale
Utilities for handling the wp_fractional_scale protocol
idle_inhibit
Utilities for handling the zwp_idle_inhibit protocol
idle_notify
This interface allows clients to monitor user idle status.
input_method
Utilities for input method support
keyboard_shortcuts_inhibit
Protocol for inhibiting the compositor keyboard shortcuts
output
WlOutput advertising capabilities
pointer_constraints
Protocol for confining the pointer.
pointer_gestures
Utilities for pointer gestures support
presentation
Utilities for handling the wp_presentation protocol
relative_pointer
Utilities for relative pointer support
seat
Seat global utilities
security_context
Utilities for handling the security context protocol
selection
Handler utilities for the various selection protocols.
session_lock
Utilities for handling the ext-session-lock protocol
shell
Handler utilities for the various shell protocols
shm
SHM handling helpers
single_pixel_buffer
Utilities for handling the wp_single_pixel_buffer protocol
socket
Wayland listening socket.
tablet_manager
Utilities for graphics tablet support
text_input
Utilities for text input support
viewporter
Utilities for handling the wp_viewporter protocol
virtual_keyboard
Utilities for virtual keyboard support
xdg_activation
Utilities for handling activation requests with the xdg_activation protocol
xdg_foreign
Implementation xdg_foreign protocol
xdg_system_bell
XDG System Bell
xdg_toplevel_icon
XDG Toplevel Icon
xdg_toplevel_tag
XDG Toplevel Tag
xwayland_keyboard_grabxwayland
Utilities for handling the xwayland keyboard grab protocol
xwayland_shellxwayland
Helpers for handling the xwayland shell protocol