i3-compatible Wayland compositor
Find a file
Scott Leggett efa5ee7947
input/seat: prevent layer surfaces from focusing under session lock
When the screen is locked, `server.session_lock.lock` is active and
keyboard input must be forced to the screen lock surface. While
`seat_set_focus` checked for an active session lock and redirected
focus, `seat_set_focus_layer` was missing the same check. This allowed
layer surfaces to steal keyboard input while the screen lock was active.

This commit adds the missing session check to `seat_set_focus_layer` to
prevent layer surfaces from being focused when the screen is locked.
2026-06-13 22:28:08 +08:00
.builds build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
.github/ISSUE_TEMPLATE github: don't truncate debug logs 2021-10-17 21:28:51 +02:00
assets License wallpapers as CC-0 2019-12-16 14:35:58 -05:00
client Define _POSIX_C_SOURCE globally 2024-02-23 17:43:19 +03:00
common common/pango: use pangocairo directly instead of cairo_create(NULL) 2026-03-21 11:18:26 +01:00
completions build: move completions to separate file 2022-11-28 18:51:45 -05:00
include container: Move foreign toplevel enter/leave events to view 2026-04-12 13:46:38 +02:00
protocols protocols: Bump vendored wlr-protocols 2026-02-24 15:34:20 +01:00
sway input/seat: prevent layer surfaces from focusing under session lock 2026-06-13 22:28:08 +08:00
swaybar swaybar/tray: fix heap buffer overflow in read_pixmap 2026-06-03 00:41:40 +02:00
swaymsg Add features.hdr to output IPC response 2025-07-09 01:25:11 +02:00
swaynag swaynag/main: free config_path 2025-11-20 12:31:30 +01:00
.editorconfig Create .editorconfig 2016-07-04 14:12:32 +02:00
.gitignore gitignore: Ignore clangd-generated directory .cache/ 2023-10-23 11:05:08 +02:00
.mailmap Add a .mailmap file 2023-03-26 23:22:30 +02:00
config.in config.in: bind XF86Audio* keycodes to playerctl 2025-06-09 15:56:41 +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 build: bump version to 1.13-dev 2026-03-26 16:30:37 +01:00
meson_options.txt build: drop xwayland option 2024-05-21 11:44:39 -04:00
README.ar.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.az.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.cs.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.de.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.dk.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.es.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.fr.md Fix typo in README.fr.md 2026-05-14 09:08:50 +02:00
README.ge.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.gr.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.hi.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.hu.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.ir.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.it.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.ja.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.ko.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.nl.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.no.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.pl.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.pt.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.ro.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.ru.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.sr.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.sv.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.tr.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.uk.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.zh-CN.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
README.zh-TW.md build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
release.sh release.sh: read meson-rewrite output from stdout 2024-10-31 10:31:38 +01:00
sway.desktop Add the DesktopNames key to the sway.desktop session file 2025-03-08 12:56:03 +01:00

sway

English - عربي - Azərbaycanca - Česky - Deutsch - Dansk - Español - Français - ქართული - Ελληνικά - हिन्दी - Magyar - فارسی - Italiano - 日本語 - 한국어 - Nederlands - Norsk - Polski - Português - Română - Русский - Српски - Svenska - 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.

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 *
  • pcre2
  • json-c
  • pango
  • cairo
  • gdk-pixbuf2 (optional: additional image formats for system tray)
  • swaybg (optional: wallpaper)
  • scdoc (optional: man pages) *
  • git (optional: version info) *

* Compile-time dep

Run these commands:

meson setup build/
ninja -C build/
sudo ninja -C build/ install

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 or from a display manager.