Skip to content

Add LibreWolf template (userChrome.css / userContent.css) using the Noctalia palette - #83

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

Add LibreWolf template (userChrome.css / userContent.css) using the Noctalia palette#83
venus-fire wants to merge 1 commit into
noctalia-dev:mainfrom
venus-fire:add-librewolf-template

Conversation

@venus-fire

Copy link
Copy Markdown

Template

  • App: LibreWolf
  • Template id (directory): librewolf
  • New template

What it themes

LibreWolf is a Firefox fork, so this is the same CSS as the firefox/ template
(native userChrome.css / userContent.css), adapted to LibreWolf's profile
locations:

  • librewolf-userChrome.css — tab bar, navigation toolbar, URL bar + results,
    bookmarks bar, sidebar, find bar, menus/panels, context menus, dialogs,
    autocomplete popups, download panel, web select dropdowns.
  • librewolf-userContent.cssabout:newtab/home, about:preferences and
    its sub-dialogs, about:addons, about:logins, about:protections,
    about:config, about:profiles, etc.

Dark and light variants are generated; the browser switches via
prefers-color-scheme. No extension required.

Testing

Tested as a user template (Noctalia v5.0.0), applied via
noctalia msg templates-apply.

  • App version tested: LibreWolf (current release, Firefox 153-era engine;
    profile under ~/.config/librewolf/librewolf/)
  • Applied a dark theme and confirmed the app picked it up (screenshots below)
  • Applied a light theme and confirmed the app picked it up
  • Re-applied twice and the app config is still correct (hooks are idempotent)

Screenshots

LibreWolf themed

LibreWolf about:preferences themed

Hooks

  • What the hook does: finds LibreWolf profiles by locating prefs.js
    (~/.librewolf, $XDG_CONFIG_HOME/librewolf including the doubled
    librewolf/librewolf/ layout, Flatpak, Snap), creates the profile chrome/
    dir, adds the Noctalia @import lines to userChrome.css/userContent.css,
    and enables toolkit.legacyUserProfileCustomizations.stylesheets,
    svg.context-properties.content.enabled and devtools.chrome.enabled
    through the profile's user.js.
  • 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.librewolf] 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.

…talia palette

LibreWolf is a Firefox fork with the same native theming mechanism. Same CSS as the firefox template, adapted profile discovery for ~/.librewolf, the XDG ~/.config/librewolf layout (including the doubled librewolf/librewolf path), Flatpak and Snap.
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