Wayland client and server libraries for Liri OS.
This project includes:
- Qt-style API for Wayland clients
- Client and server extensions for screenshots, screencast, applicaion manager, task manager and output management
- XWayland support
- Screen configuration
- Qt-style API for libinput
- QPA plugin
- QtWaylandClient fullscreen shell integration
- Pluggable hardware abstraction with support for:
- DRM/KMS
Compiler requirements:
Qt >= 5.9.0 with at least the following modules is required:
And the following modules:
- qbs-shared >= 1.2.0
- libliri
- qtudev >= 1.0.0
The following modules and their dependencies are required:
- libinput >= 0.12
If you enable DRM/KMS device integration you also need:
If you enable XWayland support you also need:
Qbs is a new build system that is much easier to use compared to qmake or CMake.
If you want to learn more, please read the Qbs manual, especially the setup guide and how to install artifacts from the installation guide.
From the root of the repository, run:
qbs setup-toolchains --type gcc /usr/bin/g++ gcc
qbs setup-qt /usr/bin/qmake-qt5 qt5
qbs config profiles.qt5.baseProfile gcc
Then, from the root of the repository, run:
qbs -d build -j $(nproc) profile:qt5 # use sudo if necessary
To the qbs
call above you can append additional configuration parameters:
modules.lirideployment.prefix:/path/to/prefix
where most files are installed (default:/usr/local
)modules.lirideployment.dataDir:path/to/lib
where data files are installed (default:/usr/local/share
)modules.lirideployment.libDir:path/to/lib
where libraries are installed (default:/usr/local/lib
)modules.lirideployment.qmlDir:path/to/qml
where QML plugins are installed (default:/usr/local/lib/qml
)modules.lirideployment.pluginsDir:path/to/plugins
where Qt plugins are installed (default:/usr/local/lib/plugins
)modules.lirideployment.qbsModulesDir:path/to/qbs
where Qbs modules are installed (default:/usr/local/share/qbs/modules
)
See lirideployment.qbs for more deployment-related parameters.
You can also specify the following options:
products.kms.condition:false
: Do not build KMS EGL device integration.products.lirixwaylandplugin.condition:false
: Do not build XWayland support.products.fullscreen-shell.condition:false
: Do not build fullscreen-shell integration.products.lirieglfs.condition:false
: Do not build QPA plugin.
The liri QPA plugin supports different graphics hardware through EGL device integration plugins.
The environment variables that can influence the QPA plugin are the same as those of eglfs.
Qt 5.2 introduced logging categories and Liri takes advantage of them to make debugging easier.
Please refer to the Qt documentation to learn how to enable them.
-
Server-side:
- liri.wlserver: Core compositor classes
- liri.wlserver.qml: Liri.WaylandServer QML plugin
- liri.wlserver.outputmanagement: The liri_outputmanagement protocol
- liri.wlserver.gtkshell: The gtk_shell protocol
- liri.wlserver.gtkshell.trace: The gtk_shell protocol trace
- liri.wlserver.screencaster: The liri_screencaster protocol
- liri.wlserver.screenshooter: The liri_screenshooter protocol
- liri.wlserver.taskmanager: The liri_windows
- liri.xwayland: xwayland
- liri.xwayland.trace: xwayland protocol trace
-
Client-side:
- liri.wlclient.registry: Registry
- liri.wlclient.shmpool: Shared memory pool
- liri.wlcient.cursortheme: Cursor theme
- liri.wlclient.fullscreenshell: Full screen shell
-
Platform:
- liri.qpa.deviceintegration: Device integration
- liri.qpa.input: Input management on device integration plugins
-
EGL Device Integrations:
- liri.qpa.kms: KMS/DRM EGL device integration
- liri.qpa.vthandler: Vt handler
Licensed under the terms of the GNU General Public License version 3.