i3-compatible Wayland compositor
Find a file
Hugo Osvaldo Barrera c16b2a26ed Avoid unecessary font metric calculations
Prior to 62d90a8e, titlebar's font height (and other related values)
would change any time any titlebar's content changed, so these values
were recalculated each time any titlebar's content changed (or a new
titlebar was created).

However, since the above was merge, these values no longer change so
often and we only need to recalculate them when the configured font
changes (and stop calling `config_update_font_height` each time
titlebars are rendered).

This commit removes all the unecessary calls to this function and avoids
all those unecessary calculations. Whenever the font strays from the
default value, the `font` command is called, and it calls
`config_update_font_height`, which is enough to keep the value always up
to date.

I've also added a default value to the `font_baseline` config, since
otherwise that's zero for setups that don't explicitly specify a font.
2021-09-20 09:25:47 +02:00
.builds ci: make Meson warnings fatal 2021-06-30 13:37:00 +02:00
.github/ISSUE_TEMPLATE Fix IRC links in READMEs and templates 2021-05-26 08:25:13 +02:00
assets License wallpapers as CC-0 2019-12-16 14:35:58 -05:00
client cairo: Replace <cairo/cairo.h> by <cairo.h> 2021-05-10 10:28:32 +02:00
common Avoid unecessary font metric calculations 2021-09-20 09:25:47 +02:00
completions i3-compat: add GET_BINDING_STATE IPC command 2020-06-14 00:55:14 -04:00
contrib grimshot: Exit 1 on cancellation 2021-07-10 13:03:42 +02:00
include Rename pango_printf to render_text 2021-09-13 14:22:51 +02:00
protocols build: subproject support for wayland-protocols 2021-09-08 08:19:40 +02:00
sway Avoid unecessary font metric calculations 2021-09-20 09:25:47 +02:00
swaybar swaybar: properly draw urgent block right border 2021-09-15 09:26:08 +02:00
swaymsg Make command line option lists const 2021-02-04 09:49:06 +01:00
swaynag swaynag: fix pointer button events on scaled outputs 2021-09-13 14:46:01 +02:00
.clang-format Update clang format to better match existing code 2021-06-22 20:21:45 +02: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: use portable hour specifier 2021-08-27 19:28:56 +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 build: remove scdoc stdin/stdout hack 2021-09-15 08:21:20 +02:00
meson_options.txt Add meson options to enable/disable swaybar and swaynag 2021-07-21 18:24:09 +02:00
README.de.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.dk.md readme: Align Danish translation with main README 2021-09-13 17:05:28 +02:00
README.es.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.fr.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.gr.md README: Added Greek translation 2021-09-19 14:14:42 +02:00
README.hu.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.ir.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.ja.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.ko.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.md README: Added Greek translation 2021-09-19 14:14:42 +02:00
README.nl.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.pl.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.pt.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.ro.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.ru.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.tr.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.uk.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.zh-CN.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02:00
README.zh-TW.md readme: link to gamja for IRC 2021-09-13 10:58:45 +02: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 - Русский - 中文-繁體 - Português - Dansk - 한국어 - Română - Magyar - 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.

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

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 *
  • 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 nor seatd, 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).