/post/9 Back

My favoured browser setup

Posted 2026-09-11 12:08:40
I've been using linux for so many years and over this time I've switched between quite a few different browsers in the search of something perfect.

Qutebrowser

The first browser I used persistantly was Qutebrowser. Qutebrowser is a beautiful webview-style browser build on top of chromium. It has build in vim-like keybinds that include page hinting (very similar to the extension "vimium") and a huge array of built-in keybinds and commands that you can access through a fuzzy-search command menu (similar to dmenu). Qutebrowser was great while it lasted, it has great support for the web as its based on chromium but one of the main annoyances where its dependancies. Qutebrowser depends on the QT framework, this in itself is fine, all browsers based on other technologies must have some way of interfacing with the actual webengine. But unfortunatly the QT suite is really annoying to install on my Linux distro of choice CRUX 3.8 as it takes over 10 hours to compile and even then if dependancies are not installed in the correct order that timeframe can increase exponentially... Other then that somewhat avoidable issue, qutebrowser does not support chrome-based extensions and instead only provides a basic userscript loader. The first thought I had when I started using Qutebrowser was "How do I get an adblocker", of course UBlock would not work so I had to move over to obscure userscript-based blockers and this was annoying too as most of them are site-specific!

These issues piled up, specifically during a phase where I was reinstalling my system often (maybe twice a month). It became really annoying to have to wait for this huge dependancy chain to install in order to compile qutebrowser and even then, no adblockers make the web intollerable.. At this point I'd been using Qutebrowser for a good few years and so it was difficult to move on.

GNU Icecat

Because I love gatekeeping software I naturally wanted to find a somewhat obscure replacement for my browser component. After some mild digging I came across GNU Icecat which is a fork of Mozilla Firefox. Icecat was nice too! Icecat is based on Firefox so any extensions that work on Firefox will work on Icecat. This was a huge relief as after years of crappy adblockers I could finally use the mainstream industry standard; UBlock. Because GNU is a organisation of paranoid tech nerds, they hosted their own GNU approved extensions page that contains extensions for Icecat that are fully security checked before publishing. Icecat however had its flaws. The main flaw with Icecat is its popularity (this is my fault for choosing a niche browser). Icecat has no offical build system and GNU only hosts the source code for the project. Because of this I had to rely on 3rd party builds of the project in order to use it on my system. These 3rd parties where also responsible for keeping the build up to date so as soon as they stopped updateing icecat, it would fall out of date and become unstable. Icecat crashed and burnt as you'd expect. Overtime smaller parts of the browsser started breaking to the point where its enhanced performance over firefox dident make any difference as background services broke and caused general lag on the program.

Again this was mainly my fault for picking an obscure browser but ah well it was nice and cozy while it lasted..

Librewolf

Current browser
At this point I had learnt that in order to have a long-term browser setup, it needed to be; well-maintained with a somewhat active community, it had to be based on a 100% coverage web engine such as chromium or gecko (Firefox backend) and it cannot depend on huge split dependancies such as Qt, webkit2gtk or any other sort of system.

From these tight restrictions I started looking into forks of firefox, similar to Icecat that had larger communities and a more privacy focused description. As a productivity and aesthetics enjoyer -- I was also on the look out for programs that not only matched the prior rules but also allowed for customisation to a degree.

The only real project that fit this was Librewolf, Librewolf is a privacy-focused fork of firefox that gets frequent updates as it has a much larger community. Because of the firefox base, Librewolf supports all firefox extensions (the GNU ones from icecat also work on this).

So far so good, Librewolf fits the bill. The next step is getting it intergrateed with my desktop..

Librewolf setup

Within librewolf I've installed a few extensions that really incorperate my own idea of productivity into the web. One of the first things that I looked for was the PyWalFox extension. PyWalFox is a basic daemon extension that lets firefox use a colorscheme depecited in a json file somewhere on your local computer.I've used this to load colors from hellwal which allows for a few different parts of the browser to match the colors of my wallpaper and the rest of my desktops UI.

Now for some controversial system designs. I like the idea of the surf web browser (suckless org). Surf is a single tab browser that can only display one tab at a time. This means that instead of the browser manageing tabs, the window manager or compositor does this. This idea is great in my eyes because it removes a layer of keybinds and abstraction that you would need on the browser. For example, switching workspaces on my window manager is WIN+N but on the browser the keybind to switch tabs is ALT+CTRL+N. Having each tab be its own window is so useful as now I can manage tabs through one set of binds instead of two.

I've incorperated this system into librewolf.. It works flawlessly most of the time. I did this by installing a Firefox extension called "Tab Limiter Plus" which allows you to limit the amount of tabs per window. To get this behavior, install the extension and open the preferences page either from the extensions icon on the toolbar or from the about:addons page. I'm using the following settings:

Window (max tabs per window): 1
Domain (max tabs per domain): 60
All windows (max tabs across all windows): 60
Press the settings cog in the top-right and enable "Balence Tabs" which forces new tabs into a new window when the per-window limit is exceeded.

Now that tabs are split between windows do we really need the titlebar or toolbar? I've removed it using the userChrome.css feature. To do this enable it first in the about:config options under "toolkit.legacyUserProfileCustomizations.stylesheets" (set it to true). Close and open Librewolf/Firefox and go to the "about:support" page and look under the "Profile directory" value. Open that directory and create the following structure:
2 librewolf/
3 | librewolf/
4 | | *.default/
7 | | | chrome/
8 | | | | userChrome.css
9 | | | | userChrome.css.html

This userChrome.css file is a css stylesheet that effects the UI of the browser only (not pages). This is what is used for any lower level customisations of any Firefox build. Inside this userChrome file, I've put in the following:
 1 :root {
 2     --tab-border-radius: 0px !important;
 3     --toolbarbutton-border-radius: 0px !important;
 4     --border-radius-medium: 0px !important;
 5     --border-radius-small: 0px !important;
 6     --arrowpanel-menuitem-padding: 4px 8px !important;
 7 }
 8 
 9 menupopup:not(.in-menulist) > menuitem,
10 menupopup:not(.in-menulist) > menu {
11     padding-block: 2px !important;
12     min-height: unset !important;
13 }
14 
15 /* Hide the entire tab bar */
16 #TabsToolbar {
17     display: none !important;
18 }
19 
20 /* Hide the address/search/navigation bar */
21 #nav-bar {
22     /* display: none !important; */
23 }
24 
25 /* Hide the titlebar */
26 #titlebar {
27     display: none !important;
28 }
29 

This disables border-radiuses along with completley removing all the UI above the bookmarks bar. This adds to the minimal and clean look! Now you may be wondering what the caveat is here, the only issue I've found with this setup is that when opening firefox specific pages (pages that start in "about:") a secondary blank page is opened. Another thing to note is that in Librewolf, new tabs can only either be a blank page or a Librewolf home page, which only refers you to the top search bar anyway. To negate that second issue, I've simply installed an addon that changes the new tab site, the extension I used is called "New tab override" but I'm sure that kind of extension has many sources.

Thats pretty much it, the only other thing that I've added is that I've enabled the "full-screen-api.ignore-widgets" option in about:config. This open just makes it so that windows don't force the window manager into fullscreen mode when a tab is fullscreened. This means that a video or any other tab could be fullscreened on a window without it forcing that single window to fullscreen over the entire screen and instead the window stays the same.. It's kind of hard to explain. Anyway its getting late so I'm off to bed. Hopefully this rant/timeline/blog/guide helped you in some way and you dident just waste your time!
Thank you!

Sources:

surf.suckless.org
.nu
ewolf.net
ikipedia.org/wiki/GNU_IceCat
illa.gnu.org/index.php
browser.org/
um.github.io/
soeren-hentzschel.at/firefox-webextensions/new-tab-override
ub.com/frewacom/Pywalfox
ub.com/gorhill/uBlock
github.com/tavlean/TabLimiter