docs(roadmap): plan the visual theme picker (preview thumbnails)

Add the agreed approach for prettifying nomarchy-menu theme into a rofi icon
grid of real themed-desktop previews: Bernardo captures previews on real
hardware and commits themes/<slug>/preview.png; a build-time derivation
downscales each to a thumbnail that the picker loads as the rofi element icon
(rofi already renders image files — same as the Papirus menu icons), with a
wallpaper/swatch/plain-name fallback while previews are added incrementally.

Notes the headless VM-render route was prototyped and works (runNixOSTest +
software-GL Hyprland + machine.screenshot QMP dump) but real-hardware capture
was chosen for fidelity; the working VM recipe is parked in memory. The
temporary flake checks.theme-shot spike is removed (too heavy for a CI gate).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-19 20:36:01 +01:00
parent 0e42763aea
commit d9466d6555

View File

@@ -88,6 +88,25 @@ how to override it. Items marked ✓ are shipped.
green inputbar, yellow bottom-border). Remaining: author `.rasi`
identities for the other four ported themes if/when they want one (the
generated palette theme is the default and looks fine)
- **Visual theme picker (preview thumbnails):** replace the plain-text theme
list in `nomarchy-menu theme` with a rofi **icon grid of real desktop
previews** — each theme shown as a screenshot of its themed desktop (waybar
+ a floating terminal), name beneath, the active theme marked, with the
`↩ Back` entry. **Workflow:** Bernardo captures the previews on real
hardware and commits them as `themes/<slug>/preview.png`; a build-time
derivation downscales each to a small thumbnail (imagemagick), and the
picker loads it as the rofi element icon — rofi already renders image files,
which is how the Papirus menu icons work, so a `.png` path in the icon slot
Just Works. Grid layout via a per-invocation `-theme-str` (`listview {
columns; }` + a larger `element-icon`). Graceful fallback when a theme has
no `preview.png` yet: its wallpaper (`backgrounds/`), an accent swatch, or
the plain name — so it degrades cleanly as previews are added incrementally.
(A headless VM-render route — `runNixOSTest` + software-GL Hyprland
(`LIBGL_ALWAYS_SOFTWARE` on virtio-gpu) + `machine.screenshot()` QMP
framebuffer dump — was prototyped 2026-06-19 and **works** (themed waybar
rendered + captured); real-hardware capture was chosen for fidelity +
simplicity, with the VM route as a documented fallback if hand-capturing all
themes gets tedious.)
- **Faster switches:** move `backgrounds/` out of the flake source (the 86 MB
re-copy on every state write is the main eval tax), then pre-built theme
variants if still needed