I've had enough of QtWebEngine
I’ve been using the web browser qutebrowser for several years now. It has been my favorite web browser since the very first day when tried it. I like the minimal user interface and I love that it’s 100% keyboard driven.
Unfortunately, after more than 5 years with qutebrowser, I’m back with Firefox. I don’t know if it’s temporary or not. The reason for it is primarily due to the elephant in the room; QtWebEngine.
What QtWebEngine is and why I used it to begin with
QtWebEngine is a web engine by The Qt Company (formerly known as Trolltech). QtWebEngine “integrates Chromium’s fast moving web capabilities into Qt”, but without including any binary files or any malware from Google.
It has never been my first-hand choice, but I was kinda forced to use it. When I first started using qutebrowser, it supported two web engines; QtWebEngine and QtWebKit. I choose QtWebKit without even thinking twice about it. Unfortunately, the support for QtWebKit was dropped a year later back in 2017. Apparently it was no longer being maintained upstreams.
I was then left with two options: Leaving qutebrowser or installing QtWebEngine. I decided to install QtWebEngine, but after about 4 years with it, I’m no longer having it.
What I don’t like about QtWebEngine
QtWebEngine is a ridiculously large massive pile of bloat. I remember having issues running out of both disk space and memory the first time I tried compiling it on my modern quad core computer with 16 GB of RAM. It was a painful chore that I felt was forced upon me.
It took me about 2 hours to compile QtWebEngine back then. Fast-forward to today and the very same package now takes 5 hours to install. For comparison; the Linux kernel (version 5.*) takes about one hour to compile—using the genkernel configuration—and about 10 minutes using my custom kernel configuration.
And I’m one of the lucky ones with a decent desktop computer. I’ve seen other users with laptop computers, where it takes more than 30 hours to compile QtWebEngine for them. I have plans on eventually getting a laptop myself, and there’s no way I’m ever going through that amount of pain for something simple as a web browser.
- It (as of recently) now require Node.js for some reason.
- It still relies on Python 2, which has been end-of-life (EOL) since January 1, 2020. Something that was announced back in Mars 2018. This means that any known security vulnerabilities will not be fixed.
- I simply don’t like Qt. The Qt project is a commercial semi-closed source project and I don’t trust them. Their long-term support versions of Qt is closed source and only available if you buy a commercial license for it. While the newer version of the Qt framework is available for everyone, it’s not stable and most features found in their LTS-version are not even available in the open source version to begin with. This means that people who want to use the open source version are forced to use old and unsupported versions of Qt.
Alternative web browsers
I ultimately decided to look for alternative web browsers that doesn’t use QtWebEngine. I tried Luakit and a few other niche Vim-like web browsers. And while they’re all alright, I felt too used to the ways how qutebrowser works after using it for so long. I also didn’t feel like I have the time or patience to start over with a new web browser from scratch.
Niche web browsers like qutebrowser and Luakit are just like any niche tiling window manager in that regard; they’re all designed around a specific philosophy. And while it’s possible to configure most to your liking, if you’re not fully committed to their philosophy, you’re going to constantly struggle in headwind.
My old friend Firefox
I then decided to give Firefox a second chance. I’m already using Firefox as my secondary web browser for websites that I don’t trust and/or just doesn’t work well with qutebrowser. While Firefox isn’t as sleek as qutebrowser, I can’t really be bothered with it. I guess I’m simply getting more pragmatic with age.
I also use a few security and/or quality of life addons with Firefox that technically makes it into a excellent web browser.
And I’m fully aware of the fact that Mozilla (the company behind Firefox) is far from perfect. I would rather use some more libre friendly fork of Firefox, but I haven’t really been bothered exploring that yet.
My Firefox addons
All descriptions are borrowed from the addons themselves.
- uBlock Origin - uBlock Origin is not an “ad blocker”, it’s a wide-spectrum content blocker with CPU and memory efficiency as a primary feature.
- uMatrix - Point & click to forbid/allow any class of requests made by your browser. Use it to block scripts, iframes, ads, facebook, etc.
- Privacy Possum - Privacy Possum monkey wrenches common commercial tracking methods by reducing and falsifying the data gathered by tracking companies.
- Decentraleyes - Protects you against tracking through “free”, centralized, content delivery. It prevents a lot of requests from reaching networks like Google Hosted Libraries, and serves local files to keep sites from breaking. Complements regular content blockers.
- History Cleaner - Deletes browsing history older than a specified number of days.
- Cookie AutoDelete - This WebExtension is inspired by Self Destructing Cookies. When a tab closes, any cookies not being used are automatically deleted. Whitelist the ones you trust while deleting the rest.
- Firefox Multi-Account Containers - Firefox Multi-Account Containers lets you keep parts of your online life separated into color-coded tabs that preserve your privacy. Cookies are separated by container, allowing you to use the web with multiple identities or accounts simultaneously.
- Facebook Container - Prevent Facebook from tracking you around the web. The Facebook Container extension for Firefox helps you take control and isolate your web activity from Facebook.
- Stylus - Redesign your favorite websites with Stylus, an actively developed and community driven userstyles manager. Easily install custom themes from popular online repositories, or create, edit, and manage your own personalized CSS stylesheets.
- Copy Selection as Markdown - Copy title, URL, and selection as Markdown.
- Dark Website Forcer - Adjusts the website’s color scheme, so that all websites are dark by default, if they have a special design for that. It makes websites look dark even with a light system style. (I use this to debug my own website since desktop doesn’t support any dark mode itself)
These addons is something that I have actually missed with qutebrowser. It feels good having them with my default web browser again.
Vim-like keybindings in Firefox
I could never use a web browser that doesn’t have decent support for Vim-like keybindings. I used to think it was important to be able to use the keyboard for exactly everything, and that the UI had to be as minimal as possible. Today, I’m okay with using the mouse for things like changing the settings for any addon. As long as I don’t have to use the mouse when I browse any website.
I looked for an addon that adds Vim-like keybindings and I quickly found Vimium, which apparently is a popular addon for Chromium that’s now available for Firefox as well. It’s currently not on par with the two discountinued addons Vimperator and Pentadactyl (a fork of Vimperator), which is two addons that I used with Firefox prior to using qutebrowser, but that’s okay to be honest. Vimium works good enough for me today.
I have no idea what the future looks like with regards to my choice of web browser. I still like qutebrowser, but I don’t think I’ll ever be bothered installing it again, as long as they’re using QtWebEngine. I also don’t know if Firefox is my final choice or I’ll find something that I like even more.
Feel free to recomend me any good web browser! It should preferably be libre software and available in the Gentoo repositories.