i3-compatible Wayland compositor
Find a file
Michael Weiser d4482400f1 swaybar: Implement pointer gesture swipe support
After previous commits, swaybar bindsym statements would already accept
the new pseudo button names for swipe gestures. Also, sway itself would
not handle swipes when executed while the pointer was above a bar.

Add the necessary handling for three- and four-finger swipe pointer
gestures in swaybar. Cancel ongoing swipes when the pointer leaves the
bar as to not confuse successive swipes with focus changes inbetween
them.  Add the pointer gestures protocol in client and server variants
to the meson build file to make the necessary definitions available.
Bind to the global interface on startup, instantiate a swipe gesture and
add a listener on seat setup as well as destroy it on seat shutdown.

Extend the sway-bar manual page as necessary.

Test-plan:
- add workspace switching to config like so:

bar bar-0 {
        swaybar_command swaybar

        bindsym release SWIPE_3_LEFT workspace prev_on_output
        bindsym release SWIPE_4_RIGHT workspace next_on_output
        bindsym --release SWIPE_3_LEFT exec yad --text foo
        bindsym --release SWIPE_4_UP exec yad --text bar
}

- start sway and open two workspaces
- position pointer above a bar surface
- switch back and forth using horizontal three- and four-finger swipes,
  observing that different finger counts are necessary per direction
- observe that the --release binding for left swipes is ignored because
  there is an on-press binding already
- observe that the --release binding for upward swipes is honoured
  because there is no on-press binding
- move pointer away from bar surface
- observe that switching by swipe no longer works

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
2021-08-05 20:10:07 +02:00
.builds ci: make Meson warnings fatal 2021-06-30 13:37:00 +02:00
.github/ISSUE_TEMPLATE Fix IRC links in READMEs and templates 2021-05-26 08:25:13 +02:00
assets License wallpapers as CC-0 2019-12-16 14:35:58 -05:00
client cairo: Replace <cairo/cairo.h> by <cairo.h> 2021-05-10 10:28:32 +02:00
common input: Move get_current_time_msec in from util 2021-06-23 09:55:36 +02:00
completions i3-compat: add GET_BINDING_STATE IPC command 2020-06-14 00:55:14 -04:00
contrib grimshot: Exit 1 on cancellation 2021-07-10 13:03:42 +02:00
include swaybar: Implement pointer gesture swipe support 2021-08-05 20:10:07 +02:00
protocols swaybar: Implement pointer gesture swipe support 2021-08-05 20:10:07 +02:00
sway swaybar: Implement pointer gesture swipe support 2021-08-05 20:10:07 +02:00
swaybar swaybar: Implement pointer gesture swipe support 2021-08-05 20:10:07 +02:00
swaymsg Make command line option lists const 2021-02-04 09:49:06 +01:00
swaynag swaynag: adds option to set wayland shell layer 2021-06-17 11:47:49 +02:00
.clang-format Update clang format to better match existing code 2021-06-22 20:21:45 +02: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 config.in: change terminal emulator to foot 2021-05-06 20:52:51 +02:00
CONTRIBUTING.md Fix IRC links in READMEs and templates 2021-05-26 08:25:13 +02:00
LICENSE MIT license 2017-01-06 13:45:48 -05:00
meson.build Add meson options to enable/disable swaybar and swaynag 2021-07-21 18:24:09 +02:00
meson_options.txt Add meson options to enable/disable swaybar and swaynag 2021-07-21 18:24:09 +02:00
README.de.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.dk.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.es.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.fr.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.hu.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.ja.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.ko.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.md Change 'Danish' to 'Dansk' in README 2021-06-30 16:16:53 +02:00
README.nl.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.pl.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.pt.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.ro.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.ru.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.tr.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.uk.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.zh-CN.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02:00
README.zh-TW.md readme: switch back to IRC web client 2021-05-26 22:09:05 +02: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 - Dansk - 한국어 - Română - Magyar - Türkçe

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

Release Signatures

Releases are signed with E88F5E48 and published on GitHub.

Installation

From Packages

Sway is available in many distributions. Try installing the "sway" package for yours.

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

Check out this wiki page if you want to build the HEAD of sway and wlroots for testing or development.

Install dependencies:

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

*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).