domenica 22 febbraio 2015

What's coming to Green Island: part 2


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.