Currently, criteria are executed only once. This limits their usefulness for reacting to properties of windows that change over time, for example existance and state of idle or keyboard shortcuts inhibitors (for which criteria are to be implemented in a separate change). This change keeps the principal behaviour of not re-executing criteria while their matching state has not changed. But as soon as a criterion no longer matches, it will be removed from the list of already executed criteria. This allows its action to be re-executed once the criterion once again matches the view. Since function criteria_for_view() returns a list of all currently matching criteria, this can be trivially implemented and is even slightly more efficient than before: Instead of checking each matching criterion against the list of already executed criteria and potentially executing and adding it, we just make the list returned by criteria_for_view() the new list of executed criteria. Then we walk through it and execute every criterion not already in the old list of exectued criteria. Adding the criterion to the list becomes redundant. The old list is freed at the end. With this approach we implicitly forget about any criteria we may have executed in the past which no longer match the view right now. As an additional simplification, function view_has_executed_criteria() is replaced by list_find() since it does the same thing. Since execution behaviour was not documented explicitly before, we add a note to sway(5) on how it is behaving now. Signed-off-by: Michael Weiser <michael.weiser@gmx.de> |
||
|---|---|---|
| .builds | ||
| .github | ||
| assets | ||
| client | ||
| common | ||
| completions | ||
| contrib | ||
| include | ||
| protocols | ||
| security.d | ||
| sway | ||
| swaybar | ||
| swaymsg | ||
| swaynag | ||
| .clang-format | ||
| .editorconfig | ||
| .gitignore | ||
| config.in | ||
| CONTRIBUTING.md | ||
| ISSUE_TEMPLATE.md | ||
| LICENSE | ||
| meson.build | ||
| meson_options.txt | ||
| README.de.md | ||
| README.dk.md | ||
| README.es.md | ||
| README.fr.md | ||
| README.ja.md | ||
| README.ko.md | ||
| README.md | ||
| README.nl.md | ||
| README.pl.md | ||
| README.pt.md | ||
| README.ru.md | ||
| README.uk.md | ||
| README.zh-CN.md | ||
| README.zh-TW.md | ||
| sway.desktop | ||
sway
English - 日本語 - Français - Українська - Español - Polski - 中文-简体 - Deutsch - Nederlands - Русский- 中文-繁體 - Português - Danish - 한국어
sway is an i3-compatible Wayland compositor. Read the FAQ. Join the IRC channel (#sway on irc.freenode.net).
If you'd like to support sway development, please contribute to SirCmpwn's Patreon page.
Release Signatures
Releases are signed with B22DA89A and published on GitHub.
Installation
From Packages
Sway is available in many distributions. Try installing the "sway" package for yours. If it's not available, check out this wiki page for information on installation for your distributions.
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
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).