59 lines
1.8 KiB
Markdown
59 lines
1.8 KiB
Markdown
# 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.
|
||
|
||
### 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.
|