Go to file
David Edmundson 697c747c58 Synchronise client driven resizing
Qt's resizing is inherently synchronous. When an application calls
QWindow::setGeometry with a new size, we expect it to make that resize.
An expose event of the requested size will be generated.

Wayland is by default async, a client requests a size, and then will be
configured to that size, or potentially another size.

The simplest way to map the two APIs is to roundtrip when the client
wants to resize. This way we can guarantee that a call to
`setGeometry();  update()` will have the server configured size before
the paint.

In practice it's still not perfect due to other issues, but at least
will sort itself out within a frame.
2024-02-14 12:08:23 +00:00
.reuse Include reuse metadata 2021-04-08 18:26:32 +02:00
LICENSES Align layershell-qt with the rest of KDE frameworks at a licence level 2024-02-12 14:15:06 +00:00
src Synchronise client driven resizing 2024-02-14 12:08:23 +00:00
tests Skip empty parts for stringToEnum template 2023-09-26 17:25:20 +08:00
.gitignore Mark .gitignore file as non-copyrightable 2021-05-21 15:35:56 +02:00
.gitlab-ci.yml GIT_SILENT: Port to new CI template 2023-11-19 16:20:06 +01:00
.kde-ci.yml Add wayland to third-party deps 2023-05-05 10:22:39 +02:00
CMakeLists.txt Update version number for 6.0.80 2024-01-10 14:04:04 +00:00
LayerShellQtConfig.cmake.in We use Qt6/kf6 only 2023-06-26 20:42:27 +02:00
metainfo.yaml Make fully reuse compliant 2022-08-23 21:52:18 +02:00
README.md Add bugzilla component 2021-04-07 02:46:47 +02:00
README.md.license SPDX, use .license on files where it's awkward to get it inside 2021-04-06 14:32:51 +02:00

LayerShellQt

This component is meant for applications to be able to easily use clients based on wlr-layer-shell.

Here you can read about what the protocol does and how shells work: https://drewdevault.com/2018/07/29/Wayland-shells.html

Report issues in this component here: https://bugs.kde.org/enter_bug.cgi?product=layer-shell-qt

Usage

CMake

To use it from a CMake project you'll need to:

find_package(LayerShellQt REQUIRED)

Then it will offer us the target LayerShellQt::Interface that we can link to to get access to this framework.

C++

You can use LayerShellQt::Shell::useLayerShell(); to enable it before any clients are created.

The class LayerShellQt::Window will give us access to surface-specific settings. We can get it by using LayerShellQt::Window::get(window) on whatever QWindow we need to tweak.