evidence · 3.8 KiB

README.md

Committed at docs/evidence/hdmi-hotplug/landscape/wide-dock/README.md. This is what grounds the requirements that cite it.

Open raw source

The dock grows on wide screens (task 7.3)

Operator design answer, 2026-10-14: “More slots when wide” — the dock grows past 4 slots on wide screens, and the extra slots stay empty until apps are pinned.

Rule

home_grid::dock_slots(width, height): one slot per grid column, but no more than the icon budget leaves after one full page (icon.rs CACHE_LIMIT = 24, so a full page plus its dock stays resident), and never fewer than the panel’s 4.

SurfaceColumnsPageDock
568x1232 (portrait panel)4204
1280x800 (HDMI)9186
1280x720 (HDMI)9186
1232x568 (landscape panel)9186
1920x1080 (HDMI)14424 (page alone is over budget)

HomeLayout::fit_dock sizes the stored dock when the surface changes. Wider surfaces add empty slots at the end. Narrower ones never hide a pinned item: an item past the new end moves into the first empty slot that remains, or onto the grid when the dock is full.

Host evidence (host render, 2026-10-16)

home-1280x800.png and home-1232x568.png come from cargo run --offline --example render_responsive_evidence -- <dir>, which fills the dock with synthetic apps. Each shows six dock slots. The portrait home-568x1232.png from the same run is byte-identical to docs/evidence/shell-responsive/home-568x1232.png.

cargo test --offline --manifest-path nix/rust-shell-client/Cargo.toml --no-fail-fast passed: 547 lib tests (2 ignored) plus every integration target, 0 failures. The new tests are:

The older wide Home renders under shell-responsive/, hdmi-hotplug/landscape/host-renders/ and panel-landscape/host/ record the 4-slot dock as it was before this change, and are left as history.

On the board (2026-10-16, ~00:44–00:48 CDT)

Evidence class: injected pointer events plus native grim captures. No real glass and no camera. Build 3f6eca48 (.#kernelMainlineDrmShellLandscapeHdmiBootFiles), system zqy2i8w0h672f69jw7843w1l0mqz4wv5, deployed live with switch-to-configuration test and the boot profile set. HDMI-A-1 at 1280x800. Pointer input is tools/board-pointer.py, a uinput mouse.

  1. board-six-slots-1280x800-grim.png: after the deploy, Home’s dock shows six slots. The user’s four pinned apps fill slots 1–4, and slots 5–6 are empty, as the operator asked.
  2. A long press on the Video app in the grid, then a drag to the sixth slot (hold 640 190 900, 12 moves to 1162,720, up). The shell logged home-layout-changed. The saved home.json dock then read [foot, Nautilus, editor, htop, null, k230-video]: six entries, persisted. board-video-dropped-in-slot-6-1280x800-grim.png shows the result while still in rearrange mode.
  3. click 1194 80 (Done), then click 1162 720 on the sixth slot. The shell logged app-launch-requested and app-launch-mapped, so the new slot’s hit area launches its app. board-video-in-slot-6-1280x800-grim.png shows Home with Video in slot 6, out of rearrange mode, before the launch.
  4. Cleanup: the Video window was closed, and Video was dragged back to its grid cell. home.json again matches the operator’s layout (Video in grid slot 4, slots 5–6 empty).

Limits: