Add installed icon-theme picker - #123
Open
mtolhuys wants to merge 1 commit into
Open
Conversation
Author
|
Turns out “I would like to pick an icon theme” has a few more tentacles than the button suggests 😅 Kept it as one PR because the feature crosses discovery, editor state, serialization, generation, CLI, and UI. Splitting those paths would leave some awkward half-working pieces. Nearly half of the additions are focused regression and security tests, with no new dependencies. Just say the word and I'll be happy to sharpen any rough edges that turn up during review! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Add a compact installed icon-theme chooser below Light mode, governed by Aether’s existing Icons target. It is neither a new top-level section nor an individual icon-file picker.
Important
Nearly half of the additions are regression and security tests, and no dependencies were added.
Why
I was about to build a theme creator-ish myself for this. Found out about Aether just in time (thanks for your work here!!) so decided to go for this PR instead.
The Icons target currently always generates Aether's palette-matched Yaru theme. This keeps that default intact while allowing an installed desktop icon theme to travel with the rest of an Aether/Omarchy theme.
Behavior
icons.themewithout erasing the selection.Review map
internal/icontheme/— bounded XDG discovery, metadata parsing, containment checks, and rasterized previews.internal/theme/,internal/blueprint/, andcli/— state, serialization, validation, and output behavior.frontend/src/— chooser UI plus dirty-state and undo/redo integration.frontend/wailsjs/— generated Wails contracts.The selection participates in editor state, dirty tracking, undo/redo, blueprints, import/export, CLI generation, and Omarchy-v4 output.
Safety
Discovery is read-only and bounded across standard XDG icon roots, with user-before-system precedence and symlink-containment checks. The WebView receives only metadata and backend-rasterized PNG previews—never arbitrary host paths or raw SVG/XPM.
Verification
Go tests (including race and Go 1.23.12), vet, Svelte checks, frontend regression tests, production builds, generated Wails bindings, and
git diff --checkpass. The complete interaction was also exercised in a disposable Omarchy-v4 desktop: enable Icons → chooseLab Blue→ Apply Theme → Save and Apply. The generated and activeicons.themeboth contained exactlyLab-Blue\n.