Firefox GNOME theme
A GNOME theme for Firefox
This theme follows latest GNOME Adwaita style.
Disclaimer:
Be aware that this theme might do things that are not supported by upstream Firefox. If you face an issue while using this theme, report it here first or test if it is reproducible in vanilla Firefox.
If you are a software distribution maintainer, please do not ship this changes by default to your users unless you made extremely clear that they are using a modified version of Firefox UI.
Description
This is a bunch of CSS code to make Firefox look closer to GNOME's native apps.
Getting in Touch
Matrix room: #firefox-gnome-theme:matrix.org
Firefox versions support
The master
branch of this repo supports the current Firefox stable release 116
.
Theme versions compatible with older Firefox releases are preserved as git tags.
We also have the beta
branch for fixes only applicable to the current Firefox beta version.
Installation
Installation script
-
Clone this repo and enter folder:
git clone https://github.com/rafaelmardojai/firefox-gnome-theme && cd firefox-gnome-theme
-
Checkout a git branch or tag if needed, otherwise use
master
and ignore this step.git checkout beta # Set beta branch git checkout v78.1 # Set v78.1 tag git checkout v$(firefox --version | cut -d ' ' -f 3 | cut -d '.' -f 1) # Using Firefox version
-
Run installation script
Auto install script
This script will lookup Firefox profiles location and enable a theme variant for your GTK theme if it exists.
./scripts/auto-install.sh
Install script
./scripts/install.sh # Standard ./scripts/install.sh -f ~/.var/app/org.mozilla.firefox/.mozilla/firefox # Flatpak ./scripts/install.sh -f ~/snap/firefox/common/.mozilla/firefox #Snap
Script options
-
-f <firefox_folder_path>
optional- Set custom Firefox folder path, for example
~/.mozilla/icecat/
. - Default:
~/.mozilla/firefox/
- Set custom Firefox folder path, for example
-
-p <profile_name>
optional- Set custom profile name, for example
e0j6yb0p.default-nightly
. - Default: All the profiles found in the firefox folder
- Set custom profile name, for example
-
-t <theme_name>
optional- Set the colors used in the theme.
- Default: Adwaita.
- Options:
adwaita
,maia
.
-
One command curled script
You can also install this theme with one command:
curl -s -o- https://raw.githubusercontent.com/rafaelmardojai/firefox-gnome-theme/master/scripts/install-by-curl.sh | bash
It will download the latest version of the theme and run the auto installation script for you.
Manual installation
-
Go to
about:support
in Firefox. -
Application Basics > Profile Directory > Open Directory.
-
Open directory in a terminal.
-
Create a
chrome
directory if it doesn't exist:mkdir -p chrome cd chrome
-
Clone this repo to a subdirectory:
git clone https://github.com/rafaelmardojai/firefox-gnome-theme.git
-
Create single-line user CSS files if non-existent or empty (at least one line is needed for
sed
):[[ -s userChrome.css ]] || echo >> userChrome.css [[ -s userContent.css ]] || echo >> userContent.css
-
Import this theme at the beginning of the CSS files (all
@import
s must come before any existing@namespace
declarations):sed -i '1s/^/@import "firefox-gnome-theme\/userChrome.css";\n/' userChrome.css sed -i '1s/^/@import "firefox-gnome-theme\/userContent.css";\n/' userContent.css
-
Symlink preferences file:
cd .. # Go back to the profile directory ln -fs chrome/firefox-gnome-theme/configuration/user.js user.js
-
Restart Firefox.
-
Open Firefox customization panel and move the new tab button to headerbar.
-
Be happy with your new gnomish Firefox.
Required Firefox preferences
We provide a user.js configuration file in configuration/user.js
that enable some preferences required by this theme to work.
You should already have this file installed if you followed one of the installation methods, but in any case be sure this preferences are enabled under about:config
:
-
toolkit.legacyUserProfileCustomizations.stylesheets
This preference is required to load the custom CSS in Firefox, otherwise the theme wouldn't work.
-
svg.context-properties.content.enabled
This preference is required to recolor the icons, otherwise you will get black icons everywhere.
For other non essential preferences checkout
configuration/user.js
.
Updating
You can follow the installation script steps again to update the theme.
Uninstalling
- Go to your profile folder. (Go to
about:support
in Firefox > Application Basics > Profile Directory > Open Directory) - Remove
chrome
folder. - Remove the unwanted preferences from your
user.js
inside your profile folder. The install script append the needed prefs in that file, you can check what preferences does it append by checkingconfiguration/user.js
in this repo.
Enabling optional features
Optional features can be enabled by creating new boolean
preferences in about:config
.
- Go to the
about:config
page - Type the key of the feature you want to enable
- Set it as a
boolean
and click on the add button - Restart Firefox
Features
-
Hide single tab
gnomeTheme.hideSingleTab
Hide the tab bar when only one tab is open.
Note: You should move the new tab button out of the tabbar or it will be hidden when there is only one tab. You can rearrange the toolbars doing a right-click on any toolbar and selecting "Customize Toolbar…".
-
Normal width tabs
gnomeTheme.normalWidthTabs
Use normal width tabs as default Firefox.
-
Bookmarks toolbar under tabs
gnomeTheme.bookmarksToolbarUnderTabs
Move Bookmarks toolbar under tabs.
-
Active tab contrast
gnomeTheme.activeTabContrast
Add more contrast to the active tab.
-
Close only selected tabs
gnomeTheme.closeOnlySelectedTabs
Show the close button on the selected tab only.
-
System icons
gnomeTheme.systemIcons
Use system theme icons instead of Adwaita icons included by theme.
Note: This feature has a known color bug.
-
Symbolic tab icons
gnomeTheme.symbolicTabIcons
Make all tab icons look kinda like symbolic icons.
-
Hide WebRTC indicator
gnomeTheme.hideWebrtcIndicator
Hide redundant WebRTC indicator since GNOME provides their own privacy icons in the top right.
-
Hide unified extensions button
gnomeTheme.hideUnifiedExtensions
Hide unified extensions button from the navbar, you can also use
extensions.unifiedExtensions.enabled
instead, which is only going to work till Firefox 111. -
Drag window from headerbar buttons
gnomeTheme.dragWindowHeaderbarButtons
Allow dragging the window from headerbar buttons.
Note: This feature is BUGGED. It can activate the button with unpleasant behavior.
-
Tabs as headerbar
gnomeTheme.tabsAsHeaderbar
Place the tabs on the top of the window, and use the tabs bar to hold the window controls, like Firefox's standard tab bar.
Note: Enabling with
gnomeTheme.hideSingleTab
will replace the single tab with a title bar.
Extensions support
We also have optional features to enable support for some Firefox extensions.
Be aware that extensions support are maintained by the community, so requests to support new extensions are not allowed and the included ones could get broken until someone shows up to fix them.
-
Tab center reborn support
gnomeTheme.extensions.tabCenterReborn
Enable the vertical tab trough the extension : Tab Center Reborn.
Note: You also need to copy the contents of the file
configuration/extensions/tab-center-reborn.css
into the settings page of Tabcenter-reborn..
Note2: You can also maintain the vertical tab always open withgnomeTheme.extensions.tabCenterReborn.alwaysOpen
Known bugs
CSD have sharp corners
See upstream bug.
Wayland fix:
- Go to the
about:config
page - Search for the
layers.acceleration.force-enabled
preference and set it to true. - Now restart Firefox, and it should look good!
X11 fix:
- Go to the
about:config
page - Type
mozilla.widget.use-argb-visuals
- Set it as a
boolean
and click on the add button - Now restart Firefox, and it should look good!
Icons color broken with System icons
Icons might appear black where they should be white on some systems. I have no idea why, but you can adjust them directly in the system-icons.css
file, look for --gnome-icons-hack-filter
& --gnome-window-icons-hack-filter
vars and play with css filters.
Development
If you wanna mess around the styles and change something, you might find these things useful.
To use the Inspector to debug the UI, open the developer tools (F12) on any page, go to options, check both of those:
- Enable browser chrome and add-on debugging toolboxes
- Enable remote debugging
Now you can close those tools and press Ctrl+Alt+Shift+I to Inspect the browser UI.
Also you can inspect any GTK3 application, for example type this into a terminal and it will run Epiphany with the GTK Inspector, so you can check the CSS styles of its elements too.
GTK_DEBUG=interactive epiphany
Feel free to use any parts of my code to develop your own themes, I don't force any specific license on your code.
Credits
Developed by Rafael Mardojai CM and contributors. Based on Luna Kurame's original work.
Donate
If you want to support development, consider donating via PayPal. Also consider donating upstream, Firefox & GNOME.