Skip to content

✨ feat: refresh the desktop visuals and add the Sanctuary themes - #3

Merged
anthonyportugal merged 39 commits into
mainfrom
feat/visual-refresh
Nov 13, 2026
Merged

anthonyportugal merged 39 commits into
mainfrom
feat/visual-refresh

Conversation

@anthonyportugal

Copy link
Copy Markdown
Owner

Refreshes the desktop ecosystem phase by phase and adds the Sanctuary themes. Each phase is a run of commits; merge without squash to keep them.

Phases

  • F0 – font fallbacks, a shared Fuzzel menu helper for MangoWM, imv-folder.
  • F1 – external package recipes with receipts and rollback; Bibata cursors and the Sanctuary role fonts.
  • F2 – palettes move to a generic schema 2.
  • F3 – the theme engine renders terminals, CLI tools, Yazi, GTK and bat; every output documented.
  • F4 – CLI tools, gammastep, bluetui and the palette cursor in MangoWM, bspwm and GTK.
  • F5 – 36 Sanctuary palettes generated from @sanctuary-ds/tokens 0.3.2 (vendored, pinned and checked), GNOME accent mapping, theme pickers (Fuzzel, Rofi, fzf), Waybar bluetooth and spacing fixes, and Super+Shift+B for the Bluetooth manager.

Review notes

  • About 8.3k of the added lines are the vendored token file and generated palettes (F5 data commit); generator --check proves they match the source.
  • Breaking changes: none intended. Palettes use schema 2; existing themes render the same apart from the metadata line and one swaylock colour (rosewater → flamingo).

Testing

  • tests/smoke.sh passes locally on the final commit.
  • Tested by hand on MangoWM with sanctuary-compline-*.

…n color

Configs named JetBrainsMono Nerd Font or JetBrains Mono while only the plain
font was installed, and fontconfig drew emoji with DejaVu in monochrome. The
desktop layer now installs JetBrains Mono Nerd, the Nerd symbols and Noto, and
ships fontconfig fallbacks: role font, Nerd symbols, a text font, color emoji.
… readable

Fixed widths cut menu text. mangowm_menu sets the width from the widest entry
between 30 and 90 characters, shortens longer entries in the middle keeping
their end, shows $HOME as ~, and still returns the original entry.
Images open through imv-folder, which loads every image of the directory in
natural order and starts at the opened one, so Thunar and yazi no longer open
a single image.
mangowm_menu notifies when the theme cannot be loaded instead of showing no
menu, asks fuzzel for the chosen index so values may hold tabs and repeated
labels return their own value, and no longer needs fuzzel's nth options.
…lder

Symlinked images browse the folder they were opened from, symlinks to images
are listed, a folder too large for one command line is handed to imv as a
directory, and the formats match the desktop entry and the associations.
system, components and overlay smoke copied the checkout with its .git. From
a worktree, .git points at the shared repository, so their test branches and
commits landed in the real one. copy_checkout copies the working tree into a
new repository instead.
Alacritty imports and foot includes a rendered file with the font family
and the ANSI, cursor and selection roles. MangoWM's foot template carries
the same color block, kept identical by tests/theme-apps-smoke.sh.
The engine now requires every shared output to render and reserves the
shared output names for WM template directories.
The flavor template uses schema-2 keys instead of hardcoded Mocha hexes and highlights previews with the rendered bat theme; rosewater becomes hue_rose (flamingo) and the progress label white becomes foreground.
The @define-color overrides move from the stowed gtk-3.0/gtk-4.0 stylesheets into the rendered gtk.css, which they now only import; the black shades stay literal.
The engine runs the render.d hooks after current moves to another revision, and always on set, so render-only paths (desktop apply, DOTFILES_THEME) no longer leave zsh pinned to Catppuccin-mocha. The bat hook moves from reload.d to render.d and skips a cache outside HOME. A failing hook only warns and hook stdout never mixes with the revision path.
…errors

scaffold-smoke checks each palette with dotfiles-theme validate in a throwaway env instead of a copied key list; theme-schema-smoke tells grep's no-match (1) from an error (2); the Catppuccin-named waybar colors are documented as compatibility aliases.
…allbacks

themes/README.md adds GTK and Yazi to the consumer and fallback table and a Hooks section for render.d and reload.d; the root READMEs describe the theme engine instead of per-app Catppuccin Mocha.
@anthonyportugal
anthonyportugal merged commit eceacf4 into main Nov 13, 2026
2 checks passed
@anthonyportugal
anthonyportugal deleted the feat/visual-refresh branch November 13, 2026 01:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant