Watch
1
0
Fork
You've already forked SouveraineOS
0

task-43: what landed, and where the unmerged capture tree actually is

This commit is contained in:
Fimeg 2026-08-02 15:51:01 -04:00
commit c34274b14d

View file

@ -92,10 +92,36 @@ two-client handoff on hardware including adoption. Step 3's DRM/KMS half is
done and running; the arm64 engine is not. Step 4 is untouched.
The live list is in `souveraine-viewtop/docs/SESSION-2026-08-02.md` §"What is
missing". Shortest form, by what blocks daily use: scaling (everything renders
tiny), screen capture (written, unmerged), `furniture_at` returning `None` (the
pill cannot be addressed), and no `ToCompositor` dispatch (the OSK and pill
hacks cannot be deleted until there is one).
missing" — read its second-pass section, which is what changed after `bb09206`.
**Done since:** scaling (scale 2, 540x1080 logical, derived from the panel's own
62x124 mm), the layer `arrange()` that never ran on commit (centred sidebars),
toplevels sized to the non-exclusive zone rather than the whole panel, hardware
buttons reaching sessiond's `button` verb, keyboard reaching the seat, panel
DPMS with the EBUSY deferral (`power.rs`), a control socket (`control.rs`), and
`zwlr_foreign_toplevel_management_v1` so the dock and overview can finally
enumerate windows.
**Shortest form of what is left, by what blocks daily use:**
1. **Windows pile on each other.** Every toplevel is configured to the same
rectangle with nothing to tell them apart. "Multiple apps at once" needs
placement and a focus border, not more protocol — the enumeration half is
done now.
2. **Screen capture is still unmerged, and it is worth doing next** because
without it nothing visual can be verified: no screenshots means every UI
change ships unverified. It is **not** lost — it is a whole viewtop tree on
archdev at `~/vt-capture` (`ext-image-copy-capture-v1` +
`ext-output-image-capture-source-manager-v1`, `ImageCopyCaptureHandler` at
`wayland.rs:1816`, helpers `capture_peer`/`copy_output_into`/`render_capture`
around `676-850`). `gate.rs`'s `Act::Capture` half is **already merged** into
the current tree, so the port is the handler and its helpers only. It renders
the scene a second time off-screen rather than reading the scanout buffer,
and the reason is worth keeping: handing a client a mapping of the swapchain
also hands it whatever the next frame reuses.
3. `furniture_at` still returns `None`, so `Route::Shell` is unreachable.
4. Nothing dispatches `ToCompositor` — but `control.rs` is now the socket it
lands on, which was the missing half.
## The original plan, for context