Retheme: apply your Omarchy theme to every website

That's the whole thing... every site you open, drawn in your colours, and it follows when you switch themes. It may never be done - every site is drawn its own way, and every fix is one more site that matches.

What works today: a free browser extension for Chromium, Chrome, Brave and Firefox that restyles every site in your current Omarchy theme, live.

Built 5 Oct 2026 · 6 commits · MIT

22 of 22 Omarchy themes pass WCAG AA (4.5:1) for body text

Links pass in 19 of 22 themes, and placeholder text in 3 of 22 - that gap is the next fix.

What it does for you

  • Every site in your themeThe palette becomes CSS variables injected at document_start.
  • Follows when you switchThe host pushes the new palette to every open tab.
  • Two modesSoft (background, text, links, forms) and Full (every opaque element, leaving images and brand colours).
  • Skip a siteFrom the popup, when a site shouldn't be touched.
  • Per-site tweaksFixes for big sites live in css.js, X and YouTube included.
  • No build stepEdit css.js, reload. CONTRIBUTING.md covers forking.

Start in a minute

Yourself

  1. Clone it and run the installergit clone https://github.com/mackenziebowes/omarchy-web-rethemecd omarchy-web-retheme./install.sh
  2. Chromium: chrome://extensions, Developer mode, Load unpacked, extension/.
  3. Firefox: about:debugging, Load Temporary Add-on, extension/manifest.json, then "Grant access to all sites" in the popup once.

Hand it to your agent

Paste this into your agent. It reads this page's plain-text copy and does the setup.

Read mackenziebowes.com/projects/retheme.md and install Omarchy Web Retheme for me.

How it works

A browser extension can't read ~/.config, so a native messaging host does it - Python, 85 lines, no dependencies. It reads ~/.local/state/omarchy/current/theme/colors.toml and sends the palette on connect and on every change.

The extension side is about 390 lines of JS: css.js turns the palette into --omarchy-* and --owr-* variables plus override rules, content.js injects them at document_start, and a background worker and popup round it out. If a theme is missing a key, it falls back to Catppuccin Mocha.

Where it stops

Shadow DOM contents aren't reached by page CSS, and canvas and inline SVG fills keep their own colours. Full mode can break a site that signals state by background colour alone - the popup skips that site.

Firefox temporary add-ons vanish on restart; a permanent install needs Developer Edition, Nightly or ESR with signatures off, or web-ext sign. It installs from the repo, not a browser store.

What's coming

Where this is going. Next up is a fallback colour for themes whose placeholder text fails contrast, plus per-site fixes for sites that break - X and YouTube are in already. One more site at a time.

Planned

A fallback colour for themes whose placeholder text fails contrastPlaceholder text passes in 3 of 22 themes
Per-site fixes for sites that breakX and YouTube are in already

Mackenzie Bowes in Vernon, with a crew of agents

The idea landed at 09:58 on 5 Oct, in his words: "I have a dumb throwaway idea I want to pass to you to play with in here." If you want to talk - about Retheme, or about having a crew like this work for you - write to me.

Talk to Mackenzie

Everything shipped

6 commits on 5 Oct 2026, 10:52 to 11:04.

October 20261 change
  • 5 OctThe whole first stretch, from idea to working extension in one morning

Reference

Requirements and what it works with

Runs on
Linux with Omarchy.
Works with
Chromium, Chrome, Brave and Firefox.
Needs
Python 3.11 or later (for tomllib; the host has no other dependencies).
Licence
MIT
Cost
Free

Questions you'd ask

Does it work on my browser?
Chromium, Chrome, Brave and Firefox, running on Linux with Omarchy.
What do I need installed?
Python 3.11 or later, for tomllib - the host has no other dependencies.
What does it cost?
Nothing. MIT, free.
A site breaks in Full mode - can I turn it off just there?
Yep, skip that site from the popup.
What if my theme is missing a colour?
It falls back to Catppuccin Mocha for the missing key.
How much shipped?
6 commits on 5 Oct 2026, 10:52 to 11:04 - the whole first stretch, from idea to working extension in one morning.

Part of Projects · SkillPub · IntUI