Development
Home · Installation · Adding a backend · Platform support
Work from a source checkout. Read the repository’s AGENTS.md and CONVENTIONS.md for current engineering and validation requirements. The workspace uses Rust 1.99, edition 2024 and Cargo’s resolver 3. Linux builds need GTK 4.18 development files and a C toolchain; the CI package script .github/actions/install-distro-packages/install.sh lists distribution-specific build and test dependencies. See Installation for a minimal source build.
Boundaries
tessera-core holds protocol-neutral tiling policy. tessera-backend defines capabilities and session contracts; platform adapters implement them, with X11 protocol details in tessera-backend-x11. tessera-config owns configuration, tessera-i18n owns localized messages, tessera-worker owns the isolated JavaScript runtime, and tessera-app composes the application. The UI model and platform providers are separate. A backend requests operations from the session’s existing window manager; it does not become one. See Adding a backend.
Validation
The repository’s documented Linux display gate runs in a private Xvfb, xfwm4 and session bus:
scripts/test-env.sh gate
It runs formatting, clippy and tests, including the app’s adwaita feature. It needs the tools listed in AGENTS.md. Exit 3 means the environment was unavailable, not that tests passed. Other display profiles have their own private harness profiles. Never run display-dependent tests against your everyday desktop or treat ignored tests as passing. Record the actual commands, results, environment and any unrun tests; virtual tests do not replace real-session smoke evidence.
For a workspace build or check from the root:
cargo check --workspace --all-targets --locked
cargo build --workspace --all-targets --locked
Changes to user-facing messages need catalog entries and coverage for all shipped languages. Keep unknown configuration fields and report unsupported capabilities explicitly. Update the compatibility ledger when behavior changes. Packaging scripts are under packages/; recipes are not proof of publication or support. Do not create a remote, release or public artifact without an explicitly authorized destination.
Documentation images
Images for these pages live in wiki/images/ (subfolders are free, for example images/layouts/tall.svg). Pages reference them by a path relative to the wiki root, , which works on the GitHub wiki; the documentation site publishes the contents of wiki/images/ as site assets, so nothing outside wiki/ may be referenced for documentation images.
To update images:
- Layout animations: run
cargo run -p tessera-ui --example generate_layout_svgs, thencp crates/tessera-ui/assets/layouts/*.svg wiki/images/layouts/. The testcrates/tessera-ui/tests/layout_svgs.rscovers only the copy undercrates/, so check the wiki copy withdiff -r crates/tessera-ui/assets/layouts wiki/images/layouts. - Logo: copy
crates/tessera-ui/assets/icons/org.xfce.Tessera.svgtowiki/images/. - Screenshots: copy only real captures that were actually observed (for example from
docs/compatibility/evidence/) intowiki/images/screenshots/, and state in the page how they were captured (the current ones come from a private Xvfb + Xfwm4 session, not a real XFCE session). Never add invented or mocked images. - Give every image descriptive alt text and verify that each
images/...reference points to an existing file.