Wallsmith
Generate, revisit, and refine AI wallpapers for Omarchy — theme-aware, crop-safe, keyboard-first.

The wallpaper behind that card is the prompt in it — made with Wallsmith on the Kanagawa theme:

Requirements
- Omarchy 4 with
omarchy-shell - Codex CLI, signed in — generation runs on your Codex account, no API key needed
hyprctl,jq, ImageMagick,flock(all on stock Omarchy)
Install
omarchy plugin add https://github.com/jlugner/omarchy-wallsmith.git --enable
Wallsmith has no default keybinding — pick one and bind the launcher in ~/.config/hypr/bindings.lua, then run hyprctl reload:
o.bind(
"SUPER + CTRL + G",
"Generate wallpaper",
"$HOME/.config/omarchy/plugins/jesperlugner.wallsmith/bin/wallsmith"
)
To uninstall, remove the keybinding and run omarchy plugin remove jesperlugner.wallsmith. Generated wallpapers stay in ~/.config/omarchy/backgrounds/; delete them and ~/.local/state/omarchy-wallsmith/ for a full cleanup.
Use
Your keybinding opens one card: a prompt on top, your generated wallpapers below. Type an idea, press Return — the wallpaper generates in the background, applies when done, and lands in history.
In the prompt:
| Key | Action |
|---|---|
Return |
Generate — or apply the edit while refining |
Alt+Return |
Insert a newline |
Ctrl+T |
Toggle theme matching (Shift+Return submits once without it) |
Tab / Down |
Move into history |
Esc |
Back out, then close |
On a wallpaper in history, Return (or a click) opens its action menu — each action also has a direct shortcut, shown in the menu:

| Action | Shortcut |
|---|---|
| Refine it — edits continue in that wallpaper's own agent thread | menu |
| Apply it as your background | Alt+Return |
| Reuse its prompt for a new wallpaper | Shift+Return |
| Create a matching Omarchy theme from it | Alt+T |
| Delete it — or cancel its running job | Delete |

While refining, the strip shows the wallpaper, its prompt, and your latest edit instruction. Refinements replace the wallpaper's file — one slot per generation, however many edits — but the last five versions are kept: browse them with Alt+←/→ (or click the thumbnail) and restore one with Ctrl+Return. A restore is itself undoable.
Alt+T turns a wallpaper into a full Omarchy theme: the palette is extracted from the pixels, the agent assigns roles and names the theme from the image and your prompt, contrast is validated, and the theme is applied immediately with the wallpaper bundled in. Keep it by doing nothing; click the notification to discard it and return to your previous theme. Remove one later with omarchy theme remove <name>. For hands-on palette tuning with sliders and presets, see aether.
Up to four jobs run in parallel: generations run side by side as live rows, while each wallpaper takes one edit at a time. Running jobs show a spinner next to a wallpaper icon in the bar.
The launcher also works from the CLI:
bin/wallsmith "A quiet Japanese garden in the rain" # prefill the prompt
bin/wallsmith --no-theme-context "A warm desert" # ignore the theme once
bin/wallsmith --history # open focused on history
How it works
- Reads your displays from
hyprctl monitors -jand the active theme'scolors.toml, then askscodex execto craft an image prompt and invoke$imagegenonce. - Keeps the composition crop-safe for every display ratio and normalizes to the largest monitor; Omarchy center-crops the shared image per screen.
- Refinements resume the wallpaper's saved Codex session with the current pixels attached as the editing reference, then replace the file atomically.
- State lives in
~/.local/state/omarchy-wallsmith/: records, version snapshots, and job logs (pruned after 30 days when no record references them). History is capped at the newest 50 wallpapers.
Verify
omarchy plugin validate ~/.config/omarchy/plugins/jesperlugner.wallsmith
~/.config/omarchy/plugins/jesperlugner.wallsmith/tests/test-launcher.sh
~/.config/omarchy/plugins/jesperlugner.wallsmith/tests/test-worker.sh
The same checks run in CI on every push.