i3-compatible Wayland compositor
Find a file
Claude Code e7bd3f14e5
fix(criteria): allow con_id to match workspaces
The [con_id=X] criteria selector was failing to match workspace nodes
because criteria_get_containers() only iterated through containers, not
workspaces. This broke scripts that rely on marking workspaces by their
internal ID (a pattern that works in i3).

Rename criteria_get_containers to criteria_get_nodes and extend it to
also iterate over workspaces when con_id is specified. Workspaces only
support con_id matching (not con_mark, since they don't have marks).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 14:40:26 +00: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 Rename get_current_time_msec to get_current_time_in_msec and move to util.c 2025-06-16 11:26:26 +02:00
completions build: move completions to separate file 2022-11-28 18:51:45 -05:00
include fix(criteria): allow con_id to match workspaces 2025-12-27 14:40:26 +00:00
protocols Drop org_kde_kwin_idle files 2025-11-28 09:26:17 +01:00
sway fix(criteria): allow con_id to match workspaces 2025-12-27 14:40:26 +00:00
swaybar swaybar: deduplicate mode and workspace rendering code 2025-05-25 14:48:14 +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 Add support for color-management-v1 2025-07-09 01:25:11 +02: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 build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +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.