i3-compatible Wayland compositor
Find a file
Pedro Côrte-Real 8008344762 Avoid numerical instability in resize
Because the layout code rounds down the dimensions of the windows
resizing would often be off by one pixel. The width/height fraction
would not exactly reflect the final computed width and so the resize
code would end up calculating things wrong.

To fix this first snap the container size fractions to the pixel grid
and only then do the resize. Also use round() instead of floor() during
layout to avoid a slightly too small width. This applies in two cases:

1. For the container we are actually resizing using floor() might result
   in being 1px too small.
2. For the other containers it might result in resizing them down by 1px
   and then if the container being resized is the last all those extra
   pixels would make the resize too large.

Fixes #4391
2020-01-01 10:14:29 -07:00
.builds Remove rootston from build manifests 2019-08-09 09:59:44 +09:00
.github Update .github/FUNDING.yml 2019-10-11 19:36:58 -04:00
assets License wallpapers as CC-0 2019-12-16 14:35:58 -05:00
client Rename symbol set_cloexec to sway_set_cloexec, remove duplicates. 2019-11-01 12:41:08 -04:00
common cmd_client_*: refactor duplicated code 2019-12-28 10:07:25 +01:00
completions Add missing swaymsg completions 2019-03-08 15:28:35 -05:00
contrib _incr_version: always overwrite old version number 2019-12-31 10:31:40 -05:00
include Avoid numerical instability in resize 2020-01-01 10:14:29 -07:00
protocols input: Add support for tablet protocol. 2019-09-25 23:10:33 -04:00
security.d delete references to swaygrab 2018-07-30 16:24:46 +01:00
sway Avoid numerical instability in resize 2020-01-01 10:14:29 -07:00
swaybar Fix typo in swaybar-protocol.7.scd 2019-12-28 13:36:00 -05:00
swaymsg add scale_filter output config option 2019-11-29 18:13:37 +01:00
swaynag parse_color: return success + drop fallback color 2019-12-28 10:07:25 +01:00
.clang-format Update .clang-format - not entirely usable yet 2017-01-10 23:30:34 -05:00
.editorconfig Create .editorconfig 2016-07-04 14:12:32 +02:00
.gitignore Allocate minimum size necessary in pango text functions. (#3473) 2019-01-20 15:03:30 +01:00
config.in config.in: set default term to alacritty 2019-09-25 22:40:04 -04:00
CONTRIBUTING.md CONTRIBUTING.md: mention tab width for line length 2019-01-14 19:46:54 +01:00
ISSUE_TEMPLATE.md Add Firefox note to ISSUE_TEMPALTE.md 2019-05-06 15:32:37 -04:00
LICENSE MIT license 2017-01-06 13:45:48 -05:00
meson.build Update wlroots version 2019-12-31 11:18:58 -05:00
meson_options.txt Set version in project file 2019-02-05 14:32:05 +01:00
README.de.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.es.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.fr.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.ja.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.md Add Chinese (zh-TW) translation of README 2019-12-30 09:45:06 +01:00
README.nl.md Added Dutch translation of README 2019-07-17 12:36:52 -04:00
README.pl.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.ru.md Add Russian translation of the README 2019-09-09 19:09:57 +03:00
README.uk.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.zh-CN.md Add link to i3 in first mention of README 2019-04-27 17:28:24 -06:00
README.zh-TW.md Add Chinese (zh-TW) translation of README 2019-12-30 09:45:06 +01:00
sway.desktop Update language in sway.desktop & sway(1) 2019-03-10 15:09:52 -04:00

sway

English - 日本語 - Français - Українська - Español - Polski - 中文-简体 - Deutsch - Nederlands - Русский - 中文-繁體

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 *

*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).