tinted-zen

July 18, 2026 · View on GitHub

A tinty template that maps a Base16, Base24, or Tinted8 color scheme to Zen Browser's UI, replacing the browser chrome colors via userChrome.css.

image

Supports base16, base24, and tinted8 color schemes.

How it works

Zen Browser (Firefox-based) exposes a set of --zen-* CSS custom properties that control its sidebar, toolbar, panels, and accent system, plus inherits Firefox's standard toolbar variables. This template generates a userChrome.css file that overrides those variables with colors drawn from the active Base16 scheme.

Color mapping

Zen / Firefox variableBase16Role
--zen-primary-colorbase0DMain accent (drives Zen's color-mix derivations)
--zen-colors-primarybase0DPrimary accent (explicit override)
--zen-colors-secondarybase02Secondary UI elements
--zen-colors-tertiarybase01Subtle background tint
--zen-colors-hover-bgbase02Hover state background
--zen-colors-primary-foregroundbase05Text on primary surfaces
--zen-colors-borderbase02Subtle border
--zen-colors-border-contrastbase04High-contrast border
--zen-colors-input-bgbase01Input field background
--zen-main-browser-backgroundbase00Main window background
--zen-dialog-backgroundbase01Dialog / panel background
--zen-toolbar-element-bgbase01Toolbar button background
--zen-toolbar-element-bg-hoverbase02Toolbar button hover
--zen-urlbar-backgroundbase01Address bar
--zen-branding-darkbase00Dark brand baseline
--zen-branding-paperbase07Light brand baseline
--zen-sidebar-notification-bgbase0DSidebar notification accent
--zen-sidebar-themed-icon-fillbase05Sidebar icon color
--toolbar-bgcolorbase01Toolbar background (Firefox)
--toolbar-colorbase05Toolbar text (Firefox)
--tab-selected-bgcolorbase02Active tab background
--tab-selected-colorbase05Active tab text
--arrowpanel-backgroundbase01Popup / dropdown background

Base24 schemes reuse this same mapping (they're a superset of Base16's base00-base0F). Tinted8 schemes have no base00-base0F at all — colors are instead drawn from Tinted8's ui/palette structure.

Setup

1. Enable userChrome.css in Zen Browser

In the address bar, navigate to about:config. Search for and set:

toolkit.legacyUserProfileCustomizations.stylesheets = true

2. Create the chrome directory

Find your profile folder via about:profilesOpen Folder for your active profile, then:

# Standard install
mkdir -p ~/.zen/<your-profile>/chrome

# Flatpak install
mkdir -p ~/.var/app/app.zen_browser.zen/.zen/<your-profile>/chrome

3. Add to your tinty config.toml

Standard install:

[[items]]
path = "https://github.com/tinted-theming/tinted-zen"
name = "tinted-zen"
themes-dir = "output"
hook = "cp \"$TINTY_THEME_FILE_PATH\" \"$HOME/.zen/$(ls ~/.zen | grep -i 'release' | head -1)/chrome/userChrome.css\""
supported-systems = ["base16", "base24", "tinted8"]

Flatpak install:

[[items]]
path = "https://github.com/tinted-theming/tinted-zen"
name = "tinted-zen"
themes-dir = "output"
hook = "cp \"$TINTY_THEME_FILE_PATH\" \"$HOME/.var/app/app.zen_browser.zen/.zen/$(ls ~/.var/app/app.zen_browser.zen/.zen | grep -i 'release' | head -1)/chrome/userChrome.css\""
supported-systems = ["base16", "base24", "tinted8"]

Multiple profiles: The glob above matches on release, since Zen/Firefox appends (release) to the actual default release-channel profile directory (e.g. 61wzmyok.Default (release)). This is more reliable than matching on Default, since multiple profiles can share that name (e.g. a second profile named Default Profile) — matching Default would pick whichever sorts first alphabetically rather than the one that's actually active. If you still end up with more than one match, hard-code the directory name instead — check about:profiles to confirm which one is active.

4. Apply a scheme

tinty apply base16-dracula

Restart Zen Browser (or reload the userChrome by navigating to about:profiles → Restart) to see the new colors.

Notes

  • Dark Base16 schemes are the primary use case and are well-tested. Light schemes will apply correctly (base00 being a light background is handled naturally) but are less thoroughly validated.
  • Zen's accent-derived variables (--zen-colors-primary, --zen-colors-secondary, etc.) are explicitly overridden here so that the full Base16 palette drives the UI rather than Zen's color-mix() derivations from a single accent color.
  • Profile directory names use a capital D in Default (release) on Linux, which matters because the filesystem is case-sensitive — the hooks above use grep -i to match either casing.

Team

This theme is maintained by the following person(s) and a bunch of awesome contributors.

GooseRooster
GooseRooster

Community

License

MIT License