Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-1314GitHub issuePublicDecided· Out of scope

[Feature] `omarchy theme from-wallpaper` — generate a theme's colors.toml from a wallpaper image

Reported by gcap0n1 · filed Aug 28, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

[Feature] `omarchy theme from-wallpaper` — generate a theme's colors.toml from a wallpaper imagerevision 1 · captured 2026-09-28 21:24 UTC via poll

[Feature] omarchy theme from-wallpaper — generate a theme's colors.toml from a wallpaper image

Type: Feature request · Area: theming (bin/omarchy-theme-*) · Suggested labels: enhancement, theming

Summary

Add a command that builds a valid Omarchy theme out of an arbitrary image:

omarchy theme from-wallpaper ~/Pictures/wall.jpg          # create theme, print name
omarchy theme from-wallpaper ~/Pictures/wall.jpg --apply  # create and set it

It would extract a palette from the image, derive the full colors.toml schema (mode, accent/selection/muted, the four background and four foreground steps, the 8 base colors: red yellow orange green cyan blue magenta brown), write it to a custom theme dir under ~/.config/omarchy/themes/<name>/, and reuse the existing omarchy theme set pipeline unchanged. Existing hand-picked themes are untouched.

Why

  • Omarchy's theming stack is already template-driven end to end (default/themed/*.tpl, omarchy-theme-set-templates, shell hot-reload). The single missing entry point is "make a theme from this wallpaper" — the highest-"wow"-per-line-of-code feature a theming engine can offer, and the most-asked theming question after "how do I add a theme".
  • It composes with what exists: the generated theme is a normal theme, so omarchy theme set, the theme switcher, omarchy theme bg-set and user templates under ~/.config/omarchy/themed/ all keep working with zero changes.
  • This is not a cold call: #92 ("Dynamic color schemes based on wallpaper") explored exactly this idea, and the discussion closed with a clear maintainer direction — matugen-based generation, treated as "a theme in itself", with the existing hand-picked themes kept — but no follow-up ever landed (no matugen anywhere in the current tree, no generated theme in omarchy theme list). This issue proposes picking that thread up as a first-class command.
  • Demand exists in the wild: the community package omarchy-auto-theme already does wallpaper-based theming via matugen as a third-party add-on; upstreaming the generation step as a CLI command would give that whole category a supported foundation.

Reference implementation (design inspiration only)

Nisfeight8/Nisfere builds its whole shell around live theming: a Python daemon extracts colors from the current wallpaper (daemon/services/nisfere_chroma.py) and renders them into every config via templates. Nisfere has no license, so no code can be taken — but the feature itself is a small, well-understood problem: k-means or median-cut quantization over a downsampled image, then schema mapping. Any implementation (Pillow/numpy one-off, or a tiny Rust helper) is fine; the point is the integration seam, not the algorithm.

Proposed implementation

  • New bin omarchy-theme-colors-from-wallpaper <image> [theme-dir], sibling of the existing omarchy-theme-colors-from-alacritty (which already establishes the "derive colors.toml from a source" pattern: skip-if-exists, schema-complete output).
  • Palette extraction via matugen (Rust, Material You-style quantization from an image), following the direction expressed in #92; a matugen template config ships alongside the bin to map matugen's output onto the Omarchy colors.toml keys (accent from the dominant tone, background/foreground steps from luminance-mapped neutrals with WCAG AA contrast checks, base colors from the remaining tones with a stock-ramp fallback when the image lacks hue diversity).
  • Dependency question for maintainers: matugen as a new (optional) dependency vs a dependency-free ImageMagick fallback (magick -resize ... -colors 8 -unique-colors txt:) — happy to implement whichever fits the project's dependency budget; the schema-mapping bin is identical in both cases.
  • Router entry omarchy theme from-wallpaper <image> [--apply] [--name <name>] in bin/omarchy (group theme): default name wallpaper-<basename>; refuses to overwrite an existing theme without --force.
  • Derivation rules documented in docs/theming.md.

Acceptance criteria

  • omarchy theme from-wallpaper <img> --apply on a fresh install produces a theme where every themed target updates (shell, terminals, VS Code, hyprland, browsers config) — identical coverage to a stock theme.
  • Generated colors.toml validates against the same schema checks stock themes pass (all keys present, valid hex).
  • Very dark and very light wallpapers both produce readable themes (mode chosen accordingly, contrast-checked foreground).
  • --apply also sets the wallpaper as background (composable with omarchy theme bg-set semantics).
  • Documented in the manual: "creating a theme from an image".

Out of scope

  • Auto-switching themes when the wallpaper changes on its own (can be a hook recipe later: omarchy hook install background-set).
  • Live chroma re-extraction on every wallpaper change inside the shell process.

Credits

Feature concept popularized by the Nisfere shell's wallpaper-driven theming.

View raw text
# [Feature] `omarchy theme from-wallpaper` — generate a theme's colors.toml from a wallpaper image

**Type:** Feature request · **Area:** theming (`bin/omarchy-theme-*`) · **Suggested labels:** `enhancement`, `theming`

## Summary

Add a command that builds a valid Omarchy theme out of an arbitrary image:

```bash
omarchy theme from-wallpaper ~/Pictures/wall.jpg          # create theme, print name
omarchy theme from-wallpaper ~/Pictures/wall.jpg --apply  # create and set it
```

It would extract a palette from the image, derive the full `colors.toml` schema (`mode`, `accent`/`selection`/`muted`, the four background and four foreground steps, the 8 base colors: `red yellow orange green cyan blue magenta brown`), write it to a custom theme dir under `~/.config/omarchy/themes/<name>/`, and reuse the existing `omarchy theme set` pipeline unchanged. Existing hand-picked themes are untouched.

## Why

- Omarchy's theming stack is already template-driven end to end (`default/themed/*.tpl`, `omarchy-theme-set-templates`, shell hot-reload). The single missing entry point is "make a theme from this wallpaper" — the highest-"wow"-per-line-of-code feature a theming engine can offer, and the most-asked theming question after "how do I add a theme".
- It composes with what exists: the generated theme is a normal theme, so `omarchy theme set`, the theme switcher, `omarchy theme bg-set` and user templates under `~/.config/omarchy/themed/` all keep working with zero changes.
- This is not a cold call: **#92** ("Dynamic color schemes based on wallpaper") explored exactly this idea, and the discussion closed with a clear maintainer direction — matugen-based generation, treated as "a theme in itself", with the existing hand-picked themes kept — but no follow-up ever landed (no matugen anywhere in the current tree, no generated theme in `omarchy theme list`). This issue proposes picking that thread up as a first-class command.
- Demand exists in the wild: the community package [omarchy-auto-theme](https://github.com/AccursedGalaxy/omarchy-auto-theme) already does wallpaper-based theming via matugen as a third-party add-on; upstreaming the generation step as a CLI command would give that whole category a supported foundation.

## Reference implementation (design inspiration only)

[Nisfeight8/Nisfere](https://github.com/Nisfeight8/Nisfere) builds its whole shell around live theming: a Python daemon extracts colors from the current wallpaper (`daemon/services/nisfere_chroma.py`) and renders them into every config via templates. **Nisfere has no license, so no code can be taken** — but the feature itself is a small, well-understood problem: k-means or median-cut quantization over a downsampled image, then schema mapping. Any implementation (Pillow/numpy one-off, or a tiny Rust helper) is fine; the point is the integration seam, not the algorithm.

## Proposed implementation

- New bin `omarchy-theme-colors-from-wallpaper <image> [theme-dir]`, sibling of the existing `omarchy-theme-colors-from-alacritty` (which already establishes the "derive colors.toml from a source" pattern: skip-if-exists, schema-complete output).
- Palette extraction via **matugen** (Rust, Material You-style quantization from an image), following the direction expressed in #92; a matugen template config ships alongside the bin to map matugen's output onto the Omarchy `colors.toml` keys (accent from the dominant tone, background/foreground steps from luminance-mapped neutrals with WCAG AA contrast checks, base colors from the remaining tones with a stock-ramp fallback when the image lacks hue diversity).
- Dependency question for maintainers: matugen as a new (optional) dependency vs a dependency-free ImageMagick fallback (`magick -resize ... -colors 8 -unique-colors txt:`) — happy to implement whichever fits the project's dependency budget; the schema-mapping bin is identical in both cases.
- Router entry `omarchy theme from-wallpaper <image> [--apply] [--name <name>]` in `bin/omarchy` (group `theme`): default name `wallpaper-<basename>`; refuses to overwrite an existing theme without `--force`.
- Derivation rules documented in `docs/theming.md`.

## Acceptance criteria

- [ ] `omarchy theme from-wallpaper <img> --apply` on a fresh install produces a theme where every themed target updates (shell, terminals, VS Code, hyprland, browsers config) — identical coverage to a stock theme.
- [ ] Generated `colors.toml` validates against the same schema checks stock themes pass (all keys present, valid hex).
- [ ] Very dark and very light wallpapers both produce readable themes (`mode` chosen accordingly, contrast-checked foreground).
- [ ] `--apply` also sets the wallpaper as background (composable with `omarchy theme bg-set` semantics).
- [ ] Documented in the manual: "creating a theme from an image".

## Out of scope

- Auto-switching themes when the wallpaper changes on its own (can be a hook recipe later: `omarchy hook install background-set`).
- Live chroma re-extraction on every wallpaper change inside the shell process.

## Credits

Feature concept popularized by the Nisfere shell's wallpaper-driven theming.

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 09:44 UTC