scripts: Add initial bits of QML-based present windows effect
The main problem with the desktop grid and the present windows effects is the complexity. They are too big and fragile. Adding new features can be difficult and it can also result in unexpected bugs.
Another motivation behind this change is to reduce the number of complex effects, which is needed to decouple the effects system from the rendering machinery.
This change introduces the initial bits of a QML based implementation of the present windows effect. Implementing a full-pledged replacement for the desktop grid and the present windows effects is not the main goal right now. There're still quite a few infrastructure issues that have to be fixed. Having a bare bone implementation of pw should help with that (for testing purposes).
The script creates a window per every screen. The main idea behind this is to allow kwin scan out pw windows. So, QtQuick would render a frame and kwin would pass the client buffer to the display, thus omitting the compositing step. We need to change kwin's internals to add support for this operation mode.
All basic features of the present windows effect should be working in the script, e.g. keyboard navigation, left click, closing windows, etc. Code that computes window layout was taken from the present windows effect and wrapped in a qml friendly api. No significant changes to the code were made other than minor coding style fixes.
The script is hidden by default in system settings, if you want to test
[Plugins] group in kwinrc file.
This script has been developed and tested primarily on wayland, x11 is mostly untested.