Firefox

From /tech/ Wiki
Jump to navigationJump to search
Tip: This topic is also covered in the wikis for Arch, Debian and Gentoo.
Mozilla Firefox
Firefox-logo.png
Developer(s) Mozilla Corporation
Repository(-ies) https://hg.mozilla.org/mozilla-central/
Written In C++, JavaScript, HTML, C, Rust
Layout Engine Gecko, Quantum
License MPL 2.0
Website https://www.mozilla.org/firefox/

Firefox is a web browser developed by the Mozilla Corporation, a subsidiary of the Mozilla Foundation. It is highly customizable by means of add-ons (extensions, plugins, themes), although less-so since Firefox 57.0 (Firefox Quantum) which deprecated legacy extensions in favor of more restrictive WebExtensions. Firefox is also known for it's adherence to Web standards.

For any overview of the various branches and forks of Firefox see Web browsers#Mozilla Firefox.

Extensions

Tip: Some of the listed extensions may overlap slightly. They are both listed for modularity. Some people like one thing, and some like the other or a third. Pick your poison.

Privacy & Security Extensions

Tip: Ad-blocking extensions have been moved to Ad blocking.
Warning: While these extensions are well-intentioned, they can produce browser behaviors vulnerable to fingerprinting. If anything serious is at stake, use the Tor Browser.

Decentraleyes.png Decentraleyes (repo) (privacy policy)

  • Decentraleyes is a local CDN emulator. It is designed to counter tracking via CDN requests by intercepting those requests and serving the same resources from a local cache. This additionally results in faster page load times and reduced bandwidth use.
  • LocalCDN is a fork of Decentraleyes that supports more CDNs.

Https-everywhere.png HTTPS-Everywhere (repo) (privacy policy)

  • HTTPS Everywhere encrypts your communications with many major websites according to pre-defined rulesets. It has more personalized support for particular websites than Smart HTTPS. However, if a site does support HTTPS but is not in the ruleset, then HTTPS Everywhere will not redirect you.

Smarthttps.png Smart HTTPS (repo)

  • Smart HTTPS functions differently than HTTPS-Everywhere. It does not use a ruleset and instead tries to bridge a secure connection for every connection. If a secure connection cannot be established it will fallback to HTTP.

48px HTTPZ (repo)

  • HTTPZ is similar to Smart HTTPS, but offers protection against SSL-stripping.

Cookie-autodelete.png Cookie AutoDelete (repo) (privacy policy)

  • Cookie AutoDelete will delete unused cookies upon closing a tab. Supports container tabs (see below).

Multi-account-containers.png Multi Account Containers (repo)

  • Multi Account Containers is an Mozilla-developed extension that uses part of the security model of Firefox OS to create sandboxed tabs and manage them. May be incompatible with certain extensions.

Noscript.png NoScript Security Suite (repo)

  • NoScript allows JavaScript, Java and other executable content to run only from trusted domains of your choice. Similar results can be achieved with a combination of uMatrix and uBlock Origin.

Umatrix.png uMatrix (repo)

uMatrix's fine-grained control
Tip: Try out the "recipes" feature, for pre-configured websites
  • uMatrix is a powerful matrix-based in-browser firewall that goes well with uBlock Origin. By default it blocks all third party domains, which prevents some websites and especially those serving external resources, from properly functioning - or even loading at all. Broken websites must be unbroken manually by tinkering with the matrix, each change often revealing more cells which themselves must be allowed through the firewall. Barring any major website re-designs, this process is only needed once per domain. But if you're just not in the mood to play Minesweeper, there is what is basically a "rage quit" button to temporarily turn off the firewall at the cost of privacy and security. This feature does not however unblock hosts in uMatrix's pre-defined blocklists.[1]

Invidition.png Invidition (repo)

Privacyredirect.png Privacy Redirect (repo)

Trackmenot.png Track Me Not (repo)

  • Track Me Not performs random search queries in the background to obfuscate your real ones. Pairs well with Adnauseum.

Snowflake.png Snowflake (repo)

  • Snowflake turns your browser into a proxy for Tor users living in censored countries.

48px GNU LibreJS is an extension designed to block proprietary non-trivial JavaScript code.

Legacy extensions

Tip: Legacy extensions have been purged from Mozilla Add-ons. They are preserved in the Classic Addon Archive.

The following extensions use a deprecated format in modern versions of Firefox. Some forks of Firefox such as Waterfox maintain support.

Classicthemerestorer.png Classic Theme Restorer (repo)

Vimfx.png VimFx (repo)

  • VimFx seamlessly adds Vim-like shortcuts and modes without changing Firefox's appearance or behavior. Because VimFx is an XUL extension it is more capable than similar extensions such as Vimium-FF.
  • LegacyFox is a shim that patches newer Firefox versions to run this extension in particular. When using this patch, certain extensions may fail to install. If this happens launch Firefox without the config.js file located in /usr/lib/64/firefox or /usr/lib/firefox directory. Add it back after installing the problematic extensions.
  • VimFx has an API that can be used to write custom shortcuts in CoffeeScript.

Usability Extensions

User Script Managers

Warning: The Tampermonkey extension became proprietary in 2018. Avoid and use of the above instead.

Userscripts are client-side extensions for websites. User-scripts can alter web pages cosmetically, e.g. wide-github (similar to userstyles/userContent.css). They can also add additional feature, e.g. 4chan-x. You can find userscripts on Userscripts.org (mirror) and Greasey Fork

Greasemonkey.png Greasemonkey (repo)

Violentmoney.png Violentmonkey (repo) (privacy policy)

  • Violentmonkey is more active and more optimized than Greasemonkey.

General Convenience

Redirector.png Redirector (repo)

  • Redirector automatically redirects to user-defined urls on a per-hyperlink basis.

Buster.png Buster: Captcha Solver for Humans (repo)

  • Buster tries to solve Captchas on your behalf.

File:Gesturefy Gesturefy (repo)

  • Gesturefy lets you control the browse with mouse motions.

File:Webarchives Web Archives (repo)

  • Web Archives simplifies finding archived versions of web pages.

Integration Extensions

Plasma-browser-integration.png Plasma Integration

  • Plasma Integration integrates Firefox with the KDE Plasma desktop environment and KDE Connect. Requires the plasma-browser-integration package available from your distribution.
  • Alternatively there is firefox-kde-opensuse which is supposed to provide better KDE integration beyond what extensions are capable of.

Metamask.png MetaMask

Main article: MetaMask

  • MetaMask integrates Ethereum into Firefox.

Ipfs.png IPFS Companion

Peertubeify.png PeerTubeify (repo)

  • PeerTubeify redirects Youtube links to PeerTube instances when available.

Ricing

Firefox can be modified by CSS rules (called styles) defined in user preference files located under the chrome directory.

For some people it is easier to use a user style manager such as restyle or Stylus to write and maintain styles. However, in Firefox Quantum and newer these extensions are restricted from styling the Firefox browser interface.[2]

Warning: The popular Stylish extension has sold out to an advertising business[3] and sends users' entire browser history to its servers.[4] Use Stylus instead.
Tip: userChrome.css styles the browser, userContent.css styles webpages. Additionally, userChrome.js is required to style certain browser elements such as scrollbars. Choose installation method A or installation method B.
Tip: User preference files must be enabled by setting toolkit.legacyUserProfileCustomizations.stylesheets to True in about:config
Tip: UserChrome-Tweaks is a well-documented repository of common UserChrome modifications.

The Stylus button that appears after you install it is useful. For instance, to write a userstyle for Firefox, navigate to chrome://browser/content/browser.xul and select "Write new style -> For this URL", and a template will be made available.

A useful tool for styling is the Inspector. It can be opened by pressing Ctrl+Shift+C and it'll let you see what elements you can style on the page. To style the browser itself you will need to enable the browser toolbox. The shortcut for opening the toolbox is Ctrl+Alt+Shift+I.

Tips 'N Tricks

Picture: Two red pandas doing something cute.

Common Shortcuts

  • Bookmarks Library Ctrl + Shift + O
  • Bookmarks Sidebar Ctrl + B
  • Add-ons Ctrl + Shift + A

URLBar

The Firefox URLBar/Awesomebar can be filtered for different types of results.

  • typing * searches bookmarks
  • typing ^ searches history
  • typing % searches open tabs

Configuration

Warning: Settings that are claimed to prevent browser fingerprinting are usually counter-intuitive. Make no mistake, changing your browser in any significant way will give you a fingerprint.

Firefox can be configured through the about:config interface. Alternatively, rather than adjust settings manually, you could install a pre-configured user.js.

Recommended Tweaks

Disabling Pocket

Mozilla bundles a proprietary extension called Pocket in to Firefox. It can and should be disabled by setting pocket.enabled to false.

DNS over HTTPS and Encrypted SNI

Warning: Configuring DoH will bypass your system resolver.
Tip: dnscrypt-proxy will accomplish this and work outside the browser.
File:ESNI.png
How ESNI makes the internet opaque. Website support may vary.

Newer Firefox versions support DNS over HTTPS and Encrypted SNI. For an introduction to ESNI read this article.

Upsides of DoH: Your ISP knows less about you.

Downsides of DoH: Your DNS resolver knows a lot more about you including your browser and operating system, and can set cookies. (Bet you didn't know).

To enable DoH:

DNS over HTTPS is an ESNI prerequisite.

For ESNI set network.security.esni.enabled to true.

Test your configuration courtesy of CloudFlare.

Better fullscreen for tiling window managers

Set browser.fullscreen.autohide to true

Turn off annoying fullscreen indicator

Set both full-screen-api.warning.delay and full-screen-api.warning.timeout to 0.

External links

  • user-content-the-allow-allblock-exceptionally-approach
  • https://github.com/openstyles/stylus/wiki/Styling-Firefox-UI#user-content-stylus-cannot-style-firefoxs-user-interface-ui
  • It's time to get rid of Stylish
  • "Stylish" browser extension steals all your internet history