Introduction
Keyboard-driven dynamic Wayland compositor written in Rust
Sweets is a keyboard-driven dynamic Wayland compositor and window manager written in Rust. It uses Smithay for Wayland protocol, input, and rendering infrastructure, and Lua for configuration.
Sweets combines automatic tiling with floating windows, workspaces, and first-class multi-output behavior. It is designed for a fast keyboard workflow without sacrificing pointer support or native desktop integration.
Sweets is pre-release software. The native session is usable for development and daily testing, but some protocol and administration coverage remains incomplete.
Highlights
Dynamic window management
Choose from tile, monocle, centered, grid, columns, deck, and dwindle layouts. Mix tiled and floating windows across configurable workspaces and outputs.
Rust and Smithay foundation
Run Sweets directly on DRM/KMS or as a nested compositor inside an existing Wayland session. Rendering is damage-driven and presentation-aware.
Validated Lua configuration
Configure bindings, inputs, outputs, layouts, rules, and visual behavior in Lua. Invalid reloads are rejected while the last valid configuration stays active.
Native Wayland and X11
Use native XDG applications, layer-shell desktop components, and managed X11 applications through Sweets' private rootless XWayland server.
Runtime control
Inspect and control a running session through typed, owner-only IPC using
the integrated sweets msg command.
Desktop integration
Sweets supports session lock, screen sharing, clipboard integration, idle management, output power control, and portable display-manager startup.
Get started
Build from source
Build Sweets and install the compositor, session launcher, and default Lua configuration.
Configuration
Learn where Sweets loads configuration and how to create a user override.
Window management
Learn the tiling, floating, workspace, focus, and movement workflow.
IPC
Query compositor state and run actions with sweets msg.
Current limitations
- Touchscreen and tablet tool or pad input are not supported.
- Animations, other visual effects, HDR, and tearing control are not available.
- Virtual outputs are not available.
- XWayland uses one global X11 DPI per server generation. Some legacy application DPI and game-input behavior remains application-specific.
Sweets is licensed under GPL-3.0-or-later.