A work-in-progress Wayland compositor written in Rust, built on top of Smithay.
This repository is a Rust workspace containing the compositor plus supporting crates (configuration, IPC, window/layout logic, and launcher).
crates/codeverse-compositor: The compositor binary (codeverse-compositor)crates/codeverse-window: Window management, layouts, and workspace treecrates/codeverse-config: TOML configuration + keybindings + themecrates/codeverse-ipc: IPC types/helperscrates/codeverse-launcher: App discovery /.desktopparsing
- Linux
- Rust toolchain (edition 2021)
- System libraries required by Smithay/DRM/input stacks (exact package names vary by distro). Commonly needed:
libxkbcommonlibinputlibseatlibdrm+ GBM/Mesa/EGLpkg-config(often required to locate system libs)
If you hit build errors about missing -dev/-devel packages, install the corresponding development headers for your distro.
- Debug build:
cargo build
- Release build:
cargo build --release
To build just the compositor crate:
cargo build -p codeverse-compositor
The binary auto-selects a backend:
- Winit backend (nested) when
DISPLAYorWAYLAND_DISPLAYis set (i.e. launched inside an existing X11/Wayland session) - DRM backend (TTY / “real” session) otherwise
Run from an existing desktop session (nested):
RUST_LOG=info cargo run -p codeverse-compositor
Run on a clean TTY (DRM):
RUST_LOG=info cargo run -p codeverse-compositor --release
Notes:
- DRM/TTY mode typically requires correct device permissions (e.g.
video/inputgroups) and a seat/session setup. - If you’re unsure, start with nested mode first.
- Default config path:
~/.config/codeverse-compositor/config.toml
- Example config shipped in this repo:
config/default.toml
To start customizing:
mkdir -p ~/.config/codeverse-compositorcp config/default.toml ~/.config/codeverse-compositor/config.toml
There is a helper script that boots a Linux live ISO and copies the compositor binary into a shared folder:
./scripts/qemu-test.sh
There is also a convenience deploy script for a running VM:
./scripts/deploy-to-vm.sh
Useful commands:
- Format:
cargo fmt --all - Lint:
cargo clippy --workspace --all-targets -- -D warnings - Tests:
cargo test --workspace
See CONTRIBUTING.md.
See SECURITY.md for reporting vulnerabilities.
MIT licensed. See LICENSE.