Skip to content

Add Ungoogled Chromium template (native theme extension) using the Noctalia palette - #84

Open
venus-fire wants to merge 1 commit into
noctalia-dev:mainfrom
venus-fire:add-ungoogled-chromium-template
Open

Add Ungoogled Chromium template (native theme extension) using the Noctalia palette#84
venus-fire wants to merge 1 commit into
noctalia-dev:mainfrom
venus-fire:add-ungoogled-chromium-template

Conversation

@venus-fire

Copy link
Copy Markdown

Template

  • App: Ungoogled Chromium
  • Template id (directory): ungoogled-chromium
  • New template

What it themes

Chromium has no userChrome.css, so this template uses Chromium's native
theming mechanism — a theme extension (manifest.json with M3 colors and
tints). Noctalia renders the manifest into a stable path
($XDG_CACHE_HOME/noctalia/ungoogled-chromium/theme/manifest.json) on every
palette change; the browser loads that folder as an unpacked theme.

Colors themed: window frame, tab strip / toolbar, bookmark bar text, new tab
page background/text/link.

Because a static theme can't follow prefers-color-scheme, the manifest uses
default-mode tokens (the user's current Noctalia mode); switching dark/light
re-renders the manifest and a browser restart applies it.

Testing

Tested on this machine (Noctalia v5.0.0). The theme was loaded via
--load-extension and confirmed registered as the active theme
(extensions.theme.id + pack set in the profile Preferences), then
screenshotted.

  • App version tested: ungoogled-chromium 151.0.7922.71
  • Applied a dark theme and confirmed the app picked it up (screenshots below)
  • Applied a light theme and confirmed the app picked it up (mode was dark during testing)
  • Re-applied twice and the app config is still correct (hooks are idempotent)

One-time manual step: load the theme folder unpacked from chrome://extensions
(Developer mode → Load unpacked), which is the standard way to install
extensions in ungoogled-chromium. After that the stable path keeps receiving
updates, so no further manual steps are needed per palette change.

Screenshots

Ungoogled Chromium themed

Ungoogled Chromium new tab themed

Hooks

  • What the hook does: ensures the theme directory exists and prints a
    one-time install notice (idempotency marker: INSTALL.txt); it downloads
    nothing and touches only the template's own cache directory.
  • It is idempotent: running it twice does not duplicate lines or corrupt the config.
  • It fails loudly (non-zero exit, message on stderr) when the app's config is missing.
  • It downloads nothing and executes nothing it did not ship in this directory.
  • It touches only this app's own config.

Checklist

  • The directory name matches the [catalog.ungoogled-chromium] id in template.toml.
  • category is one of: ai, audio, browser, chat, compositor, editor, gaming, launcher, system, terminal, misc.
  • Every input_path names a file that exists in this directory.
  • No generated output or app-specific personal config is committed.

…ctalia palette

Chromium has no userChrome.css, so this renders a Chrome theme extension (manifest.json with M3 colors/tints) into a stable path. Load it unpacked once from chrome://extensions; palette updates re-render the manifest in place.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant