feat: icon themes — Papirus, resolved from the JSON, for GTK + rofi

Ships papirus-icon-theme and resolves an icon-theme name once in
theme.nix → nomarchy.theme.iconTheme: the JSON's optional `icons` field,
else Papirus-Dark/Light picked by `mode`. That single value feeds:
- Stylix `stylix.icons` → gtk.iconTheme (Thunar and GTK apps)
- rofi `show-icons` + `icon-theme` (the launcher now shows app icons)

A preset or theme-state.json can set `icons` to any theme in the icon
package to override per theme.

Verified: flake check green; iconTheme resolves Papirus-Dark for
tokyo-night and Papirus-Light for summer-day; gtk.enable true with
gtk.iconTheme.name set; papirus in home.packages and the live ISO
closure; rofi config.rasi carries icon-theme + show-icons:true. The
rendered icons need a real session to see.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-13 16:12:19 +01:00
parent 520c878bb3
commit f97054c804
4 changed files with 34 additions and 9 deletions

View File

@@ -280,8 +280,8 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
follow-ups (claude-code in nixpkgs is unfree — allowUnfree is on)
- planned binds: `SUPER+Space``rofi -dmenu`/quick-launch and
`SUPER+M``nomarchy-menu` (main menu); `SUPER+D` stays `-show drun`
- launcher icons: `show-icons` is off until the icon-theme item below
lands (rofi needs an installed icon theme to show app icons)
- launcher icons: `show-icons` on, drawing from the theme's icon set
(Papirus, via the icon-themes work below)
- decision record: resolves the old Walker/Lua question — no GTK4
launcher, no second theming pipeline; the dispatcher owns the menu
structure, so the renderer stays swappable (we moved fuzzel → rofi 2.0
@@ -317,11 +317,11 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
via a synchronous tag, so a multi-minute switch never reads as a failed
selection. (An honest indeterminate indicator — HM gives no % — a
literal progress widget would be cosmetic; revisit only if wanted.)
- **Icon themes:** add `icon` to `theme-state.json`, have Stylix/GTK and
rofi (`show-icons`) consume it, and ensure the chosen icon theme is
pulled into the closure per active theme (a dark/light pair, e.g.
Papirus-Dark/Light, picked to match `mode`). Unblocks rofi launcher
icons and tidies Thunar/GTK app icons.
- **Icon themes:** ✓ ships `papirus-icon-theme`; the resolved name lives on
`nomarchy.theme.iconTheme` (the JSON's optional `icons` field, else
Papirus-Dark/Light by `mode`) and feeds both Stylix's `gtk.iconTheme`
(Thunar/GTK apps) and rofi's `show-icons`. Remaining (optional): per-theme
`icons` overrides for the presets, or shipping more icon packs.
- **Nicer shell out of the box:** ship and default-configure a prompt
(starship, themed from the JSON) plus modern-CLI ergonomics —
`bat`→cat, `eza`→ls, `ripgrep`→grep, `fd`→find, `zoxide`→cd — wired as