Luft is a Linux desktop environment built around the Kestrel Wayland compositor, a web-rendered panel shell, and native Rust services for session, IPC, notifications, and tray hosting.
crates/kestrel Wayland compositor and render backends
crates/luft-shell Panel shell service and Fenestra web chrome
crates/luft-session Display-manager/session launcher
crates/luft-config Shared config model and XDG path handling
crates/luft-ipc Typed compositor IPC payloadscargo buildBuild shell web assets with Bun before compiling luft-shell after UI changes:
cd crates/luft-shell/web
bun install
bun run buildThe DRM/KMS session backend is behind an explicit feature while it is still under active development:
cargo build -p kestrel --features session-backendRun the nested compositor inside an existing desktop session:
cargo run -p kestrel -- --nestedKestrel prints a WAYLAND_DISPLAY value. Use that socket from another terminal to launch clients:
WAYLAND_DISPLAY=<printed-socket> ghosttyRun the protocol/headless backend for smoke tests:
LUFT_IPC_SOCKET=/tmp/luft-headless.sock cargo run -p kestrel -- --headless --socket luft-headlesscargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace