<> One of the reasons I use [[http://getfirefox.com|Mozilla Firefox]] is its huge [[https://addons.mozilla.org|universe of extensions]], [[http://userscripts.org/|scripts]], [[http://userstyles.org|styles]], and other add-ons which can make it behave the way you want it to. I've customized my Firefox installation pretty extensively. This list is current as of Firefox 62.0. == Extensions == Extensions not available on Firefox Add-ons: * [[https://github.com/iamadamdev/bypass-paywalls-firefox|Bypass Paywalls for Firefox]] * [[https://github.com/hensm/fx_cast|fx_cast]]: Google Cast implementation for Firefox. Needs browser extension plus OS binary == Preferences == `user.js` settings I use: || '''Setting''' || '''Value''' || '''Rationale''' || || browser.backspace_action || 1 || Bind backspace to scroll up a page || || browser.display.normal_lineheight_calc_control || 1 || Not exactly sure what this does, but fixes some line-height/font rendering problems || || browser.fullscreen.autohide || false || Prevent tab/URL bar from auto-hiding in full-screen mode || || browser.safebrowsing.enabled || false ||<|2> Disable Safe Browsing and malware checking (don't care for either on Linux) || || browser.safebrowsing.malware.enabled || false || || image.animation_mode || once || Animated GIFs only animate once || || layout.css.dpi || 0 || Use system-reported DPI, always (normal behavior may sometimes use 96 DPI) || || layout.spellcheckDefault || 2 || Enable spell checking for both INPUT and TEXTAREA fields || || network.http.sendRefererHeader || 1 || Only send HTTP referer header for links clicked on, not for images/media/etc. Breaks some Websites. || || network.protocol-handler.external.mailto || true || || || network.proxy.socks_remote_dns || true || Send DNS requests through proxies || || privacy.trackingprotection.enabled || true || Enable Firefox's Tracking Protection || || security.dialog_enable_delay || 0 || No wait when prompted to install unsigned extensions || || services.sync.addons.ignoreUserEnabledChanges || true || Do not sync the enabled/disabled state of Add-ons || || ui.caretBlinkTime || 0 || Disable cursor blinking || || browser.urlbar.formatting.enabled || false || Don't just highlight just the domain in the URL bar || || browser.urlbar.trimURLs || false || Don't strip http:// from URLs || || layout.css.devPixelsPerPx || 2 || Double CSS pixels, for retina displays || || widget.content.gtk-theme-override || Breeze:light || When using a dark GTK theme, fix colors for widgets in Firefox || || xpinstall.signatures.required || false || Enable installation of unsigned extensions (needed for addons not available on addons.mozilla.org) || || security.insecure_connection_text.enabled || true ||<|2> Show icon/text that non-HTTPS sites are insecure || || security.insecure_connection_icon.enabled || true || || general.smoothScroll.mouseWheel || false || Disable smooth scrolling for mouse input (should use XInput2 instead) || || toolkit.legacyUserProfileCustomizations.stylesheets || true || Enable support for userChrome.css and userContent.css || || network.dns.disablePrefetchFromHTTPS || false || DNS pre-fetch when using HTTPS || || browser.in-content.dark-mode || true || Enable dark interface for about pages || || ui.systemUsesDarkTheme || 1 || Make Websites think OS is in dark mode (should no longer be necessary?) || || ui.prefersReducedMotion || 0 || More UI animations (sometimes autodetected incorrectly) || Experimental settings: || network.predictor.enable-prefetch || true || || None in use. == Chrome == Contents of my userChrome.css: {{{#!highlight css /* Font preferences for AwesomeBar dropdown * * Adjusts font size, underlines URLs, and corrects colors */ .ac-comment { font-size: 100% !important; } .ac-url-text { color: #306090 !important; text-decoration: underline !important; } .ac-url-text[selected="true"] { color: white !important; } /* Use monospaced font for AwesomeBar */ #urlbar { font-family: monospace !important; font-size: 14px !important; } /* Combines Stop/Reload buttons, such that only one is shown at a time * * Note: May require button reordering (e.g reverse order of stop/reload * buttons) if the below does not work * * Derived from user style: http://userstyles.org/styles/10 * Also, see bug 343396: https://bugzilla.mozilla.org/show_bug.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&id=343396 */ #stop-button[disabled="true"] { display:none; } #stop-button:not([disabled]) + #reload-button { display:none; } /* Italicize unread tabs * * Derived from user style: http://userstyles.org/styles/8247 */ #content tab:not([selected]) { font-style: italic !important; } /* Display keyword field in Bookmark dialog * * Derived from user style: http://userstyles.org/styles/8250 */ #editBMPanel_keywordRow { visibility: visible; } /* Hide search and go buttons */ .search-go-button, .search-go-button-stack, #go-button { display: none !important; } }}} == Android == === Using Roboto or another font instead of Open Sans === 1. Go to about:config 2. Set to "Roboto", "Nokia Pure Text", or "Alte Haas Grotesk" * font.name.sans-serif.x-unicode * font.name.sans-serif.x-user-def * font.name.sans-serif.x-western === Font size adjustments === 1. Go to about:config 2. Set font.minimum-size.x-unicode and font.minimum-size.x-western to 14 3. Set font.size.inflation.minTwips to "140" === Cache location === On devices w/ 8–16 GB memory, store Firefox's cache on the external SD card: 1. Go to about:config 2. Set browser.cache.disk.parent_directory to one of: * /storage/sdcard1/Android/data/org.mozilla.fennec/files/cache/ * /storage/sdcard1/Android/data/org.mozilla.firefox_beta/files/cache/ * /storage/sdcard1/Android/data/org.mozilla.firefox/files/cache/ == Enabling off-main-thread compositing == Set to true: * layers.acceleration.force-enabled * gfx.canvas.azure.accelerated * layers.omtp.enabled You can also set: * layers.acceleration.draw-fps to display a FPS counter in the top left corner. If you see the counter, than OMTC and layer acceleration are working. [[https://bugzilla.mozilla.org/show_bug.cgi?id=722012|722012 – [Meta] Implement OMTC on Linux]] tracks whether OMTC has been enabled on Linux. == Fiddling == To tinker w/ browser styles/events/etc, navigate to chrome://browser/content/browser.xul and launch the built-in developer tools. == External tools == https://gist.github.com/f1u77y/715f0dd03fc18039a6549de557370b97: Exports styles from Stylish extension (stored in stylish.sqlite) into a JSON file that can be loaded into Stylus. == KDE integration == Legacy stuff: * [[http://www.rosenauer.org/hg/mozilla/summary|mozilla-kde.patch upstream]] * [[https://github.com/openSUSE/kmozillahelper/|openSUSE/kmozillahelper]]: kmozillahelper for showing file dialogs, etc. Needs mozilla-kde.patch * [[https://addons.mozilla.org/en-US/firefox/addon/plasma-integration/|Plasma Integration Firefox Add-on]] along with `plasma-browser-integration` (available in most Linux distributions) In Firefox 64 and 2019-vintage Linux distributions, can also use "desktop portal" support. * `xdg-desktop-portal` and `xdg-desktop-portal-kde` packages * Set environment variable `GTK_USE_PORTAL=1` for firefox.desktop (or globally once crash in Thunderbird is fixed): {{{#!highlight sh numbers=off cp /usr/share/applications/firefox.desktop ~/.local/share/applications/ kwriteconfig5 --file=$HOME/.local/share/applications/firefox.desktop --group="Desktop Entry" "Exec" "GTK_USE_PORTAL=1 /usr/lib/firefox/firefox %u" kwriteconfig5 --file=$HOME/.local/share/applications/firefox.desktop --group="Desktop Action new-private-window" "Exec" "GTK_USE_PORTAL=1 /usr/lib/firefox/firefox %u" kwriteconfig5 --file=$HOME/.local/share/applications/firefox.desktop --group="Desktop Action new-window" "Exec" "GTK_USE_PORTAL=1 /usr/lib/firefox/firefox %u" kbuildsycoca5 }}} == Containers == Firefox extensions * Multi-Account Containers: official extension from Mozilla. Functional but lacking. * Containers with Transitions: fork the above? Unclear if still maintained. * Containerise: Lets you specify lists of sites that should live in containers. See [[https://github.com/shvchk/containerise-lists|containerise-lists]]. * Temporary Containers Most recommend Containerize and Temporary Containers. == Interesting reading == * [[https://www.reddit.com/r/firefox/comments/5qlpai/how_to_remove_zoom_level_indicator_from_url_bar/|How to remove zoom level indicator from URL bar? : firefox]] * [[https://www.reddit.com/r/firefox/comments/5qius3/is_there_any_way_to_turn_off_the_zoom_indicator/|Is there any way to "turn off" the zoom indicator in 51? : firefox]] * [[https://support.mozilla.org/en-US/questions/1069513#answer-787122|How can I add the CSS styles used by Firefox reader mode?]] * https://www.userchrome.org/ * https://github.com/overdodactyl/ShadowFox