i3-compatible Wayland compositor
Find a file
Tim Jochen Kicker 81c31b0c4d swaybar/tray: replace icon lookup with libsfdo
Drops the in-tree icon theme parser and lookup logic in favor of
libsfdo-icon, which implements the icon theme spec.

Absolute icon paths are handled in swaybar itself with an access()
probe, since libsfdo intentionally doesn't deal with them. Pixmap
fallback still kicks in if load_image() fails on the absolute path.

KDE's IconThemePath is honored via sfdo_icon_theme_load_from() with
a per-SNI override theme that gets dropped when the property changes.

The min/max size cache per SNI is replaced by re-lookup when the
rendered size changes; libsfdo caches the parsed theme internally
and reads gtk's icon-theme.cache files, so this is cheap.

Theme switching at runtime is preserved via a new
tray_reload_icon_theme() called from parse_bar_config(). The old
code worked here implicitly because all themes were preloaded.

Closes: https://github.com/swaywm/sway/issues/8607
2026-05-06 00:03:49 +02:00
.builds swaybar/tray: replace icon lookup with libsfdo 2026-05-06 00:03:49 +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 swaybar/tray: replace icon lookup with libsfdo 2026-05-06 00:03:49 +02:00
protocols protocols: Bump vendored wlr-protocols 2026-02-24 15:34:20 +01:00
sway tree/workspace: fix crash on dragging container to workspace edge 2026-04-26 16:31:54 +02:00
swaybar swaybar/tray: replace icon lookup with libsfdo 2026-05-06 00:03:49 +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 swaybar/tray: replace icon lookup with libsfdo 2026-05-06 00:03:49 +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.