Check if the app that requested a token has provided a valid input
serial and a focused surface. Downgrade activation request to urgency
otherwise.
This is mostly in line with what other Wayland compositors decided to
do, and offers a better security than the original logic.
We tried to synchronize layer shell popups with the parent layer shell
on commits, but this is subtly wrong because we would only update
the position for one layer shell that was committed, but not any other
layer that might be affected. By moving handling to the scene descriptor
we can iterate all popups and ensure they are synchronized.
Add a new type of ipc subscription so clients can be notified of changes
in keyboard shortcuts inhibitors. This allows to react to those events
by e.g. changing container properties (title, ...) to notify the user
about this circumstance (add marker, change color, ...). For this reason
the event includes information about the affected container as well.
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
Add a new type of ipc subscription so clients can be notified of changes
in idle inhibitors. This allows to react to those events by e.g.
changing container properties (title, ...) to notify the user about this
circumstance (add marker, change color, ...). For this reason the event
includes information about the affected container as well.
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
Extend the container description in IPC JSON to include keyboard
shortcut inhibitor state so it can be evaluated by clients. This
requires adding a new function that can retrieve a keyboard shortcuts
inhibitor applying to a specific surface no matter what seat it is
attached to.
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
7e69a7076f ("Drop wl_drm") has dropped wl_drm, however a lot of
software wasn't quite ready for this (Xwayland, libva, amdvlk).
Keep wl_drm disabled by default to pressure the wl_drm phase-out,
but add a -Dlegacy-wl-drm flag for users to restore the previous
behavior in the meantime.
References: https://github.com/swaywm/sway/issues/7897
Across a wayland compositor, there are multiple shells: It can be
a toplevel, or a layer_shell, or even something more meta like a drag
icon or highlight indicators when dragging windows around.
This object lets us store values that represent these modes of operation
and keep track of what object is being represented.
Since output layout is destroyed when the wayland display is destroyed
we run into a destroy listener order problem: Either the display starts
destroying the outputs first, in which case we're good: The existing
handling will clean up. However, things go wrong if the display decides
to destroy the output layout first. In this case, sway will hold
invalid references to the output layout as part of each output so that
when it finally goes to destroy them, sway will dereference destroyed
output layout bits.
Ref: https://github.com/swaywm/sway/pull/6844#issuecomment-1843599513