At the moment, we rely on placeholder output getting created, but there
are cases where it's desired to spin kwin with virtual outputs so you
could take screenshots and things as such.
As explained in [1], WL_SURFACE_ID is racy because wayland aggressively
reuses object ids. The xwayland-shell-v1 protocol intends to fix that by
two things:
* associating a serial number with each X11 window. This is to avoid
potential XID reuse
* referring to the wayland surface by the wl_surface rather than
specifying an object id
Unfortunately, we will have to maintain both legacy WL_SURFACE_ID and
WL_SURFACE_SERIAL for quiet some time until most instances of Xwayland
support the xwayland-shell-v1 protocol [2].
[1] https://gitlab.freedesktop.org/xorg/xserver/-/issues/1157
[2] https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/163
The main motivation behind this change is to allow setting the cursor
per output, which eases up implementing things such as cursor output layers.
It also has another advantage - output related code is more
encapsulated. Furthermore, we could decouple output backends from Cursor.
We need to completely renegotiate stream parameters in case of window
size gets changed, otherwise no renegotiation will happen and clients
will not accommodate to our changes.
Fixes: https://github.com/obsproject/obs-studio/issues/7875
in a CI context the paths are mutable between installation and use
and as such the permission checks can just not ever work. for use
in such scenarios allow completely disabling the permission checks
* Allow to do quick tiling to custom tile geometries, windows will be snapped to tiles when dragged with the shift modifier pressed.
* Tile geometries are screen specific.
* The global shortcut Meta+T will trigger a fullscreen configuration ui as a QML effect for the tiles which allows to add, remove and resize tiles
* UI and behavior is a bit similar to the Windows Fancy Zones addon: https://docs.microsoft.com/en-us/windows/powertoys/fancyzones
* Its main scope is to help the workflow with very big monitors, especially ultra wide ones, where most application don't make sense maximized to the full screen (eventually also support games to be full screened to a given tile instead of the whole screen)
* it should get also some bindings for scripting, as its ain goal is not to replicate other popular tiling window managers, but should give the popular kwin tiling scripts to have a more robust infrastructure
* it will eventually get support for a set of predefined layouts, but this is for a second phase
BUG: 438788
The previous logic would set `defaults` to the last found group.
Since a touchpad is a pointer, it would set `defaults` to point
to `[Libinput][Defaults][Pointer]`, and thus the next clause would
try to find `[Libinput][Defaults][Pointer][Touchpad]`, instead of the
expected `[Libinput][Defaults][Touchpad]`. That is, only if a default
was set for Pointer.
Signed-off-by: Samuel Dionne-Riel <samuel@dionne-riel.com>
Currently, if the pointer is locked, the wayland backend will create a
subsurface. However, when the cursor moves to one of the screen edges,
it looks weird because the xdg window geometry is computed as bounding
geometry of the main surface and its subsurfaces. However, even after
calling xdg_surface.set_window_geometry, it still looks weird because
subsurfaces are stacked above window decoration.
With the proposed change, when the pointer is locked, the wayland
backend will hide the host compositor and use the software cursor. If
the pointer is unlocked, it will go back to using host cursor.
Long term goal is to make every output have its own cursor to make
output layer logic simpler.