Implement and use layer shell
Open, Needs TriagePublic

Description

Ultimately this needs multiple things to happen in order to make use of layer-shell

Kwin side:

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.
zzag updated the task description. (Show Details)Aug 21 2020, 3:32 PM
zzag added a subscriber: zzag.Aug 21 2020, 3:40 PM
daniell removed a subscriber: daniell.