1
1
mirror of https://github.com/swaywm/sway synced 2024-11-26 09:03:54 +01:00
i3-compatible Wayland compositor https://swaywm.org
Go to file
Joan Bruguera Micó f23d100747 swaybar: Emit property changes for SNI watcher
Emit property change signals for the IsStatusNotifierHostRegistered and
RegisteredStatusNotifierItems properties in StatusNotifierWatcher,
so code relying on the PropertiesChanged signal, instead of signals
such as StatusNotifierHostRegistered, can work properly.

A library that is affected by this is the libappindicator-gtk3* library
and it can cause tray icons to be missing after starting swaybar due to
a race condition, as follows:
* An application using libappindicator-gtk3 starts, e.g. nm-applet.
* Some time later, swaybar starts.
* swaybar creates the StatusNotifierWatcher.
* libappindicator-gtk3 observes the new watcher, but it sees that
  IsStatusNotifierHostRegistered=false, so it falls back to the
  Freedesktop System tray protocol.
* swaybar creates the StatusNotifierHost.
  At this point, libappindicator-gtk3 should "un-fallback" back to SNI.
  However, since swaybar does not emit the PropertiesChange signal on
  IsStatusNotifierHostRegistered, libappindicator-gtk3 doesn't get
  notified, and stays in fallback state forever.
* As a result, nm-applet will not show in the swaybar tray.

This race can be made reliable by inserting a 1-second long sleep here:
03483ff370/swaybar/tray/tray.c (L57)

(*) Note that the libappindicator-gtk3 library has been mostly replaced
    by libayatana-appindicator, which is not affected by this.
    The affected version is still used by Arch Linux, source code at:
    https://bazaar.launchpad.net/~indicator-applet-developers/libappindicator/trunk/files/298
2024-11-10 20:42:02 +01:00
.builds ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel 2024-07-14 23:19:19 +02:00
.github/ISSUE_TEMPLATE
assets
client
common
completions
include desktop/output: Expose request_modeset 2024-09-21 17:50:24 -04:00
protocols Add support for tearing-control-v1 2024-08-05 02:13:49 +02:00
sway desktop/transaction: clamp vertical border length to 0 2024-11-07 22:41:14 -05:00
swaybar swaybar: Emit property changes for SNI watcher 2024-11-10 20:42:02 +01:00
swaymsg Add support for tearing-control-v1 2024-08-05 02:13:49 +02:00
swaynag swaynag: fix null dereference on scale change 2024-11-09 02:33:48 +01:00
.editorconfig
.gitignore
.mailmap
config.in Switch default config to wmenu-run 2024-08-11 19:47:39 +02:00
CONTRIBUTING.md
LICENSE
meson_options.txt
meson.build build: avoid git repository discovery when determining version 2024-08-03 18:35:55 +02:00
README.ar.md
README.cs.md Remove language bars from remaining non-English README files 2024-10-28 14:06:01 +01:00
README.de.md
README.dk.md
README.es.md
README.fr.md
README.ge.md
README.gr.md
README.hi.md
README.hu.md
README.ir.md
README.it.md
README.ja.md
README.ko.md
README.md
README.nl.md
README.no.md
README.pl.md
README.pt.md
README.ro.md
README.ru.md
README.sv.md Remove language bars from remaining non-English README files 2024-10-28 14:06:01 +01:00
README.tr.md
README.uk.md
README.zh-CN.md
README.zh-TW.md
release.sh release.sh: read meson-rewrite output from stdout 2024-10-31 10:31:38 +01:00
sway.desktop

sway

English - عربي - Č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 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. Some display managers may work but are not supported by sway (gdm is known to work fairly well).