From d9466d655592385c8b8675da557c891cddd189aa Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Fri, 19 Jun 2026 20:36:01 +0100 Subject: [PATCH] docs(roadmap): plan the visual theme picker (preview thumbnails) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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//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 --- docs/ROADMAP.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index e3497c5..b1d181e 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -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//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