Wayland compositor from scratch in Rust.
- No
wlroots
orsmithay
. - No
libwayland
.
- Enough to run
foot
,alacritty
andmpv
. - Sowfware (
pixman
) renderer. - OpenGL renderer.
- Nested wayland backend.
- Basic single-output drm/kms backend.
- Basic dynamic window management (master-stack layout).
- Full
wayland.xml
conformance (minus deprecatedwl_shell
). - Full
xdg-shell.xml
conformance. - Yes/no damage tracking.
- Full damage tracking.
- Direct scan-out support.
-
wayland.xml
(partial)- DnD
-
wl_output
-
xdg-shell.xml
(partial)- Qt popups don't work (but GTK does)
- Proper popup positioning
- Popup dismissal
-
linux-dmabuf-v1.xml
(v3, when using GL renderer) -
viewporter.xml
-
single-pixel-buffer-v1.xml
-
cursor-shape-v1.xml
-
wlr-layer-shell-unstable-v1.xml
-
fractional-scale-v1.xml
EWC_NO_GL=1
to force software renderer.
Config file is located at $XDG_CONFIG_HOME/ewc/config.toml
or ~/.config/ewc/config.toml
.
The default config is
# RGB color of the background
bg_color = [0.2, 0.1, 0.2]
# See `man xkeyboard-config`
xkb_layout = "" # System's default layout
# xkb_options = not set - i.e. the default options apply
# Example of a pointer config
#
# [pointer.'1267-12541-ELAN071A:00_04F3:30FD_Touchpad']
# tap_to_click = true
# natural_scroll = true