- Qt 5.15
- Qt Wayland Compositor
- Qt 5.15.18 Reference Documentation

# Qt Wayland Compositor

The Qt Wayland Compositor is a module that provides convenient and powerful QML and C++ APIs for developing custom display servers based on the Wayland protocol. The display server, often called a compositor, displays content from client applications that support the Wayland protocol.

Wayland's design philosophy is to keep the core protocol simple and minimal. Developers can then expand on this core protocol with use-case-specific extensions. Qt Wayland Compositor supports many common extensions by default, and also has APIs to enable the creation of new, custom extensions.

Typically, a compositor written with Qt Wayland Compositor becomes a subsystem inside a larger application manager process. Qt Wayland Compositor provides the APIs to communicate with clients and display their content on the screen. The QML APIs contain high-level APIs that easily integrate with the rest of Qt, enabling convenient animations, effects, and UI through Qt Quick. There are also C++ APIs available - if you need more low-level access.

An application manager would typically implement additional features such as application life cycle, virtual keyboard input, security, and Inter-Process Communication (IPC). Qt provides the APIs that can be used to develop the remaining parts of an application manager in other modules. The Qt Automotive Suite provides Qt Application Manager, which is a complete application manager that includes a compositor developed using Qt Wayland Compositor.

For more information on Wayland, see Wayland and Qt.

## Features of Qt Wayland Compositor

The Qt Wayland Compositor includes features necessary to create a compositor:

- A QML API to display and manipulate client content, fully integrated with all the features in Qt Quick.
- A C++ API for low-level access and control.
- Support for common extensions, including XDG Shell and IVI Application.
- APIs to easily expand the support for custom extensions.

## Environment Variables and Command-line Arguments

The Qt Wayland Compositor recognizes the following environment variables and command-line arguments:

- Environment variables:
  - QT_WAYLAND_HARDWARE_INTEGRATION Selects the hardware integration plugin to use.
  - QT_WAYLAND_CLIENT_BUFFER_INTEGRATION Selects the client buffer integration plugin to use.
  - QT_WAYLAND_SERVER_BUFFER_INTEGRATION Selects the server integration plugin to use.
- Command-line arguments:
  - `--wayland-socket-name` Overrides the default socket name used for communicating with clients.

## Examples

Take a look at the Qt Wayland Compositor Examples to learn how these APIs can be used to write custom compositors.

## API Reference

The Qt Wayland Compositor can be used from C++ or QML:

- Qt Wayland Compositor QML Types
- Qt Wayland Compositor C++ Classes

## Licenses and Attributions

Qt Wayland Compositor and the Qt Wayland integration plugin are available under commercial licenses from The Qt Company.

In addition, Qt Wayland Compositor is available under the GNU General Public License, version 3, while the Qt Wayland integration plugin is available under the GNU Lesser General Public License, version 3 or the GNU General Public License, version 2.

See Qt Licensing for further details.

Qt Wayland Compositor and the Qt Wayland integration plugin use protocol definitions under following permissive licenses:

Wayland EGLStream Controller Protocol, version 1.1.1 | MIT License
Wayland Fullscreen Shell Protocol, version unstable v1 | MIT License
Wayland IVI Extension Protocol, version 1.9.1 | MIT License
Wayland Linux Dmabuf Unstable V1 Protocol, version unstable v1, version 3 | MIT License
Wayland Primary Selection Protocol, version 1 | MIT License
Wayland Protocol, version 1.16.0 | MIT License
Wayland Scaler Protocol, version 2 | MIT License
Wayland Tablet Protocol, version unstable v2, version 1 | MIT License
Wayland Text Input Protocol, version unstable v2 | HPND License
Wayland Viewporter Protocol, version 1 | MIT License
Wayland XDG Output Protocol, version unstable v1, version 3 | MIT License
Wayland XDG Shell Protocol, version 1.18 | MIT License
Wayland xdg-decoration Protocol, version unstable v1, version 1 | MIT License