- Zig 99.4%
- Shell 0.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| contrib | ||
| doc | ||
| protocol | ||
| src | ||
| suictl | ||
| tools | ||
| .gitignore | ||
| build.zig | ||
| build.zig.zon | ||
| LICENSE | ||
| README.md | ||
suisei
suisei is a dynamic tiling Wayland compositor written in Zig, in the tradition of dwm and river.
Features
Windows tile into a main column and a stack. They are organized with tags rather than workspaces: a window may have several tags, and an output may show several at once. Window rules place and style windows by app id and title.
An overview shows every window at once, scaled down as in mango or in a grid as in hycov, and doubles as alt-tab. Windows animate as they move, open, close and switch tags, and scenefx draws rounded corners, shadows and blur.
suisei is configured at runtime with suictl. On startup it runs an init
script, which usually calls suictl to map keys and set things up.
Building
Dependencies:
- zig master, see
minimum_zig_versionin build.zig.zon - pkg-config
- wayland, wayland-protocols, hwdata, libdrm, EGL, GLES2, gbm, lcms2, libseat, libudev, libdisplay-info, libinput, libevdev, xkbcommon, pixman, libxcb, xcb-util-renderutil and xcb-util-wm, for wlroots and scenefx, which are built from source and linked statically
- fcft
- Xwayland, for X11 clients
- the Vulkan loader and headers and glslang, optionally, for wlroots' Vulkan renderer, which a second GPU falls back to when its GLES2 fails. Some distributions package the headers apart from the loader, such as Arch's vulkan-headers; without them the renderer is left out
Then run, for example:
zig build -Doptimize=ReleaseFast --prefix ~/.local install
This installs suisei, suictl and their man pages. -Dxwayland=false
leaves out X11 support, -Dvulkan-renderer=false leaves out the Vulkan
renderer even when its dependencies are found, -Dvulkan-renderer=true builds
it or fails when they are missing, and -Dsystem-wlroots=true links the
system's wlroots 0.20 instead of the bundled fork. zig build -h lists all
options.
suisei renders with GLES2, so it needs a Mesa or NVIDIA driver.
Usage
Run suisei from a TTY. To start it from a display manager, add a
wayland-sessions desktop entry that runs it.
Configuration
suisei runs ~/.config/suisei/init on startup if it is executable. It is a
shell script, usually a list of suictl commands:
#!/bin/sh
suictl map Super Return spawn foot
suictl map Super q close
suictl rule-add -app-id pavucontrol float
suictl set-corner-radius 8
suictl help lists the commands, and suictl help <command> describes one.
The man pages suisei(1) and suictl(1) cover everything.
contrib/init is a complete example that also starts session
services and maps a dwm-like set of keys; there are no default bindings.
Dark mode
Portal-aware applications (GTK, Qt, Firefox, Electron) follow the color scheme set with:
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
This needs xdg-desktop-portal with its gtk and wlr backends, a session bus, as
in contrib/init, and contrib/suisei-portals.conf copied to
~/.config/xdg-desktop-portal/.
License
GPL-3.0, see LICENSE.