Currently the height of titlebars can vary depending on their text. If the text contains latin characters, then the height of those characters (in whatever font applies) will define the titlebar height. If a text contains CJK characters, the height of that font will determine the height. The same applies for emoji and any other character that's available only in the non-default font. This issue is annoying in itself, but because all existing windows are immediately resized, all applications need to rerender and this frequently results in some of them crashing (Firefox, Chromium and Signal are all curlpits here). I've only been able to reproduce this with many windows open, so I suspect it's a matter of too much load for the system to handle. This quickly escalates to the point where visiting websites with emoji in their title can kill all browser windows. Additionally, when the titlebar of a window grows, it's first rendered cropped, and the actual height only updates when there's a change in the focused window (I'm sure other state changes trigger a redraw too), at which point it's no longer cropped. The approach taken here calculates the expected titlebar height based on a short set of characters. Since these are likely to all use different fonts, titlebars will be big enough to fit latin, CJK or emoji characters without resizing. I'm sure this still leaves out specific languages (e.g.: arabic character bigger?). There's two ways to further improve this situation: - Add a single character of each acceptable family to the same text used. - Make the sample text user-configurable. This would allow a user to configure which font-families he expects to see, any anything bigger will be cropped. I don't feel the benefits are worth the effort here, but have nothing against it. |
||
|---|---|---|
| .builds | ||
| .github/ISSUE_TEMPLATE | ||
| assets | ||
| client | ||
| common | ||
| completions | ||
| contrib | ||
| include | ||
| protocols | ||
| sway | ||
| swaybar | ||
| swaymsg | ||
| swaynag | ||
| .clang-format | ||
| .editorconfig | ||
| .gitignore | ||
| config.in | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| meson.build | ||
| meson_options.txt | ||
| README.de.md | ||
| README.dk.md | ||
| README.es.md | ||
| README.fr.md | ||
| README.hu.md | ||
| README.ir.md | ||
| README.ja.md | ||
| README.ko.md | ||
| README.md | ||
| README.nl.md | ||
| README.pl.md | ||
| README.pt.md | ||
| README.ro.md | ||
| README.ru.md | ||
| README.tr.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 - 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, 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).