i3-compatible Wayland compositor
Find a file
Michael Weiser eeac0aa170 input: Add support for keyboard shortcuts inhibit
Adding support for the keyboard shortcuts inhibit protocol allows remote
desktop and virtualisation software to receive all keyboard input in
order to pass it through to their clients so users can fully interact
the their remote/virtual session. The software usually provides its own
key combination to release its "grab" to all keyboard input. The
inhibitor can be deactivated by the user by removing focus from the
surface using another input device such as the pointer.

Use support for the procotol in wlroots to add support to sway. Extend
the input manager with handlers for inhibitor creation and destruction
and appropriate bookkeeping. Attach the inhibitors to the seats they
apply to to avoid having to search the list of all currently existing
inhibitors on every keystroke and passing the inhibitor manager around.
Add a helper function to retrieve the inhibitor applying to the
currently focused surface of a seat, if one exists.

Extend bindsym with a flag for bindings that should be processed even if
an inhibitor is active. Conversely this disables all normal shortcuts if
an inhibitor is found for the currently focused surface in
keyboard::handle_key_event() since they don't have that flag set. Use
above helper function to determine if an inhibitor exists for the
surface that would eventually receive input.

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
2020-03-11 23:51:37 -04:00
.builds Remove rootston from build manifests 2019-08-09 09:59:44 +09:00
.github Update .github/FUNDING.yml 2019-10-11 19:36:58 -04:00
assets License wallpapers as CC-0 2019-12-16 14:35:58 -05:00
client Rename symbol set_cloexec to sway_set_cloexec, remove duplicates. 2019-11-01 12:41:08 -04:00
common common/log: bump POSIX version used after e81d9fde66 2020-03-07 12:05:51 +01:00
completions Add missing swaymsg completions 2019-03-08 15:28:35 -05:00
contrib treewide: fix typos 2020-02-18 21:53:57 +01:00
include input: Add support for keyboard shortcuts inhibit 2020-03-11 23:51:37 -04:00
protocols Add support for wlr-output-power-management-unstable-v1 2020-02-26 16:26:13 +01:00
security.d delete references to swaygrab 2018-07-30 16:24:46 +01:00
sway input: Add support for keyboard shortcuts inhibit 2020-03-11 23:51:37 -04:00
swaybar Only destroy swaybar surface via ipc when needed 2020-02-27 15:34:49 +01:00
swaymsg Add adaptive_sync_status to output IPC reply 2020-03-07 00:32:04 +01:00
swaynag swaynag: Add multi-seat support 2020-01-05 19:57:05 +01:00
.clang-format Update .clang-format - not entirely usable yet 2017-01-10 23:30:34 -05:00
.editorconfig Create .editorconfig 2016-07-04 14:12:32 +02:00
.gitignore Allocate minimum size necessary in pango text functions. (#3473) 2019-01-20 15:03:30 +01:00
config.in Docs: explain why menu command should be passed to sway 2020-01-13 21:36:08 -05:00
CONTRIBUTING.md CONTRIBUTING.md: mention tab width for line length 2019-01-14 19:46:54 +01:00
ISSUE_TEMPLATE.md Add Firefox note to ISSUE_TEMPALTE.md 2019-05-06 15:32:37 -04:00
LICENSE MIT license 2017-01-06 13:45:48 -05:00
meson.build Update version to 1.4 2020-01-22 20:40:37 +01:00
meson_options.txt Set version in project file 2019-02-05 14:32:05 +01:00
README.de.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.dk.md add danish README 2020-01-27 11:31:41 -07:00
README.es.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.fr.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.ja.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.md add danish README 2020-01-27 11:31:41 -07:00
README.nl.md Added Dutch translation of README 2019-07-17 12:36:52 -04:00
README.pl.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.pt.md fix typo 2020-02-04 19:02:27 +01:00
README.ru.md Add Russian translation of the README 2019-09-09 19:09:57 +03:00
README.uk.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.zh-CN.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.zh-TW.md Add Chinese (zh-TW) translation of README 2019-12-30 09:45:06 +01:00
sway.desktop Update language in sway.desktop & sway(1) 2019-03-10 15:09:52 -04:00

sway

English - 日本語 - Français - Українська - Español - Polski - 中文-简体 - Deutsch - Nederlands - Русский - 中文-繁體 - Português - Danish

sway is an i3-compatible Wayland compositor. Read the FAQ. Join the IRC channel (#sway on irc.freenode.net).

If you'd like to support sway development, please contribute to SirCmpwn's Patreon page.

Release Signatures

Releases are signed with B22DA89A and published on GitHub.

Installation

From Packages

Sway is available in many distributions. Try installing the "sway" package for yours. If it's not available, check out this wiki page for information on installation for your distributions.

If you're interested in packaging sway for your distribution, stop by the IRC channel or shoot an email to sir@cmpwn.com for advice.

Compiling from Source

Install dependencies:

  • meson *
  • wlroots
  • wayland
  • wayland-protocols *
  • pcre
  • json-c
  • pango
  • cairo
  • gdk-pixbuf2 (optional: system tray)
  • scdoc (optional: man pages) *
  • git *

*Compile-time dep

Run these commands:

meson build
ninja -C build
sudo ninja -C build install

On systems without logind, you need to suid the sway binary:

sudo chmod a+s /usr/local/bin/sway

Sway will drop root permissions shortly after startup.

Configuration

If you already use i3, then copy your i3 config to ~/.config/sway/config and it'll work out of the box. Otherwise, copy the sample configuration file to ~/.config/sway/config. It is usually located at /etc/sway/config. Run man 5 sway for information on the configuration.

Running

Run sway from a TTY. Some display managers may work but are not supported by sway (gdm is known to work fairly well).