Ultimately this needs multiple things to happen in order to make use of layer-shell
Kwin side:
- Implement kwayland-server: https://invent.kde.org/plasma/kwayland-server/-/merge_requests/67
- Implement code in kwin to position objects and match layers and scopes to existing kwin concepts: https://invent.kde.org/plasma/kwin/-/merge_requests/202
The kwin side is still usable standalone as it can allow 3rd party clients
KWindowSystem side:
- Implement an API that mimics the layer-shell client side. Taking QWindow and QScreens for surfaces and screens
- This internally would also support doing calculations on the client that would be used by the XCB backend
- Initially we might also support positioning internally and then using plasmashell protocol to do an absolute positioning?
- Somehow implement native wayland support that does positioning. This could be done through either:
- QWaylandShellIntegration (which is private API)
- Upstream native support (exposed via new public API in QtWayland)
- setting the BypassWindowManager flag so no layer shell is created.. but we need some magic to handle the buffer not being committed ahead of time
We probably want to do all of these steps with semantic popup positioning too.
Plasma:
- Store panels information semantically
- Port popups (inc kicker etc) to be actual popups with semantic relative positioning
- Create a new protocol for autohide
Misc notes:
- Plasma uses one tooltip for taskmanager previews, whilst we don't support XdgPopup's V3 that can't be moved. So we currently use Plasmashell protocol for that. Porting the panel before fixing that will bring problems.