i3-compatible Wayland compositor
Go to file
Ryan Dwyer 0a9ff774ad Center surface inside container when it's too small
The goal here is to center fullscreen views when they are both too small
for the output and refuse to resize to the output's dimensions. It has
the side effect of also centering the view when it's too small for its
container.

Example clients that have this behaviour are emersion's hello-wayland
and weston.

It works by introducing surface_{x,y,width,height} properties to the
container struct. The x and y represent layout-local coordinates where
the surface will be rendered. The width and height are only used to
track the surface's previous dimensions so we can detect when the client
has resized it and recenter and apply damage accordingly.

The new surface properties are calculated when a transaction is applied,
as well as when a view resizes itself unexpectedly. The latter is done
in view_update_size. This function was previously restricted to views
which are floating, but can now be called for any views.

For views which refuse to resize *smaller* than a particular size, such
as gnome-calculator, the surface is still anchored to the top left as
per the current behaviour.
2019-01-28 01:17:21 -05:00
assets
client Fix dead stores found by scan-build 2019-01-22 10:12:04 -05:00
common background-image.c: remove stdbool header 2019-01-22 12:58:24 -05:00
completions
contrib
include Center surface inside container when it's too small 2019-01-28 01:17:21 -05:00
protocols Update for swaywm/wlroots#1243 2018-09-14 19:21:44 +02:00
security.d
sway Center surface inside container when it's too small 2019-01-28 01:17:21 -05:00
swaybar Make json-c include respect pkg-config --cflags 2019-01-23 21:50:06 -05:00
swaybg
swaymsg Make json-c include respect pkg-config --cflags 2019-01-23 21:50:06 -05:00
swaynag Fix build failure in config.c 2019-01-23 10:09:23 -06:00
.build.yml Add scdoc to .build.yml 2018-05-11 21:40:52 -04:00
.clang-format Update .clang-format - not entirely usable yet 2017-01-10 23:30:34 -05:00
.editorconfig
.gitignore Allocate minimum size necessary in pango text functions. (#3473) 2019-01-20 15:03:30 +01:00
config.in config.in: update swayidle/swaylock example 2019-01-14 18:08:13 +01:00
CONTRIBUTING.md
ISSUE_TEMPLATE.md issue template: add instructions for stack traces 2018-12-17 18:38:15 +01:00
LICENSE
meson_options.txt
meson.build Merge pull request #3482 from emersion/meson-systemd-version 2019-01-21 09:25:11 -05:00
README.bg.md Split swaylock into separate project 2019-01-13 21:40:26 -05:00
README.de.md Split swaylock into separate project 2019-01-13 21:40:26 -05:00
README.el.md Split swaylock into separate project 2019-01-13 21:40:26 -05:00
README.fr.md
README.it.md
README.ja.md Merge pull request #3417 from swaywm/remove-swaylock 2019-01-14 08:57:20 +01:00
README.md Merge pull request #3417 from swaywm/remove-swaylock 2019-01-14 08:57:20 +01:00
README.pt.md Split swaylock into separate project 2019-01-13 21:40:26 -05:00
README.ru.md Split swaylock into separate project 2019-01-13 21:40:26 -05:00
README.uk.md Split swaylock into separate project 2019-01-13 21:40:26 -05:00
sway.desktop

sway

English - 日本語 - Deutsch - Ελληνικά - Français - Українська - Italiano - Português - Русский - Български

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 **
  • scdoc (optional: man pages) *
  • git *

*Compile-time dep

**optional: required for swaybg

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