Skip to content

Repository files navigation

The Compositor Modules wide logo

The Compositor Modules (COMO) are a robust and versatile set of libraries
to create compositors for the Wayland and X11 windowing systems on Linux.


Badge CIBadge CodecovBadge LicenseBadge SemVer
Badge REUSEBadge AURBadge Matrix

Features

Compatibility
The Compositor Modules currently integrate primarily with KDE's Plasma Desktop but can be used with other desktop environments as well. This cross-desktop interoperability will be expanded upon in the future.

Ease of Use
With The Compositor Modules a Wayland compositor can be created with a handful of lines only. See our MVP Minico for an example of that.

Customizability
The Compositor Modules make heavy use of C++ templates. This allows consumers to replace many functions and types with customized versions when required.

Wayland Feature Table

X11 support is feature complete. For the current state of Wayland the following table provides a detailed look at available and planned features.

FeatureAvailablePlanned
CompositionWith OpenGL or in software
Input methodstext-input v2v3, input-method v2
Primary selectionprimary-selection protocol
XwaylandOptional at run and compile time
VRDRM lease protocol support
Adaptive sync / VRRVia wlroots backend and protocol
Present feedbackpresentation-time protocol support
CSD and SSDCSD by convention and KWin SSD
Windowing logic☑️Floating WM; optional rules, scriptsTiling WM functions
Effects☑️KWin effects pluginsPlugin system similar to Wayfire
Desktop shells☑️KDE Plasma, wlr-layer-shellwlr-foreign-toplevel-management
Lockscreen☑️KDE Plasma lockscreen integrationsession-lock protocol
Fractional scaling☑️Downscaling for Wayland surfacesXwayland, factional-scale protocol
Output control☑️wlr-output-managementMirroring
Configuration☑️KWin config files via KConfigGeneric API independent of KDE
Video captureUsing xdg-portals and pipewire
HDRWhen protocol lands or KWin-like
Direct scanoutWith more wlroots render integration
Vulkan renderWith more wlroots render integration
Graphic tabletstablet protocol
MultiseatFull support, but low priority
C++20 modulesWhen compiler support improves
No Qt/KDE linkingFor a subset of features

Tenets

Stability and Robustness

This is achieved through upholding strict development standards and deploying modern development methods to prevent regressions and code smell.

Collaboration With Downstream and Upstream Partners

We want to overcome antiquated notions on community division and work together on the best possible Linux graphics platform instead.

Value the Knowledge of Experts and the Curiosity of Beginners

Well defined and transparent decision processes enable expert knowledge to proliferate and new contributors to easily find help on their first steps.

Installation

The Compositor Modules can be compiled from source easily through CMake presets. To use the preset for a release configuration building into a subdirectory build, issue from the source directory:

cmake --preset release -B build
cmake --build build

Since The Compositor Module's master branch regularly only builds against the development versions of KDE Plasma libraries, you might want to build these dependencies from source too. You can make use of the FDBuild tool to automate this process as described here.

Usage

It's easiest to link via CMake to The Compositor Modules libraries that you want to make use of and then create their central platform types from your main function to launch the compositor session.

Minico as a minimal example and the Plasma test binaries as a more complex one demonstrate this in a straightforward way.

Contact

Issue tickets can be created for feature requests, bug reports or general discussions. For direct communication join our Matrix room.

About

The Compositor Modules provide means to create Wayland and X11 compositors

Topics

Resources

Contributing

Stars

104 stars

Watchers

5 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages