commands: Add per-view shortcuts_inhibitor command

Add a separate per-view shortcuts_inhibitor command that can be used
with criteria to override the per-seat defaults. This allows to e.g.
disable shortcuts inhibiting globally but enable it for specific,
known-good virtualization and remote desktop software or, alternatively,
to blacklist that one slightly broken piece of software that just
doesn't seem to get it right but insists on trying.

Add a flag to sway_view and handling logic in the input manager that
respects that flag if configured but falls back to per-seat config
otherwise. Add the actual command but with just enable and disable
subcommands since there's no value in duplicating the per-seat
activate/deactivate/toggle logic here. Split the inhibitor retrieval
helper in two so we can use the backend half in the command to retrieve
inhibitors for a specific surface and not just the currently focused
one. Extend the manual page with documentation of the command and
references to its per-seat sibling and usefulness with criteria.

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
This commit is contained in:
Michael Weiser 2020-03-12 22:10:04 +01:00 committed by Brian Ashworth
parent 2473cac32c
commit 0f11aa037a
10 changed files with 103 additions and 9 deletions

View file

@ -304,6 +304,17 @@ set|plus|minus <amount>
Shows a window from the scratchpad. Repeatedly using this command will
cycle through the windows in the scratchpad.
*shortcuts inhibitor* enable|disable
Enables or disables the ability of clients to inhibit keyboard
shortcuts for a view. This is primarily useful for virtualization and
remote desktop software. It affects either the currently focused view
or a set of views selected by criteria. Subcommand _disable_
additionally deactivates any active inhibitors for the given view(s).
Criteria are particularly useful with the *for_window* command to
configure a class of views differently from the per-seat defaults
established by the *seat* subcommand of the same name. See
*sway-input*(5) for more ways to affect inhibitors.
*split* vertical|v|horizontal|h|toggle|t
Splits the current container, vertically or horizontally. When _toggle_ is
specified, the current container is split opposite to the parent