atagen

monolith

public
Star0
Watch0
bc51c38a6fd9fb1c6c73b495137fc844d250e22f
1
ssh://brewery@pls.lobotomise.me:33/atagen/monolith.git
design/plan.mdMarkdown42 lines3.4 KB

monolith plan

Crate layout and milestones. Decisions behind them are in decisions.md.

Crates

The hard logic lives in crates with no smithay dependency, so it compiles fast and takes headless property tests.

cratesmithaycontents
plannernomultiphase planner, geometry, invariants, property tests
motionnobeziers with exact t, best-effort velocity handoff, timelines sampled at presentation time
layoutnotags (model B), homeless, slotmap tree, row stacking, expand, floating, scratchpads, commands, target rects
confignoTOML schema, parsing, reload diffing, window rules
ipcnoversioned JSONL message types shared by compositor and CLI
render-vkyesVulkan renderer implementing smithay’s renderer traits
protocolsyesprotocols monolith writes itself (ext-workspace, later tearing-control, output management, foreign-toplevel management, gamma)
testkityesheadless backend, sctk test clients, golden images, tree invariants
monolith (bin)yesstate, shell glue, backends, frame scheduler, stage pipeline, msg and spawn subcommands

motion and planner stay separate. The frame scheduler starts inside the binary.

Backends

  • Nested runs inside another Wayland compositor and is supported for the life of the project, not just during early development. It renders into dmabufs and attaches them to a host wl_surface through linux-dmabuf, so nested and DRM share one render-to-dmabuf path and both get presentation feedback. smithay’s winit backend is EGL/GLES-only, so it is not used.
  • DRM on bare metal from M5.
  • Headless for testkit.

Milestones

#milestonenotes
M0Scaffolding. jj repo, flake (crane, devshell, lavapipe), workspace skeleton, nix flake check gate, Tracy feature
M1Planner spike. planner and motion, new planner for diagonal, cross-output and large merge groups, property tests over random layouts and interrupt sequences, plan visualiserparallel with M2
M2Nested compositor with the Vulkan renderer. Nested host backend, smithay renderer traits, shm and dmabuf import, xdg-shell, one output, one tag, lavapipe golden testsproves the renderer
M3layout and tags. Model B, homeless, row stacking, expand, floating, scratchpads and sticky, ext-workspace, JSONL IPC and CLI, TOML config with reload, window rulesstill nested
M4Animation integration. Planner wired in, presentation-time sampling, clamp-to-edge snapshots, spawn and close, transition-shader hook
M5DRM backend. udev, libinput, session, smithay DRM compositor, deadline scheduler from flip timestamps, explicit sync, VRR with cursor throttling, hotplug and replug restore. Tested on NVIDIA and Intelfirst bare metal
M6Daily-driver gate. layer-shell, session-lock, idle notify and inhibit, xdg-activation with launch context, lazy Xwayland, data-control, image-copy-capture and portalsswitch from wry here
M7Performance. Off-thread shm upload, commit blockers, fullscreen direct scanout, SCHED_RR, global-priority queues, measured against the targets
M8Gaming. smithay tearing patches, tearing-control, keyboard-shortcuts-inhibit, pointer constraints, cursor policy while tearing
LaterCustom shaders, deck mode, i3-style titles, HDR and color, hybrid GPUs, output management, gamma