Code
LibreWolf configuration
A portable LibreWolf setup for macOS and Fedora, built on FF Ultima with a custom opaque Midnight/Graphite palette.
This repository intentionally contains configuration only. It never includes cookies, browsing history, bookmarks, saved passwords, extension data, session state, account identifiers, or site permissions.
What is synchronized
- FF Ultima at a pinned revision (as a Git submodule)
- custom browser and new-tab CSS
- the Midnight theme choices and toolbar layout
- selected UI, behavior, and fingerprinting-protection preferences
uBlock Origin and Bitwarden are referenced by the toolbar layout but their data is not synchronized. LibreWolf normally ships with uBlock Origin. Install Bitwarden on each new profile before judging the final toolbar spacing.
Install
Install LibreWolf and start it once so that it creates a profile. Then close it and run:
git clone --recurse-submodules \
ssh://git@ignis.nrve.dev:32222/ak1lles/librewolf-config.git \
~/src/librewolf-config
cd ~/src/librewolf-config
./bin/install
The installer discovers these profile layouts automatically:
- macOS:
~/Library/Application Support/librewolf - native Linux:
~/.librewolf - Flatpak:
~/.var/app/io.gitlab.librewolf-community/.librewolf
The installer uses physical copies on every platform. This avoids LibreWolf
loading CSS through a linked chrome directory while failing to load image
resources referenced by that CSS. Run ./bin/install after a direct CSS edit;
sync pull and sync push already reapply the files automatically. Existing
chrome and user.js paths are moved to a timestamped
.librewolf-config-backups directory inside the profile before replacement.
Use ./bin/install --dry-run to preview, or pass --profile PATH if automatic
profile selection is not the one you want.
Keep machines in sync
Pull and apply changes made elsewhere:
./bin/sync pull
After changing the toolbar or one of the tracked about:config preferences,
close LibreWolf and publish the change:
./bin/sync push "Describe the LibreWolf change"
sync push captures only the allowlisted portable preferences, commits them,
rebases on the remote, pushes, and reapplies the result. Inspect the exact set at
any time with git diff -- user.js or ./bin/sync status.
Edit CSS directly under chrome/, then run ./bin/install. The Graphite colors
are shared by macOS and Linux, while native macOS window-control behavior
remains platform-specific.
Upstream theme updates
Update FF Ultima deliberately, test it, and then commit the new submodule pin:
git -C vendor/FF-ULTIMA fetch origin
git -C vendor/FF-ULTIMA switch --detach origin/main
git add vendor/FF-ULTIMA
git commit -m "Update FF Ultima"
git push
FF Ultima is licensed separately under MPL-2.0; see
vendor/FF-ULTIMA/LICENSE after initializing the submodule.