# Ferese Ferese is an experimental Wayland tiling compositor written in Rust with Smithay. The nested M0–M3 path is complete, including tiling, workspaces, and timestamp-driven animated geometry. Development now targets the M4 early hardware-session acceptance pass and M5 native interoperability in the [window-manager specification](docs/ferese-window-manager-spec.md). ## Development Install the native dependencies required by Smithay's winit and GLES backends, then run: ```bash cargo run -p ferese ``` Pass a client and its arguments after `--` to launch it inside Ferese: ```bash cargo run -p ferese -- foot ``` Set `RUST_LOG=ferese=debug` for detailed compositor logging. Text-input-v3 is available to applications by default. Input-method-v2 is hidden unless the session explicitly opts in, because an input method can request privileged keyboard access. Enable it only when launching a trusted IME for the session: ```bash FERESE_ENABLE_INPUT_METHOD=1 cargo run -p ferese ``` `Ctrl+Alt+Escape` always releases an active client shortcut inhibitor. Screen capture is hidden by default. A session that has already made an explicit capture-policy decision can expose screencopy-v1 to its clients with: ```bash FERESE_ENABLE_SCREENCOPY=1 cargo run -p ferese ``` The current M5 implementation supports one-shot output and region capture into ARGB8888 shared-memory buffers. Captures currently include Ferese's software cursor even when a client does not request a cursor overlay; cursor-free capture remains part of the M5 interoperability acceptance work. ### Direct DRM session Run the hardware backend from a spare TTY, outside another graphical session: ```bash RUST_LOG=ferese=debug cargo run -p ferese -- --backend=drm -- foot ``` Do not run that command from a terminal inside the active desktop: the direct backend requests control of the seat and primary DRM device. Use Ctrl+Alt+F1–F12 to switch virtual terminals. M4 validation requires the direct session to: - start `foot` and render the same animated tiling workload as the nested path; - retain keyboard and pointer input; - pause when switching away and redraw after switching back; and - log page-flip timing and any missed presentation deadlines on the reference integrated GPU. The direct path currently targets one connected output. Multi-output hotplug is part of M5.