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-1640GitHub issuePublicDecided· Out of scope

GTK4/libadwaita apps don't follow the Omarchy theme

Reported by akitaonrails · filed Aug 19, 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

GTK4/libadwaita apps don't follow the Omarchy themerevision 1 · captured 2026-09-28 21:29 UTC via poll

System details

RTX 5090, Omarchy 4.0.0-1 (also verified against current quattro branch source)

What's wrong?

Stock Omarchy applies no theming at all to GTK4/libadwaita applications. Nautilus, Geary, GNOME Calendar and friends render in default Adwaita colors regardless of the active Omarchy theme.

Steps: omarchy theme set <any-theme>, then open Nautilus or Geary — colors never change.

Root cause: libadwaita ignores the gtk-theme setting by design. The only user-level lever it honors is @define-color overrides in ~/.config/gtk-4.0/gtk.css, and Omarchy never writes that file. I checked the quattro source: the only themed GTK CSS shipped anywhere is for the Hyprland share-picker.

(For the record: #2356, #2789 and #1425 asked for this and were all closed as "COMPLETED" within the same 25-minute window on 2026-02-01 — that looks like a bulk tracker cleanup; nothing was actually implemented.)

How we solved it locally (offer to contribute)

I've been running a theme-set hook since 2026-08-17 that fixes this for GTK4, ~60 lines of bash + sed, no new dependencies:

  1. Reads the active theme's colors.toml and generates ~/.config/gtk-4.0/gtk.css with the full set of libadwaita @define-color variables (window/view/headerbar/sidebar/card/popover backgrounds and foregrounds, accent, destructive/success/warning/error, selection).
  2. Picks the text color drawn on the accent with a luma-distance test (whichever of background/foreground is further from the accent in perceived brightness). Verified against all 22 stock themes: worst-case separation is 86/255 (miasma), everything else ≥ 100. A naive "is the accent dark" test fails on the five light themes.
  3. Restarts --gapplication-service daemons (nautilus, geary, gnome-calendar) after writing the CSS, because libadwaita reads the user stylesheet only at process startup — closing the window is not enough, the daemon survives and keeps painting a days-old theme. SIGTERM is safe: all of them are D-Bus activatable and respawn on demand.

Measured caveats worth knowing before implementing:

  • GTK3 cannot be recolored this way. @define-color in the user stylesheet is provider-scoped and does not reach the theme's rules — Adwaita rendered identically with and without overrides (verified with an offscreen render, not by eye). GTK3 apps still need an approximate binary theme via gtk-theme.
  • Importing a large third-party CSS first and overriding on top renders identically to pure overrides, so pure overrides are preferable (avoids parsing ~238 KB per app launch).

Question

Would a PR adding GTK4 palette generation to the theme-set pipeline be desirable? If yes, where should it live — a default hook in config/omarchy/hooks/theme-set.d/, or wired into omarchy-theme-set directly? Happy to prepare it with before/after captures across several stock themes.

View raw text
## System details

RTX 5090, Omarchy 4.0.0-1 (also verified against current `quattro` branch source)

## What's wrong?

Stock Omarchy applies no theming at all to GTK4/libadwaita applications. Nautilus, Geary, GNOME Calendar and friends render in default Adwaita colors regardless of the active Omarchy theme.

Steps: `omarchy theme set <any-theme>`, then open Nautilus or Geary — colors never change.

Root cause: libadwaita ignores the `gtk-theme` setting by design. The only user-level lever it honors is `@define-color` overrides in `~/.config/gtk-4.0/gtk.css`, and Omarchy never writes that file. I checked the `quattro` source: the only themed GTK CSS shipped anywhere is for the Hyprland share-picker.

(For the record: #2356, #2789 and #1425 asked for this and were all closed as "COMPLETED" within the same 25-minute window on 2026-02-01 — that looks like a bulk tracker cleanup; nothing was actually implemented.)

## How we solved it locally (offer to contribute)

I've been running a `theme-set` hook since 2026-08-17 that fixes this for GTK4, ~60 lines of bash + sed, no new dependencies:

1. Reads the active theme's `colors.toml` and generates `~/.config/gtk-4.0/gtk.css` with the full set of libadwaita `@define-color` variables (window/view/headerbar/sidebar/card/popover backgrounds and foregrounds, accent, destructive/success/warning/error, selection).
2. Picks the text color drawn *on* the accent with a luma-distance test (whichever of background/foreground is further from the accent in perceived brightness). Verified against all 22 stock themes: worst-case separation is 86/255 (miasma), everything else ≥ 100. A naive "is the accent dark" test fails on the five light themes.
3. Restarts `--gapplication-service` daemons (nautilus, geary, gnome-calendar) after writing the CSS, because libadwaita reads the user stylesheet only at process startup — closing the window is not enough, the daemon survives and keeps painting a days-old theme. SIGTERM is safe: all of them are D-Bus activatable and respawn on demand.

Measured caveats worth knowing before implementing:

- **GTK3 cannot be recolored this way.** `@define-color` in the user stylesheet is provider-scoped and does not reach the theme's rules — Adwaita rendered identically with and without overrides (verified with an offscreen render, not by eye). GTK3 apps still need an approximate binary theme via `gtk-theme`.
- Importing a large third-party CSS first and overriding on top renders identically to pure overrides, so pure overrides are preferable (avoids parsing ~238 KB per app launch).

## Question

Would a PR adding GTK4 palette generation to the theme-set pipeline be desirable? If yes, where should it live — a default hook in `config/omarchy/hooks/theme-set.d/`, or wired into `omarchy-theme-set` directly? Happy to prepare it with before/after captures across several stock themes.

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 04:49 UTC