In the previous installment I forgot to post a screenshot of multiple output windows.
Here it is:
The first big chunk of code for multiple output support was recently merged into the qtwayland dev branch, but there is one more patch that is under review now.
Now I'm gonna talk about the recent development on Green Island.
Refactoring
Green Island now has:
- a library that people can use to make their compositors reusing Green Island bits;
- an executable named "greenisland" that links to the library and loads a separate QML based home screen;
- an executable named "greenisland-launcher" that helps you run the compositor in several different environments;
- a QML plugin that provides additional components such as the SurfaceRenderer for QML based home screens;
Launcher
Green Island can run on a number of different setups: X11, Wayland, Raspberry Pi, KMS, you name it.There is now a launcher that detects where it is running, sets environment variables and runs the actual compositor accordingly.
Plugins
It's now possible to write custom home screens with QML.
The format is very simple but it might change slightly until the next iteration is released:
- the home screen is a directory containing QML files and it's placed under $XDG_DATA_DIRS/greenisland (for example /usr/share/greenisland/org.vendor.coolhomescreen/)
- the directory has a file called Compositor.qml and this is where you connect to the compositor and get events such as when a window is mapped or unmapped and create a QML window representation
xdg-shell
Green Island supports the old wl-shell protocol as well as the new xdg-shell protocol that is now required for weston and Gtk+ clients.Qt clients can also use xdg-shell but it's not the default, users need to set an environment variable to enable it.
For both protocols Green Island has its implementation which is independent from the one that comes from QtCompositor.
This allows me more freedom and frees me from the qtwayland release cycle.