Why applications look different after an Omarchy theme change
Trace theme generation and application updates, distinguish dark mode from palette matching, and customize one terminal template.
Based on public documentation; not hardware-tested. Match the instructions to your version and hardware.
You choose a theme: the bar changes immediately, a new terminal looks right, but the file manager still uses different colors. That does not establish one common failure. These surfaces may use different theme mechanisms, and applying dark mode is not the same as supplying every color in an Omarchy palette.
This guide targets the pinned source’s theme pipeline. Keep using the theme gallery to choose appearances; use this page to understand differences and make a small template experiment. Check your installed version and paths first, especially if a tutorial mentions the older ~/.config/omarchy/current/ layout.
1. Follow the theme from source to application
Section titled “1. Follow the theme from source to application”built-in theme + personal theme overlay → clean staging directory → palette and template generation → active theme under ~/.local/state/omarchy/current/theme/ → shell notification and app-specific color/reload commands → theme-set hooksThere are two separate questions: was a correct config generated, and did the application consume it? A terminal already running can receive color updates while still retaining a font size read at startup. An editor with its own theme setting can continue using it even when generated files are correct.
The active directory is rebuilt during theme activation. Editing files there can create a temporary success that disappears on the next selection. Keep permanent changes in a personal theme, a personal template, or the relevant app’s own settings.
2. Decide what kind of matching you expect
Section titled “2. Decide what kind of matching you expect”| Surface | Mechanism in this source | What to check |
|---|---|---|
| Omarchy Shell | Palette and shell appearance tokens | Personal shell.toml overrides |
| Foot | Generated include plus running-terminal color updates | Include path, fresh window and actual selection colors |
| Other supported terminals | Terminal-specific files and reload methods | Correct terminal config and its override order |
| Browser | Browser-specific integration | Selected browser, policy/theme settings, own extensions |
| Editor | Editor-specific integration | Active app theme and personal plugins/settings |
| GNOME applications | Light/dark preference, GTK theme name and icon theme | Do not equate those with a complete custom palette |
| App with no integration | Its own appearance controls | An explicit integration is needed for automatic matching |
Web-page colors belong to the page or browser extension too. A themed browser frame does not require every website to change. Compare equivalent surfaces: terminal selection with terminal selection, not a browser page with a menu background.
3. Investigate a file manager that does not look identical
Section titled “3. Investigate a file manager that does not look identical”Record the current theme, then compare one supported terminal and the file manager. In the normal graphical user session, query:
omarchy theme currentgsettings get org.gnome.desktop.interface color-schemegsettings get org.gnome.desktop.interface gtk-themegsettings get org.gnome.desktop.interface icon-themeThe pinned GNOME integration writes light/dark preferences, selects Adwaita or Adwaita-dark, and sets an icon theme. It does not generate an entire GTK4/libadwaita color stylesheet. If Nautilus changes light/dark appearance or icons but does not adopt the bar’s exact palette, that can be the integration’s boundary rather than a broken theme activation.
These queries describe stored settings; an app can still ignore a setting or need reopening. Save work and reopen only the affected app to compare. Do not reset all themes to fix an application’s independent appearance.
For a community GTK hook, inspect its generated file and supported app versions before trying it. A script designed for one theme may emit invalid colors when another palette lacks the keys it expects. Existing GTK CSS should be saved, and the hook itself must be disabled when undoing it; restoring CSS while leaving a writer active is not a lasting rollback.
4. Check Foot’s configuration and the generated palette
Section titled “4. Check Foot’s configuration and the generated palette”The shipped personal Foot file starts with an include of the active theme:
[main]include=~/.local/state/omarchy/current/theme/foot.iniInspect your own file; do not replace its contents with this excerpt. If the include is absent or points to an old path, that explains why newly opened windows may differ. Personal color sections can also affect startup settings. See the installed Foot manual for how it resolves multiple definitions.
With grep available, inspect only the relevant lines:
grep -n 'selection-' ~/.local/state/omarchy/current/theme/foot.iniIf the generated file looks right but a running window differs, open a new Foot window. The theme helper uses terminal color escape sequences for running instances; a program running inside the terminal can also change terminal colors. If the fresh window is correct, isolate the app/runtime state before changing the template.
5. A practical personal template experiment
Section titled “5. A practical personal template experiment”Goal: use the theme accent for selected terminal text’s background across compatible themes. Before starting, record the current theme and back up any existing ~/.config/omarchy/themed/foot.ini.tpl. If absent, record the absence. A template with this name affects all theme selections that generate this output.
In a session where OMARCHY_PATH points to your installation, confirm the source template exists. Then copy the complete template, retaining all its palette definitions:
mkdir -p ~/.config/omarchy/themedcp -i "$OMARCHY_PATH/default/themed/foot.ini.tpl" ~/.config/omarchy/themed/foot.ini.tplDo not overwrite an existing template unless you have saved it and intentionally want a new baseline. In your copy, change only these two existing lines:
selection-foreground={{ background_strip }}selection-background={{ accent_strip }}_strip emits a hex color without #, as this output expects. This file is a template; the braces belong in the .tpl, not in the final generated foot.ini. The chosen foreground/background pair is an experiment, not an automatic contrast guarantee.
Apply the recorded theme again through Style → Theme. Inspect the generated selection lines, then open a new terminal and select this harmless printed sample:
printf 'Selection sample 123 中文\n'Check both letters and Chinese glyphs. Compare a second light or dark theme and then return to the original. If selected text is hard to read, restore the original two lines; a consistent rule across themes does not guarantee a readable pair for every palette.
6. Understand why a personal template can be bypassed
Section titled “6. Understand why a personal template can be bypassed”The ordering in this source is:
- An eligible theme’s hand-written output file already in staging is retained.
- If output is missing, a personal template with that output name renders first.
- Otherwise, the built-in template provides the output.
Thus a theme shipping its own eligible foot.ini can bypass a user template. Themes cloned through the supported theme installer have code-capable files, including terminal configs and Lua, filtered during staging; those outputs are regenerated from the palette. A locally authored theme and an installed clone are treated differently. This filtering is a defined installation boundary, not a sandbox or a reason to bypass it.
If generation does not happen, also check for colors.toml, the precise template filename, and whether you applied the theme after editing. Adding a template for an unsupported app only generates a file in the active directory; the app must be configured to read it and reload it. That full integration is a separate task.
7. Restore and test the actual boundary
Section titled “7. Restore and test the actual boundary”Restore the saved personal template, or move the newly created template to a fresh archive name that does not end in .tpl. Apply the original theme again, inspect the regenerated file, and open a fresh terminal. Editing the active output back by hand is not a permanent undo.
If you changed app settings or added a hook, restore those separately. Theme selection does not restore every app’s preferences. Keep a small matrix of shell, fresh terminal, existing terminal and affected app; it tells you whether the remaining difference is generation, reload, personal override or unsupported integration.
Sources and related guides
Section titled “Sources and related guides”Theme activation · Template precedence · GNOME integration · Foot template · Official theme authoring
Continue with fonts and text size, the theme gallery, or configuration maintenance.