hawaii-desktop / greenisland

UNMAINTANED, please go to https://github.com/lirios/wayland
https://liri.io
GNU General Public License v2.0
75 stars 9 forks source link

Green Island

GitHub release GitHub issues IRC Network

Green Island provides a full blown Wayland compositor for QtQuick as well as pluggable hardware abstraction, extensions, tools and a Qt-style API for Wayland clients.

The name comes from Kure Atoll, Hawaii.

It is primarily developed for the Hawaii desktop environment, however it can be used by any desktop environment that wish to implement its compositor by using QML or for shells deeply integrated with the compositor in the same process.

Overview

Green Island includes:

A QtWaylandCompositor API copy is available here and it's built as one of the Green Island libraries until the upstream code will be stable, feature complete and available on some distributions (Fedora and ArchLinux are the main targets here because they are pretty up to date). Relying on an always changing API that is not available on distros made the development harder in the past, to overcome this issue it has been decided to ship a copy here until the requirements listed above are not met. Once the time will come we'll remove the copy here and just link to the official library.

The server-side API extends QtWaylandCompositor with additional features needed by any real world Wayland compositor.

Green Island offers multiple screen support and it also implements specific protocols such as xdg-shell, gtk-shell and those for Plasma 5.

Additional Wayland protocols for shells built with Green Island are provided, such as greenisland_applications and greenisland_windows for task managers.

Also include a launcher that executes the compositor on different hardware, a screencaster protocol and command line application, plus a minimal Wayland compositor and shell written with QML.

License

Licensed under either of the following licenses:

Dependencies

Compiler requirements:

Qt >= 5.6.0 with at least the following modules is required:

The following modules and their dependencies are required:

Optional dependencies:

If you enable DRM/KMS device integration you also need:

If you enable Broadcom VideoCore device integration you also need:

If you enable Vivante device integration you also need:

If you enable XWayland support you also need:

Build and installation

Building Green Island is a piece of cake.

Assuming you are in the source directory, just create a build directory and run cmake:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/hawaii ..

To do a debug build the last command can be:

cmake -DCMAKE_INSTALL_PREFIX=/opt/hawaii -DCMAKE_BUILD_TYPE=Debug ..

To do a release build instead it can be:

cmake -DCMAKE_INSTALL_PREFIX=/opt/hawaii -DCMAKE_BUILD_TYPE=Release ..

If not passed, the CMAKE_INSTALL_PREFIX parameter defaults to /usr/local. You have to specify a path that fits your needs, /opt/hawaii is just an example.

The CMAKE_BUILD_TYPE parameter allows the following values:

System-wide installation

Those who want to perform a system-wide installation, such as package maintainers, should pass different arguments to cmake:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DKDE_INSTALL_USE_QT_SYS_PATHS=ON ..

Feel free to choose whatever CMAKE_BUILD_TYPE value you desire.

Configuration arguments

Installation

It's really easy, it's just a matter of typing:

make install

from the build directory.

Notes

Environment variables

Qt Platform Abstraction

Green Island leverages the Qt Platform Abstraction available since Qt 5 to run the compositor without another windowing system such as Wayland or X11. The "greenisland" QPA plugin has support for different hardware through EGL device integration plugins.

There are a number of environment variables that can influence the QPA plugin:

Logging categories

Qt 5.2 introduced logging categories and Hawaii takes advantage of them to make debugging easier.

Please refer to the Qt documentation to learn how to enable them.

Available categories