1
0
mirror of https://github.com/yokoffing/Betterfox.git synced 2026-06-12 15:40:48 +05:30

Compare commits

...

11 Commits

Author SHA1 Message Date
yokoffing 9727810114 140.0 (#404) 2025-07-22 12:28:37 -04:00
sykoram e66de491ac fix install.py (quotes in f-strings) (#405) 2025-06-21 00:29:56 -04:00
mr. m 82553f0167 Remove experiemental rounded flag (#403) 2025-06-16 16:45:55 -04:00
yokoffing 9052068d89 138.0 (#392) 2025-06-02 00:45:46 -04:00
NewKidOnTheBlock 8c39175a02 SoGo calendar integration issues 2025-05-14 21:15:43 -04:00
sykoram 1a6be093dc Improve install.py (#373)
* install.py: add shebang

* install.py: remove old version of _get_firefox_version

* install.py: search for Firefox installation, including flatpak version

* install.py: add option to disable 'Press ENTER to exit'

* install.py: fix windows root
2025-04-28 10:06:35 -04:00
yokoffing efee151779 Delete .github/ISSUE_TEMPLATE/bug_report.md 2025-04-16 12:21:48 -04:00
Danila Kononov 77983c7431 Create YML version of bug report form (#376) 2025-04-16 12:08:16 -04:00
yokoffing d3c53532eb v137.0 (#379) 2025-04-16 10:10:06 -04:00
yokoffing 6ef4cdbbe7 135.0 (#361) 2025-02-25 17:43:16 -05:00
Michael Weems 9c1d652299 Update install.py (#369)
Updating to Check Location of Firefox Install
2025-02-25 17:30:05 -05:00
11 changed files with 433 additions and 183 deletions
-43
View File
@@ -1,43 +0,0 @@
---
name: Something is not working!
about: Use this form if you have an issue.
title: ''
labels: ''
assignees: yokoffing
---
## BEFORE YOU BEGIN
I have attempted the following troubleshooting suggestions:
- [ ] The issue persists when using Firefox in [Troubleshoot Mode](https://support.mozilla.org/en-US/kb/diagnose-firefox-issues-using-troubleshoot-mode).
- [ ] Disabled DNS-level content blocking (AdGuard Home, NextDNS, Control D, RethinkDNS, PiHole, etc), [cleared my DNS cache](https://www.pcmag.com/how-to/how-to-flush-your-dns-cache), and used my ISP's DNS resolver (if applicable).
- [ ] [Cleared website data](https://support.mozilla.org/en-US/kb/clear-cookies-and-site-data-firefox), restarted Firefox, and my issue persists.
- [ ] I have created a [new profile](https://support.mozilla.org/en-US/kb/profile-manager-create-remove-switch-firefox-profiles). The issue persists when using the current [user.js](https://github.com/yokoffing/Betterfox/blob/master/user.js) file on GitHub. (Must be in a new profile and a new user.js!)
## REPORT
**Describe the bug**
*A clear and concise description of what the bug is.*
**To Reproduce**
*Steps to reproduce the behavior:*
```
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
```
**Expected behavior**
*A clear and concise description of what you expected to happen.*
**Screenshots**
*If applicable, add screenshots to help explain your problem.*
**Desktop (please complete the following information):**
- OS:
- Browser:
- Version:
**Additional context**
*Add any other context about the problem here.*
+105
View File
@@ -0,0 +1,105 @@
name: Bug Report
description: File a bug report
assignees: yokoffing
body:
- type: markdown
attributes:
value: |
Please confirm the issue relates to Betterfox user.js before submitting a report.
To troubleshoot your installation, try solutions below and test the issue after each step:
* Launch Firefox in [Troubleshoot Mode](https://support.mozilla.org/en-US/kb/diagnose-firefox-issues-using-troubleshoot-mode).
* Disable DNS-level content blocking (such ad AdGuard Home, NextDNS, Control D, PiHole, etc) and [clear the DNS cache](https://www.pcmag.com/how-to/how-to-flush-your-dns-cache) and use ISP's DNS resolver (if applicable).
* [Clear website data](https://support.mozilla.org/en-US/kb/clear-cookies-and-site-data-firefox) and restart Firefox.
* Create a [new clean profile](https://support.mozilla.org/en-US/kb/profile-manager-create-remove-switch-firefox-profiles).
- type: checkboxes
attributes:
label: Prerequisites
options:
- label: The issue persists when using Firefox in Troubleshoot Mode.
required: true
- label: "The issue persists after I disabled DNS-level content blocking (PiHole, NextDNS, etc.), cleared DNS cache, and tried to use ISP's DNS resolver (if applicable)."
required: true
- label: The issue persists after I cleared website data and restarted Firefox.
required: true
- label: I have created a new, clean profile. The issue persists after adding the user.js, but it is not reproducible in a new, unedited Firefox profile.
required: true
- type: textarea
attributes:
label: Bug description
description: Describe the issue.
placeholder: A bug causes this and that...
validations:
required: true
- type: textarea
attributes:
label: Steps to reproduce
description: Explain the steps required to reproduce the issue.
placeholder: |
1. Go to `...`
2. Click on `...`
3. Scroll down to `...`
validations:
required: true
- type: textarea
attributes:
label: Expected behavior
description: What did you expect to happen instead?
placeholder: Firefox should do [this]. Instead, it did [that].
validations:
required: false
- type: textarea
attributes:
label: Screenshots
description: Add screenshots to help explain your problem (optional).
validations:
required: false
- type: dropdown
attributes:
label: Operating System (OS)
options:
- Windows (10 or later)
- macOS (ARM-based device)
- macOS (Intel-based device)
- Linux
- Other
validations:
required: true
- type: dropdown
attributes:
label: Browser
options:
- Firefox
- Firefox Beta
- Firefox Developer Edition
- Firefox Nightly
- Firefox ESR
- Floorp
- LibreWolf
- Zen Browser
- Waterfox
- Other
validations:
required: true
- type: input
attributes:
label: Version
placeholder: 136 stable
validations:
required: false
- type: textarea
attributes:
label: Additional information
description: Include any other information that may be helpful.
validations:
required: false
+24 -21
View File
@@ -3,7 +3,7 @@
* Fastfox * * Fastfox *
* "Non ducor duco" * * "Non ducor duco" *
* priority: speedy browsing * * priority: speedy browsing *
* version: 133 * * version: 137 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
***************************************************************************************/ ***************************************************************************************/
@@ -109,7 +109,7 @@ user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
// [2] https://github.com/yokoffing/Betterfox/issues/153 // [2] https://github.com/yokoffing/Betterfox/issues/153
// [3] https://github.com/yokoffing/Betterfox/issues/198 // [3] https://github.com/yokoffing/Betterfox/issues/198
//user_pref("gfx.canvas.accelerated", true); // [DEFAULT FF133+] //user_pref("gfx.canvas.accelerated", true); // [DEFAULT FF133+]
user_pref("gfx.canvas.accelerated.cache-items", 4096); // default=2048; Chrome=4096 //user_pref("gfx.canvas.accelerated.cache-items", 8192); // DEFAULT FF135+; Chrome=4096
user_pref("gfx.canvas.accelerated.cache-size", 512); // default=256; Chrome=512 user_pref("gfx.canvas.accelerated.cache-size", 512); // default=256; Chrome=512
user_pref("gfx.content.skia-font-cache-size", 20); // default=5; Chrome=20 user_pref("gfx.content.skia-font-cache-size", 20); // default=5; Chrome=20
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1239151#c2 // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1239151#c2
@@ -144,7 +144,7 @@ user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
// More efficient to keep the browser cache instead of having to // More efficient to keep the browser cache instead of having to
// re-download objects for the websites you visit frequently. // re-download objects for the websites you visit frequently.
// [1] https://www.janbambas.cz/new-firefox-http-cache-enabled/ // [1] https://www.janbambas.cz/new-firefox-http-cache-enabled/
user_pref("browser.cache.disk.enable", true); user_pref("browser.cache.disk.enable", false);
// PREF: disk cache size // PREF: disk cache size
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913808,968106,968101 // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913808,968106,968101
@@ -254,13 +254,14 @@ user_pref("browser.cache.disk.enable", true);
// that only contains settings for systems at or below 8GB of system memory [1]. // that only contains settings for systems at or below 8GB of system memory [1].
// Waterfox G6 allows it to go above 8GB machines [3]. // Waterfox G6 allows it to go above 8GB machines [3].
// Value can be up to the max size of an unsigned 64-bit integer. // Value can be up to the max size of an unsigned 64-bit integer.
// -1=Automatically decide the maximum memory to use to cache decoded images, // -1 = Automatically decide the maximum memory to use to cache decoded images,
// messages, and chrome based on the total amount of RAM // messages, and chrome based on the total amount of RAM
// For machines with 8GB+ RAM, that equals 32768 kb = 32 MB
// [1] https://kb.mozillazine.org/Browser.cache.memory.capacity#-1 // [1] https://kb.mozillazine.org/Browser.cache.memory.capacity#-1
// [2] https://searchfox.org/mozilla-central/source/netwerk/cache2/CacheObserver.cpp#94-125 // [2] https://searchfox.org/mozilla-central/source/netwerk/cache2/CacheObserver.cpp#94-125
// [3] https://github.com/WaterfoxCo/Waterfox/commit/3fed16932c80a2f6b37d126fe10aed66c7f1c214 // [3] https://github.com/WaterfoxCo/Waterfox/commit/3fed16932c80a2f6b37d126fe10aed66c7f1c214
//user_pref("browser.cache.memory.capacity", -1); // DEFAULT; 256000=256 MB; 512000=500 MB; 1048576=1GB, 2097152=2GB //user_pref("browser.cache.memory.capacity", 131072); // (128 MB)
//user_pref("browser.cache.memory.max_entry_size", 10240); // (10 MB); default=5120 (5 MB) //user_pref("browser.cache.memory.max_entry_size", 20480); // (20 MB); default=5120 (5 MB)
// PREF: amount of Back/Forward cached pages stored in memory for each tab // PREF: amount of Back/Forward cached pages stored in memory for each tab
// Pages that were recently visited are stored in memory in such a way // Pages that were recently visited are stored in memory in such a way
@@ -271,7 +272,7 @@ user_pref("browser.cache.disk.enable", true);
// is no reason for Firefox to keep memory for this. // is no reason for Firefox to keep memory for this.
// -1=determine automatically (8 pages) // -1=determine automatically (8 pages)
// [1] https://kb.mozillazine.org/Browser.sessionhistory.max_total_viewers#Possible_values_and_their_effects // [1] https://kb.mozillazine.org/Browser.sessionhistory.max_total_viewers#Possible_values_and_their_effects
//user_pref("browser.sessionhistory.max_total_viewers", 4); user_pref("browser.sessionhistory.max_total_viewers", 4);
/**************************************************************************** /****************************************************************************
* SECTION: MEDIA CACHE * * SECTION: MEDIA CACHE *
@@ -323,13 +324,14 @@ user_pref("image.mem.decode_bytes_at_a_time", 32768); // default=16384; alt=6553
****************************************************************************/ ****************************************************************************/
// PREF: use bigger packets // PREF: use bigger packets
// [WARNING] Cannot open HTML files bigger than 4MB if changed [2]. // [WARNING] Cannot open HTML files bigger than 4MB if value is too large [2].
// Reduce Firefox's CPU usage by requiring fewer application-to-driver data transfers. // Reduce Firefox's CPU usage by requiring fewer application-to-driver data transfers.
// However, it does not affect the actual packet sizes transmitted over the network. // However, it does not affect the actual packet sizes transmitted over the network.
// [1] https://www.mail-archive.com/support-seamonkey@lists.mozilla.org/msg74561.html // [1] https://www.mail-archive.com/support-seamonkey@lists.mozilla.org/msg74561.html
// [2] https://github.com/yokoffing/Betterfox/issues/279 // [2] https://github.com/yokoffing/Betterfox/issues/279
//user_pref("network.buffer.cache.size", 262144); // 256 kb; default=32768 (32 kb) // [3] https://ra1ahq.blog/en/optimizaciya-proizvoditelnosti-mozilla-firefox
//user_pref("network.buffer.cache.count", 128); // default=24 //user_pref("network.buffer.cache.size", 65535); // default=32768 (32 kb); 262144 too large
//user_pref("network.buffer.cache.count", 48); // default=24; 128 too large
// PREF: increase the absolute number of HTTP connections // PREF: increase the absolute number of HTTP connections
// [1] https://kb.mozillazine.org/Network.http.max-connections // [1] https://kb.mozillazine.org/Network.http.max-connections
@@ -402,7 +404,7 @@ user_pref("network.ssl_tokens_cache_capacity", 10240); // default=2048; more TLS
// [3] https://searchfox.org/mozilla-central/rev/028c68d5f32df54bca4cf96376f79e48dfafdf08/modules/libpref/init/all.js#1280-1282 // [3] https://searchfox.org/mozilla-central/rev/028c68d5f32df54bca4cf96376f79e48dfafdf08/modules/libpref/init/all.js#1280-1282
// [4] https://www.keycdn.com/blog/resource-hints#prefetch // [4] https://www.keycdn.com/blog/resource-hints#prefetch
// [5] https://3perf.com/blog/link-rels/#prefetch // [5] https://3perf.com/blog/link-rels/#prefetch
//user_pref("network.http.speculative-parallel-limit", 20); // DEFAULT (FF127+?) user_pref("network.http.speculative-parallel-limit", 0);
// PREF: DNS prefetching for HTMLLinkElement <link rel="dns-prefetch"> // PREF: DNS prefetching for HTMLLinkElement <link rel="dns-prefetch">
// Used for cross-origin connections to provide small performance improvements. // Used for cross-origin connections to provide small performance improvements.
@@ -416,7 +418,7 @@ user_pref("network.ssl_tokens_cache_capacity", 10240); // default=2048; more TLS
user_pref("network.dns.disablePrefetch", true); user_pref("network.dns.disablePrefetch", true);
user_pref("network.dns.disablePrefetchFromHTTPS", true); // [FF127+ false] user_pref("network.dns.disablePrefetchFromHTTPS", true); // [FF127+ false]
// PREF: DNS prefetch for HTMLAnchorElement (speculative DNS) // PREF: DNS prefetch for HTMLAnchorElement (speculative DNS)
// Disable speculative DNS calls to prevent Firefox from resolving // Disable speculative DNS calls to prevent Firefox from resolving
// hostnames for other domains linked on a page. This may eliminate // hostnames for other domains linked on a page. This may eliminate
// unnecessary DNS lookups, but can increase latency when following external links. // unnecessary DNS lookups, but can increase latency when following external links.
@@ -435,11 +437,11 @@ user_pref("network.dns.disablePrefetch", true);
// [NOTE] Firefox will perform DNS lookup (if enabled) and TCP and TLS handshake, // [NOTE] Firefox will perform DNS lookup (if enabled) and TCP and TLS handshake,
// but will not start sending or receiving HTTP data. // but will not start sending or receiving HTTP data.
// [1] https://www.ghacks.net/2017/07/24/disable-preloading-firefox-autocomplete-urls/ // [1] https://www.ghacks.net/2017/07/24/disable-preloading-firefox-autocomplete-urls/
//user_pref("browser.urlbar.speculativeConnect.enabled", false); user_pref("browser.urlbar.speculativeConnect.enabled", false);
// PREF: mousedown speculative connections on bookmarks and history [FF98+] // PREF: mousedown speculative connections on bookmarks and history [FF98+]
// Whether to warm up network connections for places:menus and places:toolbar. // Whether to warm up network connections for places:menus and places:toolbar.
//user_pref("browser.places.speculativeConnect.enabled", false); user_pref("browser.places.speculativeConnect.enabled", false);
// PREF: network module preload <link rel="modulepreload"> [FF115+] // PREF: network module preload <link rel="modulepreload"> [FF115+]
// High-priority loading of current page JavaScript modules. // High-priority loading of current page JavaScript modules.
@@ -497,7 +499,7 @@ user_pref("network.prefetch-next", false);
// When enabled, it trains and uses Firefox's algorithm to preload page resource // When enabled, it trains and uses Firefox's algorithm to preload page resource
// by tracking past page resources. It uses a local file (history) of needed images, // by tracking past page resources. It uses a local file (history) of needed images,
// scripts, etc. to request them preemptively when navigating. // scripts, etc. to request them preemptively when navigating.
// [NOTE] By default, it only preconnects, doing DNS, TCP, and SSL handshakes. // [NOTE] By default, it only preconnects DNS, TCP, and SSL handshakes.
// No data sends until clicking. With "network.predictor.enable-prefetch" enabled, // No data sends until clicking. With "network.predictor.enable-prefetch" enabled,
// it also performs prefetches. // it also performs prefetches.
// [1] https://wiki.mozilla.org/Privacy/Reviews/Necko // [1] https://wiki.mozilla.org/Privacy/Reviews/Necko
@@ -542,12 +544,13 @@ user_pref("network.predictor.enabled", false);
user_pref("layout.css.grid-template-masonry-value.enabled", true); user_pref("layout.css.grid-template-masonry-value.enabled", true);
// PREF: Prioritized Task Scheduling API [NIGHTLY] // PREF: Prioritized Task Scheduling API [NIGHTLY]
// [1] https://blog.mozilla.org/performance/2022/06/02/prioritized-task-scheduling-api-is-prototyped-in-nightly/ // [1] https://github.com/yokoffing/Betterfox/issues/355
// [2] https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91 // [2] https://blog.mozilla.org/performance/2022/06/02/prioritized-task-scheduling-api-is-prototyped-in-nightly/
// [3] https://github.com/WICG/scheduling-apis/blob/main/explainers/prioritized-post-task.md // [3] https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91
// [4] https://wicg.github.io/scheduling-apis/ // [4] https://github.com/WICG/scheduling-apis/blob/main/explainers/prioritized-post-task.md
// [5] https://caniuse.com/mdn-api_taskcontroller // [5] https://wicg.github.io/scheduling-apis/
user_pref("dom.enable_web_task_scheduling", true); // [6] https://caniuse.com/mdn-api_taskcontroller
//user_pref("dom.enable_web_task_scheduling", true);
/**************************************************************************** /****************************************************************************
* SECTION: TAB UNLOAD * * SECTION: TAB UNLOAD *
+17 -11
View File
@@ -3,7 +3,7 @@
* Peskyfox * * Peskyfox *
* "Aquila non capit muscas" * * "Aquila non capit muscas" *
* priority: remove annoyances * * priority: remove annoyances *
* version: 133 * * version: 140 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
* credit: Some prefs are reproduced and adapted from the arkenfox project * * credit: Some prefs are reproduced and adapted from the arkenfox project *
* credit urL: https://github.com/arkenfox/user.js * * credit urL: https://github.com/arkenfox/user.js *
@@ -109,16 +109,19 @@ user_pref("browser.privateWindowSeparation.enabled", false);
****************************************************************************/ ****************************************************************************/
// PREF: Cookie Banner handling // PREF: Cookie Banner handling
// [DEPRECIATED] Future of the project is unclear. See [5] and [6].
// [NOTE] Feature still enforces Total Cookie Protection to limit 3rd-party cookie tracking [1] // [NOTE] Feature still enforces Total Cookie Protection to limit 3rd-party cookie tracking [1]
// [1] https://github.com/mozilla/cookie-banner-rules-list/issues/33#issuecomment-1318460084 // [1] https://github.com/mozilla/cookie-banner-rules-list/issues/33#issuecomment-1318460084
// [2] https://phabricator.services.mozilla.com/D153642 // [2] https://phabricator.services.mozilla.com/D153642
// [3] https://winaero.com/make-firefox-automatically-click-on-reject-all-in-cookie-banner-consent/ // [3] https://winaero.com/make-firefox-automatically-click-on-reject-all-in-cookie-banner-consent/
// [4] https://docs.google.com/spreadsheets/d/1Nb4gVlGadyxix4i4FBDnOeT_eJp2Zcv69o-KfHtK-aA/edit#gid=0 // [4] https://docs.google.com/spreadsheets/d/1Nb4gVlGadyxix4i4FBDnOeT_eJp2Zcv69o-KfHtK-aA/edit#gid=0
// [5] https://bugzilla.mozilla.org/show_bug.cgi?id=1940418
// [6] https://github.com/mozilla/cookie-banner-rules-list/issues/544
// 2: reject banners if it is a one-click option; otherwise, fall back to the accept button to remove banner // 2: reject banners if it is a one-click option; otherwise, fall back to the accept button to remove banner
// 1: reject banners if it is a one-click option; otherwise, keep banners on screen // 1: reject banners if it is a one-click option; otherwise, keep banners on screen
// 0: disable all cookie banner handling // 0: disable all cookie banner handling
user_pref("cookiebanners.service.mode", 1); //user_pref("cookiebanners.service.mode", 1);
user_pref("cookiebanners.service.mode.privateBrowsing", 1); //user_pref("cookiebanners.service.mode.privateBrowsing", 1);
// PREF: Cookie Banner global rules // PREF: Cookie Banner global rules
// Global rules that can handle a list of cookie banner libraries and providers on any site. // Global rules that can handle a list of cookie banner libraries and providers on any site.
@@ -165,7 +168,7 @@ user_pref("full-screen-api.warning.timeout", 0); // default=3000
// [2] https://reddit.com/r/firefox/comments/wvs04y/comment/ilklzy1/?context=3 // [2] https://reddit.com/r/firefox/comments/wvs04y/comment/ilklzy1/?context=3
//user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5); //user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5);
//user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 100); //user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 100);
//user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", ""); //user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", ""); // DEFAULT FF135+
//user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); //user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false);
// Some users find these helpful: // Some users find these helpful:
//user_pref("gfx.font_rendering.cleartype_params.gamma", 1750); //user_pref("gfx.font_rendering.cleartype_params.gamma", 1750);
@@ -191,7 +194,7 @@ user_pref("browser.urlbar.suggest.engines", false);
//user_pref("browser.urlbar.shortcuts.quickactions", false); //user_pref("browser.urlbar.shortcuts.quickactions", false);
//user_pref("browser.urlbar.suggest.weather", true); // DEFAULT [FF108] //user_pref("browser.urlbar.suggest.weather", true); // DEFAULT [FF108]
//user_pref("browser.urlbar.weather.ignoreVPN", false); // DEFAULT //user_pref("browser.urlbar.weather.ignoreVPN", false); // DEFAULT
user_pref("browser.urlbar.suggest.calculator", true); //user_pref("browser.urlbar.suggest.calculator", true); // [DEFAULT FF137+]
user_pref("browser.urlbar.unitConversion.enabled", true); user_pref("browser.urlbar.unitConversion.enabled", true);
// PREF: disable dropdown suggestions with empty query // PREF: disable dropdown suggestions with empty query
@@ -234,11 +237,14 @@ user_pref("browser.urlbar.trending.featureGate", false);
// disable=0 // disable=0
//user_pref("browser.urlbar.maxRichResults", 5); // default=10 //user_pref("browser.urlbar.maxRichResults", 5); // default=10
// PREF: text fragments [FF126+ NIGHTLY] // PREF: text fragments
// [WARNING] Enabling can cause tab crashes [4]
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1753933#c6 // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1753933#c6
// [2] https://developer.mozilla.org/en-US/docs/Web/Text_fragments // [2] https://developer.mozilla.org/en-US/docs/Web/Text_fragments
// [3] https://web.dev/articles/text-fragments // [3] https://web.dev/articles/text-fragments
// [4] https://github.com/yokoffing/Betterfox/issues/397
//user_pref("dom.text_fragments.enabled", true); // [DEFAULT] //user_pref("dom.text_fragments.enabled", true); // [DEFAULT]
//user_pref("dom.text_fragments.create_text_fragment.enabled", true);
/**************************************************************************** /****************************************************************************
* SECTION: AUTOPLAY * * SECTION: AUTOPLAY *
@@ -285,12 +291,12 @@ user_pref("browser.urlbar.trending.featureGate", false);
// [1] https://github.com/arkenfox/user.js/issues/1556 // [1] https://github.com/arkenfox/user.js/issues/1556
//user_pref("browser.newtabpage.activity-stream.discoverystream.enabled", false); //user_pref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
//user_pref("browser.newtabpage.activity-stream.showSearch", true); // NTP Web Search [DEFAULT] //user_pref("browser.newtabpage.activity-stream.showSearch", true); // NTP Web Search [DEFAULT]
user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); // Shortcuts //user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); // Shortcuts
//user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // Shortcuts > Sponsored shortcuts [FF83+] user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // Shortcuts > Sponsored shortcuts [FF83+]
user_pref("browser.newtabpage.activity-stream.showWeather", false); // Weather [FF130+] //user_pref("browser.newtabpage.activity-stream.showWeather", false); // Weather [FF130+]
//user_pref("browser.newtabpage.activity-stream.system.showWeather", false); // hides Weather as an UI option //user_pref("browser.newtabpage.activity-stream.system.showWeather", false); // hides Weather as an UI option
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); // Recommended by Pocket user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); // Recommended by Pocket
//user_pref("browser.newtabpage.activity-stream.showSponsored", false); // Sponsored Stories [FF58+] user_pref("browser.newtabpage.activity-stream.showSponsored", false); // Sponsored Stories [FF58+]
//user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false); // Recent Activity [DEFAULT] //user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false); // Recent Activity [DEFAULT]
//user_pref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", false); //user_pref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", false);
//user_pref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false); //user_pref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false);
@@ -303,7 +309,7 @@ user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
// PREF: clear default topsites // PREF: clear default topsites
// [NOTE] This does not block you from adding your own. // [NOTE] This does not block you from adding your own.
//user_pref("browser.newtabpage.activity-stream.default.sites", ""); user_pref("browser.newtabpage.activity-stream.default.sites", "");
// PREF: keep search in the search box; prevent from jumping to address bar // PREF: keep search in the search box; prevent from jumping to address bar
// [1] https://www.reddit.com/r/firefox/comments/oxwvbo/firefox_start_page_search_options/ // [1] https://www.reddit.com/r/firefox/comments/oxwvbo/firefox_start_page_search_options/
+12 -19
View File
@@ -1,33 +1,24 @@
![GitHub Maintained](https://img.shields.io/badge/open%20source-yes-orange) ![GitHub Maintained](https://img.shields.io/badge/maintained-yes-green)![GitHub last commit](https://img.shields.io/github/last-commit/yokoffing/betterfox)![GitHub issues](https://img.shields.io/github/issues/yokoffing/betterfox)![GitHub closed issues](https://img.shields.io/github/issues-closed/yokoffing/betterfox)![GitHub repo size](https://img.shields.io/github/repo-size/yokoffing/betterfox)[![shields.io Stars](https://img.shields.io/github/stars/yokoffing/betterfox)](https://github.com/yokoffing/betterfox/stargazers)
![GitHub Maintained](https://img.shields.io/badge/maintained-yes-yellow)
[![Visitors](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fyokoffing%2FBetter-Fox&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=visitors&edge_flat=false)](https://hits.seeyoufarm.com)
# Betterfox # Betterfox
[about:config](https://support.mozilla.org/en-US/kb/about-config-editor-firefox) tweaks to enhance [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/). [about:config](https://support.mozilla.org/en-US/kb/about-config-editor-firefox) tweaks to enhance [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/).
31% [faster](https://medium.com/@mihirgrand/comparing-popular-firefox-forks-6fa83fdfdaad#:~:text=31%25%20more%20than%20vanilla%20Firefox) than regular Firefox :rocket: ## Made for everyday browsing
[Faster](https://medium.com/@mihirgrand/comparing-popular-firefox-forks-6fa83fdfdaad#:~:text=31%25%20more%20than%20vanilla%20Firefox), more private and secure — without using third-party code.
Now with support for ESR [128](https://github.com/yokoffing/Betterfox/tree/esr128) :new: Betterfox is an opinionated preference list inspired by the [law of diminishing returns](https://miro.medium.com/v2/resize:fit:1206/1*lcOcxriV_II_lZuXQYLoXg.jpeg) and the [minimum effective dose](https://medium.com/the-mission/less-is-more-the-minimum-effective-dose-e6d56625931e).
## Required reading ## Required reading
0) Create a [backup profile](https://github.com/yokoffing/Betterfox/wiki/Backup). 0) Create a [backup profile](https://github.com/yokoffing/Betterfox/wiki/Backup).
1) Download the user.js file [here](https://raw.githubusercontent.com/yokoffing/Betterfox/main/user.js) (Right click > `Save Link As…`). 1) Download the user.js file [here](https://raw.githubusercontent.com/yokoffing/Betterfox/main/user.js) (Right click > `Save Link As…`).
2) Review [Common Overrides](https://github.com/yokoffing/Betterfox/wiki/Common-Overrides) and make any necessary changes. 2) Review both [Common Overrides](https://github.com/yokoffing/Betterfox/wiki/Common-Overrides) and [Optional Hardening](https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening) to make any necessary changes.
* See also [Optional Hardening](https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening) for other recommendations.
3) Open Firefox. In the URL bar, type `about:profiles` and press **Enter**. 3) Open Firefox. In the URL bar, type `about:profiles` and press **Enter**.
4) For the profile you want to use (or use default), click **Open Folder** in the **Root Directory** section. 4) For the profile you want to use, click **Open Folder** in the **Root Directory** section.
5) Move the `user.js` file into the folder. 5) Move the `user.js` file into the folder.
*After restarting Firefox:* *After restarting Firefox:*
1) Get an **ad blocker** like [uBlock Origin](https://addons.mozilla.org/blog/ublock-origin-everything-you-need-to-know-about-the-ad-blocker/) with our [recommended filters](https://github.com/yokoffing/filterlists#guidelines). 1) Get an **ad blocker** like [uBlock Origin](https://addons.mozilla.org/blog/ublock-origin-everything-you-need-to-know-about-the-ad-blocker/) with our [recommended filters](https://github.com/yokoffing/filterlists#guidelines).
2) Enable **DNS-level protection** with [NextDNS](https://nextdns.io/?from=xujj63g5). <sup><i>Use the link and support this page!</i></sup> 2) Enable **DNS-level protection** with your chosen [provider](https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening#secure-dns) to further protect against security threats, ads, and trackers.
* Check out our configuration [guide](https://github.com/yokoffing/NextDNS-Config) for the best experience.
* See how to [quickly enable](https://support.mozilla.org/en-US/kb/dns-over-https) **secure DNS** in Firefox.
## Made for everyday browsing
**A secure, blazing fast browsing experience. Without breakage.**
Betterfox is an opinionated preference list inspired by the [law of diminishing returns](https://miro.medium.com/v2/resize:fit:1206/1*lcOcxriV_II_lZuXQYLoXg.jpeg) and the [minimum effective dose](https://medium.com/the-mission/less-is-more-the-minimum-effective-dose-e6d56625931e).
## Simple goals ## Simple goals
1) **Minimalism:** get what isn't needed out of the way 1) **Minimalism:** get what isn't needed out of the way
@@ -54,15 +45,16 @@ The `user.js` — a configuration file that controls Firefox settings — is cur
> [!IMPORTANT] > [!IMPORTANT]
> While the browsers listed below incorporate Betterfox to some extent, they often modify it in ways that reduce its effectiveness. For optimal results, apply the `user.js` file even when using Firefox forks. > While the browsers listed below incorporate Betterfox to some extent, they often modify it in ways that reduce its effectiveness. For optimal results, apply the `user.js` file even when using Firefox forks.
* [Zen](https://github.com/zen-browser/desktop?tab=readme-ov-file) | [files](https://github.com/zen-browser/desktop/blob/main/src/browser/app/profile/better-fox.js) (July 2024) * [Zen](https://github.com/zen-browser/desktop?tab=readme-ov-file) | [files](https://github.com/zen-browser/desktop/blob/stable/src/browser/app/profile/zen-browser.js) (July 2024)
* [Midori](https://github.com/goastian/midori-desktop/blob/ESR115/README.md) | [files](https://github.com/goastian/midori-desktop/blob/f3d8d96eb8e08f35a64e3c957bea4e839d7c7730/floorp/browser/components/userjsUtils.sys.mjs#L28-L33) (Dec 2023?) * [Midori](https://github.com/goastian/midori-desktop/blob/ESR115/README.md) | [files](https://github.com/goastian/midori-desktop/blob/f3d8d96eb8e08f35a64e3c957bea4e839d7c7730/floorp/browser/components/userjsUtils.sys.mjs#L28-L33) (Dec 2023?)
* [Mercury](https://github.com/Alex313031/Mercury/releases/tag/v.115.3.0) | [files](https://github.com/Alex313031/Mercury/commit/eb9600f9fb8f48c8f5b5c6f3264fbcdb5caff7f5) (Sep 2023) * [Mercury](https://github.com/Alex313031/Mercury/releases/tag/v.115.3.0) | [files](https://github.com/Alex313031/Mercury/commit/eb9600f9fb8f48c8f5b5c6f3264fbcdb5caff7f5) (Sep 2023)
* [Waterfox](https://www.waterfox.net/en-US/docs/releases/G6.0/) | [files](https://github.com/WaterfoxCo/Waterfox/tree/current/waterfox/browser/app/profile) (Sep 2023) * [Waterfox](https://www.waterfox.net/docs/releases/G6.0/) | [files](https://github.com/WaterfoxCo/Waterfox/tree/current/waterfox/browser/app/profile) (Sep 2023)
* [Floorp](https://github.com/Floorp-Projects/Floorp#-betterfox) <sup>[1](https://github.com/Floorp-Projects/Floorp/issues/233#issuecomment-1543557167) [2](https://blog.ablaze.one/3135/2023-04-01/)</sup> | [files](https://github.com/Floorp-Projects/Floorp/blob/ESR115/floorp/browser/components/preferences/userjs.inc.xhtml) (Apr 2023) * [Floorp](https://github.com/Floorp-Projects/Floorp#-betterfox) <sup>[1](https://github.com/Floorp-Projects/Floorp/issues/233#issuecomment-1543557167) [2](https://blog.ablaze.one/3135/2023-04-01/)</sup> | [files](https://github.com/Floorp-Projects/Floorp/blob/ESR115/floorp/browser/components/preferences/userjs.inc.xhtml) (Apr 2023)
* [Pulse](https://github.com/pulse-browser/browser#%EF%B8%8F-credits) | [files](https://github.com/pulse-browser/browser/tree/alpha/src/browser/app/profile) (Dec 2021) * [Pulse](https://github.com/pulse-browser/browser#%EF%B8%8F-credits) | [files](https://github.com/pulse-browser/browser/tree/alpha/src/browser/app/profile) (Dec 2021)
* [Ghostery Private Browser](https://github.com/ghostery/user-agent-desktop#community) <sup>[1](https://web.archive.org/web/20210509171835/https://www.ghostery.com/ghostery-dawn-update-more/) [2](https://web.archive.org/web/20210921114333/https://www.ghostery.com/ghostery-dawn-product-update/)</sup> | [files](https://github.com/ghostery/user-agent-desktop/tree/main/brands/ghostery/branding/pref) (Feb 2021) * [Ghostery Private Browser](https://github.com/ghostery/user-agent-desktop#community) <sup>[1](https://web.archive.org/web/20210509171835/https://www.ghostery.com/ghostery-dawn-update-more/) [2](https://web.archive.org/web/20210921114333/https://www.ghostery.com/ghostery-dawn-product-update/)</sup> | [files](https://github.com/ghostery/user-agent-desktop/tree/main/brands/ghostery/branding/pref) (Feb 2021)
### YouTube ### YouTube
* [A Better Firefox](https://youtu.be/JuHIwCFx34Q?si=1dx39t3HX5kzNVj-&t=133) (Mar 2025)
* [Ditch Chrome for One Of These BETTER BROWSERS!](https://youtu.be/ygkxFc8SZlc?si=m5NQe-b_oFXs5crb&t=230) (Aug 2024) * [Ditch Chrome for One Of These BETTER BROWSERS!](https://youtu.be/ygkxFc8SZlc?si=m5NQe-b_oFXs5crb&t=230) (Aug 2024)
* [The ULTIMATE Browser Tier List](https://youtu.be/j5r6jFE8gic?t=560) (Mar 2023) * [The ULTIMATE Browser Tier List](https://youtu.be/j5r6jFE8gic?t=560) (Mar 2023)
* [I Hate Firefox. But I'm Still Switching Back to It.](https://youtu.be/w0SJFED5xK0?t=220) (Nov 2022) * [I Hate Firefox. But I'm Still Switching Back to It.](https://youtu.be/w0SJFED5xK0?t=220) (Nov 2022)
@@ -74,6 +66,7 @@ The `user.js` — a configuration file that controls Firefox settings — is cur
* [GhoSTORIES with Franz & Pete](https://anchor.fm/ghostories/episodes/S2E6-We-Talking-Ghostery-Dawn----Again-er0q02/a-a4o5vmh) | 17:0518:40 (Feb 2021) * [GhoSTORIES with Franz & Pete](https://anchor.fm/ghostories/episodes/S2E6-We-Talking-Ghostery-Dawn----Again-er0q02/a-a4o5vmh) | 17:0518:40 (Feb 2021)
### Articles ### Articles
* [Español] [Firefox is an excellent browser, but this small modification makes it much faster and more private](https://www.genbeta.com/a-fondo/firefox-excelente-navegador-esta-pequena-modificacion-hace-mucho-rapido-privado-asi-funciona-betterfox) (Jan 2025)
* [Browsers for Daily Use](https://anhkhoakz.neocities.org/blog/browsers-for-daily-using/#firefox-but-hardened) (Jan 2024) * [Browsers for Daily Use](https://anhkhoakz.neocities.org/blog/browsers-for-daily-using/#firefox-but-hardened) (Jan 2024)
* [Avoiding Manifest V3 Escaping the Ad-Pocalypse](https://www.xbitlabs.com/avoiding-manifest-v3/) (Dec 2023) * [Avoiding Manifest V3 Escaping the Ad-Pocalypse](https://www.xbitlabs.com/avoiding-manifest-v3/) (Dec 2023)
* [German] [Pulse Browser Review: Firefox fork with Turbo tweaks and Opera sidebar](https://www.computerbild.de/artikel/cb-Tipps-Software-Pulse-Browser-Review-ein-Firefox-Fork-mit-Seitenleiste-wie-bei-Opera-35644139.html#:~:text=Noch%20mehr%20Speed%2DFeatures) (Apr 2023) * [German] [Pulse Browser Review: Firefox fork with Turbo tweaks and Opera sidebar](https://www.computerbild.de/artikel/cb-Tipps-Software-Pulse-Browser-Review-ein-Firefox-Fork-mit-Seitenleiste-wie-bei-Opera-35644139.html#:~:text=Noch%20mehr%20Speed%2DFeatures) (Apr 2023)
+56 -25
View File
@@ -3,7 +3,7 @@
* Securefox * * Securefox *
* "Natura non contristatur" * * "Natura non contristatur" *
* priority: provide sensible security and privacy * * priority: provide sensible security and privacy *
* version: 133 * * version: 140 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
* credit: Most prefs are reproduced and adapted from the arkenfox project * * credit: Most prefs are reproduced and adapted from the arkenfox project *
* credit urL: https://github.com/arkenfox/user.js * * credit urL: https://github.com/arkenfox/user.js *
@@ -21,10 +21,10 @@
// [NOTE] FF86: "Strict" tracking protection enables dFPI. // [NOTE] FF86: "Strict" tracking protection enables dFPI.
// [1] https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop // [1] https://support.mozilla.org/en-US/kb/enhanced-tracking-protection-firefox-desktop
// [2] https://www.reddit.com/r/firefox/comments/l7xetb/network_priority_for_firefoxs_enhanced_tracking/gle2mqn/?web2x&context=3 // [2] https://www.reddit.com/r/firefox/comments/l7xetb/network_priority_for_firefoxs_enhanced_tracking/gle2mqn/?web2x&context=3
user_pref("browser.contentblocking.category", "strict"); // [HIDDEN]
//user_pref("privacy.trackingprotection.enabled", true); // enabled with "Strict" //user_pref("privacy.trackingprotection.enabled", true); // enabled with "Strict"
//user_pref("privacy.trackingprotection.pbmode.enabled", true); // DEFAULT //user_pref("privacy.trackingprotection.pbmode.enabled", true); // DEFAULT
//user_pref("browser.contentblocking.customBlockList.preferences.ui.enabled", false); // DEFAULT //user_pref("browser.contentblocking.customBlockList.preferences.ui.enabled", false); // DEFAULT
user_pref("browser.contentblocking.category", "strict"); // [HIDDEN]
//user_pref("privacy.trackingprotection.socialtracking.enabled", true); // enabled with "Strict" //user_pref("privacy.trackingprotection.socialtracking.enabled", true); // enabled with "Strict"
//user_pref("privacy.socialtracking.block_cookies.enabled", true); // DEFAULT //user_pref("privacy.socialtracking.block_cookies.enabled", true); // DEFAULT
//user_pref("privacy.trackingprotection.cryptomining.enabled", true); // DEFAULT //user_pref("privacy.trackingprotection.cryptomining.enabled", true); // DEFAULT
@@ -56,15 +56,28 @@ user_pref("browser.contentblocking.category", "strict"); // [HIDDEN]
//user_pref("privacy.query_stripping.strip_list", ""); // DEFAULT //user_pref("privacy.query_stripping.strip_list", ""); // DEFAULT
//user_pref("privacy.query_stripping.strip_on_share.enabled", true); //user_pref("privacy.query_stripping.strip_on_share.enabled", true);
// PREF: allow embedded tweets, Instagram and Reddit posts, and TikTok embeds // PREF: Smartblock
// [1] https://support.mozilla.org/en-US/kb/smartblock-enhanced-tracking-protection
// [2] https://www.youtube.com/watch?v=VE8SrClOTgw
// [3] https://searchfox.org/mozilla-central/source/browser/extensions/webcompat/data/shims.js
//user_pref("extensions.webcompat.enable_shims", true); // [HIDDEN] enabled with "Strict"
//user_pref("extensions.webcompat.smartblockEmbeds.enabled", true); // [DEFAULT FF137+]
// PREF: allow embedded tweets and reddit posts [FF136+]
// [TEST - reddit embed] https://www.pcgamer.com/amazing-halo-infinite-bugs-are-already-rolling-in/ // [TEST - reddit embed] https://www.pcgamer.com/amazing-halo-infinite-bugs-are-already-rolling-in/
// [TEST - instagram embed] https://www.ndtv.com/entertainment/bharti-singh-and-husband-haarsh-limbachiyaa-announce-pregnancy-see-trending-post-2646359 // [TEST - instagram embed] https://www.ndtv.com/entertainment/bharti-singh-and-husband-haarsh-limbachiyaa-announce-pregnancy-see-trending-post-2646359
// [TEST - tweet embed] https://www.newsweek.com/cryptic-tweet-britney-spears-shows-elton-john-collab-may-date-back-2015-1728036 // [TEST - tweet embed] https://www.newsweek.com/cryptic-tweet-britney-spears-shows-elton-john-collab-may-date-back-2015-1728036
// [TEST - tiktok embed] https://www.vulture.com/article/snl-adds-four-new-cast-members-for-season-48.html // [TEST - tiktok embed] https://www.vulture.com/article/snl-adds-four-new-cast-members-for-season-48.html
// [TEST - truthsocial embed] https://www.newsweek.com/donald-trump-congratulates-patrick-brittany-mahomes-new-baby-2027097
// [1] https://www.reddit.com/r/firefox/comments/l79nxy/firefox_dev_is_ignoring_social_tracking_preference/gl84ukk // [1] https://www.reddit.com/r/firefox/comments/l79nxy/firefox_dev_is_ignoring_social_tracking_preference/gl84ukk
// [2] https://www.reddit.com/r/firefox/comments/pvds9m/reddit_embeds_not_loading/ // [2] https://www.reddit.com/r/firefox/comments/pvds9m/reddit_embeds_not_loading/
user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"); // MANUAL // [3] https://github.com/yokoffing/Betterfox/issues/413
user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com"); // MANUAL //user_pref("urlclassifier.trackingSkipURLs", "embed.reddit.com, *.twitter.com, *.twimg.com"); // MANUAL [FF136+]
//user_pref("urlclassifier.features.socialtracking.skipURLs", "*.twitter.com, *.twimg.com"); // MANUAL [FF136+]
// PREF: allow embedded tweets, Instagram and Reddit posts, and TikTok embeds [before FF136+]
//user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"); // MANUAL
//user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com"); // MANUAL
// PREF: lower the priority of network loads for resources on the tracking protection list [NIGHTLY] // PREF: lower the priority of network loads for resources on the tracking protection list [NIGHTLY]
// [1] https://github.com/arkenfox/user.js/issues/102#issuecomment-298413904 // [1] https://github.com/arkenfox/user.js/issues/102#issuecomment-298413904
@@ -109,7 +122,9 @@ user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.
// [5] https://hacks.mozilla.org/2021/02/introducing-state-partitioning/ // [5] https://hacks.mozilla.org/2021/02/introducing-state-partitioning/
// [6] https://github.com/arkenfox/user.js/issues/1281 // [6] https://github.com/arkenfox/user.js/issues/1281
// [7] https://hacks.mozilla.org/2022/02/improving-the-storage-access-api-in-firefox/ // [7] https://hacks.mozilla.org/2022/02/improving-the-storage-access-api-in-firefox/
// [8] https://blog.includesecurity.com/2025/04/cross-site-websocket-hijacking-exploitation-in-2025/
//user_pref("network.cookie.cookieBehavior", 5); // DEFAULT FF103+ //user_pref("network.cookie.cookieBehavior", 5); // DEFAULT FF103+
//user_pref("network.cookie.cookieBehavior.optInPartitioning", true); // [ETP FF132+]
//user_pref("browser.contentblocking.reject-and-isolate-cookies.preferences.ui.enabled", true); // DEFAULT //user_pref("browser.contentblocking.reject-and-isolate-cookies.preferences.ui.enabled", true); // DEFAULT
// PREF: Network Partitioning // PREF: Network Partitioning
@@ -122,18 +137,12 @@ user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.
// [3] https://blog.mozilla.org/security/2021/01/26/supercookie-protections/ // [3] https://blog.mozilla.org/security/2021/01/26/supercookie-protections/
//user_pref("privacy.partition.network_state", true); // DEFAULT //user_pref("privacy.partition.network_state", true); // DEFAULT
//user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+] //user_pref("privacy.partition.serviceWorkers", true); // [DEFAULT: true FF105+]
//user_pref("privacy.partition.network_state.ocsp_cache", true); // enabled with "Strict" [DEFAULT: true FF123+] //user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true FF123+]
//user_pref("privacy.partition.bloburl_per_partition_key", true); // [FF118+] //user_pref("privacy.partition.bloburl_per_partition_key", true); // [FF118+]
// enable APS (Always Partitioning Storage) [FF104+] // enable APS (Always Partitioning Storage) [FF104+]
//user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [DEFAULT: true FF109+] //user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", true); // [DEFAULT: true FF109+]
//user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [DEFAULT: false FF109+] //user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", false); // [DEFAULT: false FF109+]
// PREF: Smartblock
// [1] https://support.mozilla.org/en-US/kb/smartblock-enhanced-tracking-protection
// [2] https://www.youtube.com/watch?v=VE8SrClOTgw
// [3] https://searchfox.org/mozilla-central/source/browser/extensions/webcompat/data/shims.js
//user_pref("extensions.webcompat.enable_shims", true); // enabled with "Strict"
// PREF: Redirect Tracking Prevention / Cookie Purging // PREF: Redirect Tracking Prevention / Cookie Purging
// All storage is cleared (more or less) daily from origins that are known trackers and that // All storage is cleared (more or less) daily from origins that are known trackers and that
// havent received a top-level user interaction (including scroll) within the last 45 days. // havent received a top-level user interaction (including scroll) within the last 45 days.
@@ -159,6 +168,7 @@ user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.
// [6] https://web.dev/samesite-cookies-explained/ // [6] https://web.dev/samesite-cookies-explained/
// [7] https://portswigger.net/web-security/csrf/bypassing-samesite-restrictions // [7] https://portswigger.net/web-security/csrf/bypassing-samesite-restrictions
// [8] https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies // [8] https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
// [9] https://blog.includesecurity.com/2025/04/cross-site-websocket-hijacking-exploitation-in-2025/
// [TEST] https://samesite-sandbox.glitch.me/ // [TEST] https://samesite-sandbox.glitch.me/
//user_pref("network.cookie.sameSite.laxByDefault", true); //user_pref("network.cookie.sameSite.laxByDefault", true);
//user_pref("network.cookie.sameSite.noneRequiresSecure", true); // [DEFAULT FF131+] //user_pref("network.cookie.sameSite.noneRequiresSecure", true); // [DEFAULT FF131+]
@@ -255,6 +265,7 @@ user_pref("security.OCSP.enabled", 0);
// [1] https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/ // [1] https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/
// [2] https://www.imperialviolet.org/2014/04/19/revchecking.html // [2] https://www.imperialviolet.org/2014/04/19/revchecking.html
// [3] https://www.ssl.com/blogs/how-do-browsers-handle-revoked-ssl-tls-certificates/#ftoc-heading-3 // [3] https://www.ssl.com/blogs/how-do-browsers-handle-revoked-ssl-tls-certificates/#ftoc-heading-3
// [4] https://letsencrypt.org/2024/12/05/ending-ocsp/
//user_pref("security.OCSP.require", true); //user_pref("security.OCSP.require", true);
// PREF: CRLite // PREF: CRLite
@@ -266,7 +277,7 @@ user_pref("security.OCSP.enabled", 0);
// 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" [FF99+, default FF100+] // 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" [FF99+, default FF100+]
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071 // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071
// [2] https://blog.mozilla.org/security/tag/crlite/ // [2] https://blog.mozilla.org/security/tag/crlite/
user_pref("security.remote_settings.crlite_filters.enabled", true); //user_pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true FF137+]
user_pref("security.pki.crlite_mode", 2); user_pref("security.pki.crlite_mode", 2);
// PREF: HTTP Public Key Pinning (HPKP) // PREF: HTTP Public Key Pinning (HPKP)
@@ -556,8 +567,8 @@ user_pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
// PREF: display "Not Secure" text on HTTP sites // PREF: display "Not Secure" text on HTTP sites
// Needed with HTTPS-First Policy; not needed with HTTPS-Only Mode. // Needed with HTTPS-First Policy; not needed with HTTPS-Only Mode.
user_pref("security.insecure_connection_text.enabled", true); //user_pref("security.insecure_connection_text.enabled", true); // [DEFAULT FF136+]
user_pref("security.insecure_connection_text.pbmode.enabled", true); //user_pref("security.insecure_connection_text.pbmode.enabled", true); // [DEFAULT FF136+]
// PREF: do not show search terms in URL bar [FF110+] // PREF: do not show search terms in URL bar [FF110+]
// Show search query instead of URL on search results pages. // Show search query instead of URL on search results pages.
@@ -572,11 +583,13 @@ user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
//user_pref("browser.search.separatePrivateDefault", true); // DEFAULT //user_pref("browser.search.separatePrivateDefault", true); // DEFAULT
// PREF: enable option to add custom search engine // PREF: enable option to add custom search engine
// Before FF140, this pref was hidden.
// [SETTINGS] Settings -> Search -> Search Shortcuts -> Add // [SETTINGS] Settings -> Search -> Search Shortcuts -> Add
// [EXAMPLE] https://search.brave.com/search?q=%s // [EXAMPLE] https://search.brave.com/search?q=%s
// [EXAMPLE] https://lite.duckduckgo.com/lite/?q=%s // [EXAMPLE] https://lite.duckduckgo.com/lite/?q=%s
// [1] https://reddit.com/r/firefox/comments/xkzswb/adding_firefox_search_engine_manually/ // [1] https://reddit.com/r/firefox/comments/xkzswb/adding_firefox_search_engine_manually/
user_pref("browser.urlbar.update2.engineAliasRefresh", true); // HIDDEN // [2] https://www.mozilla.org/en-US/firefox/140.0/releasenotes/
//user_pref("browser.urlbar.update2.engineAliasRefresh", true); // [DEFAULT FF140+]
// PREF: disable live search suggestions (Google, Bing, etc.) // PREF: disable live search suggestions (Google, Bing, etc.)
// [WARNING] Search engines keylog every character you type from the URL bar. // [WARNING] Search engines keylog every character you type from the URL bar.
@@ -652,7 +665,8 @@ user_pref("network.IDN_show_punycode", true);
// [4] https://web.dev/why-https-matters/ // [4] https://web.dev/why-https-matters/
// [5] https://www.cloudflare.com/learning/ssl/why-use-https/ // [5] https://www.cloudflare.com/learning/ssl/why-use-https/
// [6] https://blog.chromium.org/2023/08/towards-https-by-default.html // [6] https://blog.chromium.org/2023/08/towards-https-by-default.html
user_pref("dom.security.https_first", true); // [DEFAULT FF129+] // [7] https://attackanddefense.dev/2025/03/31/https-first-in-firefox-136.html
//user_pref("dom.security.https_first", true); // [DEFAULT FF136+]
//user_pref("dom.security.https_first_pbm", true); // [DEFAULT FF91+] //user_pref("dom.security.https_first_pbm", true); // [DEFAULT FF91+]
//user_pref("dom.security.https_first_schemeless", true); // [FF120+] [DEFAULT FF129+] //user_pref("dom.security.https_first_schemeless", true); // [FF120+] [DEFAULT FF129+]
@@ -832,7 +846,6 @@ user_pref("dom.security.https_first", true); // [DEFAULT FF129+]
// [NOTE] This does not clear any passwords already saved. // [NOTE] This does not clear any passwords already saved.
// [SETTING] Privacy & Security>Logins and Passwords>Ask to save logins and passwords for websites // [SETTING] Privacy & Security>Logins and Passwords>Ask to save logins and passwords for websites
//user_pref("signon.rememberSignons", false); //user_pref("signon.rememberSignons", false);
//user_pref("signon.rememberSignons.visibilityToggle", true); // DEFAULT
//user_pref("signon.schemeUpgrades", true); // DEFAULT //user_pref("signon.schemeUpgrades", true); // DEFAULT
//user_pref("signon.showAutoCompleteFooter", true); // DEFAULT //user_pref("signon.showAutoCompleteFooter", true); // DEFAULT
//user_pref("signon.autologin.proxy", false); // DEFAULT //user_pref("signon.autologin.proxy", false); // DEFAULT
@@ -880,10 +893,11 @@ user_pref("signon.privateBrowsingCapture.enabled", false);
// PREF: limit (or disable) HTTP authentication credentials dialogs triggered by sub-resources [FF41+] // PREF: limit (or disable) HTTP authentication credentials dialogs triggered by sub-resources [FF41+]
// Hardens against potential credentials phishing. // Hardens against potential credentials phishing.
// [WARNING] Hardening this pref may prevent you from subscribing to SoGo calendars in Thunderbird 138
// 0=don't allow sub-resources to open HTTP authentication credentials dialogs // 0=don't allow sub-resources to open HTTP authentication credentials dialogs
// 1=don't allow cross-origin sub-resources to open HTTP authentication credentials dialogs // 1=don't allow cross-origin sub-resources to open HTTP authentication credentials dialogs
// 2=allow sub-resources to open HTTP authentication credentials dialogs (default) // 2=allow sub-resources to open HTTP authentication credentials dialogs (default)
// [1] https://www.fxsitecompat.com/en-CA/docs/2015/http-auth-dialog-can-no-longer-be-triggered-by-cross-origin-resources/ // [1] https://web.archive.org/web/20181123134351/https://www.fxsitecompat.com/en-CA/docs/2015/http-auth-dialog-can-no-longer-be-triggered-by-cross-origin-resources/
user_pref("network.auth.subresource-http-auth-allow", 1); user_pref("network.auth.subresource-http-auth-allow", 1);
// PREF: prevent password truncation when submitting form data // PREF: prevent password truncation when submitting form data
@@ -1152,6 +1166,10 @@ user_pref("privacy.userContext.ui.enabled", true);
// [3] https://www.zdnet.com/article/half-of-the-websites-using-webassembly-use-it-for-malicious-purposes // [3] https://www.zdnet.com/article/half-of-the-websites-using-webassembly-use-it-for-malicious-purposes
//user_pref("javascript.options.wasm", false); //user_pref("javascript.options.wasm", false);
// PREF: CSP reporting
// [1] https://github.com/yokoffing/Betterfox/issues/415
//user_pref("security.csp.reporting.enabled", false);
/****************************************************************************** /******************************************************************************
* SECTION: SAFE BROWSING (SB) * * SECTION: SAFE BROWSING (SB) *
******************************************************************************/ ******************************************************************************/
@@ -1262,16 +1280,21 @@ user_pref("browser.safebrowsing.downloads.remote.enabled", false);
// To add site exceptions: Page Info>Permissions>Receive Notifications // To add site exceptions: Page Info>Permissions>Receive Notifications
// To manage site exceptions: Options>Privacy & Security>Permissions>Notifications>Settings // To manage site exceptions: Options>Privacy & Security>Permissions>Notifications>Settings
// 0=always ask (default), 1=allow, 2=block // 0=always ask (default), 1=allow, 2=block
// [1] https://easylinuxtipsproject.blogspot.com/p/security.html#ID5
// [2] https://github.com/yokoffing/Betterfox/wiki/Common-Overrides#site-notifications
user_pref("permissions.default.desktop-notification", 2); user_pref("permissions.default.desktop-notification", 2);
// PREF: default permission for Location Requests // PREF: default permission for Location Requests
// 0=always ask (default), 1=allow, 2=block // 0=always ask (default), 1=allow, 2=block
user_pref("permissions.default.geo", 2); user_pref("permissions.default.geo", 2);
// PREF: use Mozilla geolocation service instead of Google when geolocation is enabled // PREF: use alternative geolocation service instead of Google
// [NOTE] Mozilla's geolocation service is discontinued 12 June 2024 [1]. // [NOTE] Mozilla's geolocation service was discontinued in June 2024 [1].
// BeaconDB is its replacement.
// [1] https://github.com/mozilla/ichnaea/issues/2065 // [1] https://github.com/mozilla/ichnaea/issues/2065
//user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); // [2] https://codeberg.org/beacondb/beacondb
// [3] https://github.com/yokoffing/Betterfox/issues/378
user_pref("geo.provider.network.url", "https://beacondb.net/v1/geolocate");
// PREF: disable using the OS's geolocation service // PREF: disable using the OS's geolocation service
//user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] //user_pref("geo.provider.ms-windows-location", false); // [WINDOWS]
@@ -1312,6 +1335,10 @@ user_pref("permissions.manager.defaultsUrl", "");
// PREF: remove webchannel whitelist // PREF: remove webchannel whitelist
//user_pref("webchannel.allowObject.urlWhitelist", ""); // [DEFAULT FF132+] //user_pref("webchannel.allowObject.urlWhitelist", ""); // [DEFAULT FF132+]
// PREF: disable metadata caching for installed add-ons by default
// [1] https://blog.mozilla.org/addons/how-to-opt-out-of-add-on-metadata-updates/
user_pref("extensions.getAddons.cache.enabled", false);
/****************************************************************************** /******************************************************************************
* SECTION: TELEMETRY * * SECTION: TELEMETRY *
******************************************************************************/ ******************************************************************************/
@@ -1352,6 +1379,9 @@ user_pref("toolkit.coverage.endpoint.base", "");
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false); user_pref("browser.newtabpage.activity-stream.telemetry", false);
// PREF: disable daily active users [FF136+]
user_pref("datareporting.usage.uploadEnabled", false);
/****************************************************************************** /******************************************************************************
* SECTION: EXPERIMENTS * * SECTION: EXPERIMENTS *
******************************************************************************/ ******************************************************************************/
@@ -1384,15 +1414,16 @@ user_pref("browser.tabs.crashReporting.sendReport", false);
******************************************************************************/ ******************************************************************************/
// PREF: disable Captive Portal detection // PREF: disable Captive Portal detection
// [WARNING] Do NOT use for mobile devices. May NOT be able to use Firefox on public wifi (hotels, coffee shops, etc).
// [1] https://www.eff.org/deeplinks/2017/08/how-captive-portals-interfere-wireless-security-and-privacy // [1] https://www.eff.org/deeplinks/2017/08/how-captive-portals-interfere-wireless-security-and-privacy
// [2] https://wiki.mozilla.org/Necko/CaptivePortal // [2] https://wiki.mozilla.org/Necko/CaptivePortal
user_pref("captivedetect.canonicalURL", ""); //user_pref("captivedetect.canonicalURL", "");
user_pref("network.captive-portal-service.enabled", false); //user_pref("network.captive-portal-service.enabled", false);
// PREF: disable Network Connectivity checks // PREF: disable Network Connectivity checks
// [WARNING] Do NOT use for mobile devices. May NOT be able to use Firefox on public wifi (hotels, coffee shops, etc). // [WARNING] Do NOT use for mobile devices. May NOT be able to use Firefox on public wifi (hotels, coffee shops, etc).
// [1] https://bugzilla.mozilla.org/1460537 // [1] https://bugzilla.mozilla.org/1460537
user_pref("network.connectivity-service.enabled", false); //user_pref("network.connectivity-service.enabled", false);
// PREF: disable Privacy-Preserving Attribution [FF128+] // PREF: disable Privacy-Preserving Attribution [FF128+]
// [NOTE] PPA disabled if main telemetry switches are disabled. // [NOTE] PPA disabled if main telemetry switches are disabled.
+2 -2
View File
@@ -3,7 +3,7 @@
* Smoothfox * * Smoothfox *
* "Faber est suae quisque fortunae" * * "Faber est suae quisque fortunae" *
* priority: better scrolling * * priority: better scrolling *
* version: 126.1 * * version: 137 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
***************************************************************************************/ ***************************************************************************************/
@@ -17,7 +17,7 @@
// only sharpen scrolling // only sharpen scrolling
user_pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX user_pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX
user_pref("general.smoothScroll", true); // DEFAULT user_pref("general.smoothScroll", true); // DEFAULT
user_pref("mousewheel.min_line_scroll_amount", 10); // 10-40; adjust this number to your liking; default=5 user_pref("mousewheel.min_line_scroll_amount", 10); // adjust this number to your liking; default=5
user_pref("general.smoothScroll.mouseWheel.durationMinMS", 80); // default=50 user_pref("general.smoothScroll.mouseWheel.durationMinMS", 80); // default=50
user_pref("general.smoothScroll.currentVelocityWeighting", "0.15"); // default=.25 user_pref("general.smoothScroll.currentVelocityWeighting", "0.15"); // default=.25
user_pref("general.smoothScroll.stopDecelerationWeighting", "0.6"); // default=.4 user_pref("general.smoothScroll.stopDecelerationWeighting", "0.6"); // default=.4
+56 -25
View File
@@ -1,3 +1,5 @@
#!/usr/bin/env python3
from datetime import datetime from datetime import datetime
from os import name, getenv from os import name, getenv
from json import loads from json import loads
@@ -43,23 +45,47 @@ If there's any problems with the script, feel free to mention @Denperidge on Git
re_find_version = compile(r"mozilla.org/.*?/firefox/(?P<version>[\d.]*?)/", IGNORECASE) re_find_version = compile(r"mozilla.org/.*?/firefox/(?P<version>[\d.]*?)/", IGNORECASE)
re_find_overrides = r"(overrides|prefs).*\n(?P<space>\n)" re_find_overrides = r"(overrides|prefs).*\n(?P<space>\n)"
FIREFOX_ROOT = Path.home().joinpath(".mozilla/firefox").absolute() if name != "nt" else Path(getenv("APPDATA") + "/Mozilla/Firefox/").resolve() INSTALLATIONS_TO_CHECK = [
DEFAULT_FIREFOX_INSTALL = Path("C:/Program Files/Mozilla Firefox/" if name == "nt" else "") # windows
{
selected_if_backup = None "command": [str(Path("C:/Program Files/Mozilla Firefox/firefox"))],
selected_config = "" "root": Path(getenv("APPDATA") or "").joinpath("Mozilla/Firefox").resolve(),
userjs_path = None },
# linux
{
"command": ["firefox"],
"root": Path.home().joinpath(".mozilla/firefox").absolute(),
},
# flatpak
{
"command": ["flatpak", "run", "org.mozilla.firefox"],
"root": Path.home().joinpath(".var/app/org.mozilla.firefox/.mozilla/firefox").absolute(),
},
]
def _get_firefox_version(bin="firefox"): # command is a list, eg. ["firefox"] or ["flatpak", "run", "org.mozilla.firefox"]
try: def _get_firefox_version(command):
ver_string = check_output([bin, "--version"], encoding="UTF-8") ver_string = check_output(command + ["--version"], encoding="UTF-8")
return ver_string[ver_string.rindex(" ")+1:].strip() return ver_string[ver_string.rindex(" ")+1:].strip()
except FileNotFoundError:
return _get_firefox_version(str(DEFAULT_FIREFOX_INSTALL.joinpath("firefox")))
def _get_default_profile_folder(): def _get_default_firefox_version_and_root():
config_path = FIREFOX_ROOT.joinpath("profiles.ini") print("Searching for Firefox installation...")
for installation in INSTALLATIONS_TO_CHECK:
try:
print(f" '{' '.join(installation['command'])}': ", end="")
version = _get_firefox_version(installation["command"])
print("YES")
print(f"Root: {installation['root']}")
return version, installation["root"]
except Exception:
print("no")
continue
raise Exception("Firefox binary not found. Please ensure Firefox is installed and the path is correct.")
def _get_default_profile_folder(firefox_root):
config_path = firefox_root.joinpath("profiles.ini")
print(f"Reading {config_path}...") print(f"Reading {config_path}...")
@@ -82,7 +108,7 @@ def _get_default_profile_folder():
break break
if path is not None: if path is not None:
return FIREFOX_ROOT.joinpath(path) return firefox_root.joinpath(path)
else: else:
raise Exception("Could not determine default Firefox profile! Exiting...") raise Exception("Could not determine default Firefox profile! Exiting...")
@@ -122,8 +148,7 @@ def _get_latest_compatible_release(releases):
for release in releases: for release in releases:
if firefox_version in release["supported"]: if firefox_version in release["supported"]:
return release return release
return None return None
def backup_profile(src): def backup_profile(src):
dest = f"{src}-backup-{datetime.today().strftime('%Y-%m-%d-%H-%M-%S')}" dest = f"{src}-backup-{datetime.today().strftime('%Y-%m-%d-%H-%M-%S')}"
@@ -166,13 +191,16 @@ def list_releases(releases, only_supported=False, add_index=False):
if not only_supported or (only_supported and supported): if not only_supported or (only_supported and supported):
print(f"{f'[{i}]' if add_index else ''}{'> ' if supported else ' '}{release['name'].ljust(20)}\t\t\tSupported: {','.join(release['supported'])}") print(f"{f'[{i}]' if add_index else ''}{'> ' if supported else ' '}{release['name'].ljust(20)}\t\t\tSupported: {','.join(release['supported'])}")
i+=1 i+=1
def _press_enter_to_exit(args):
if not args.no_wait_for_exit:
input("Press ENTER to exit...")
if __name__ == "__main__": if __name__ == "__main__":
firefox_version = _get_firefox_version() firefox_version, firefox_root = _get_default_firefox_version_and_root()
selected_release = None
default_profile_folder = _get_default_profile_folder(firefox_root)
default_profile_folder = _get_default_profile_folder()
argparser = ArgumentParser( argparser = ArgumentParser(
) )
@@ -194,14 +222,17 @@ if __name__ == "__main__":
modes.add_argument("--list-all", action="store_true", default=False, help=f"List all Betterfox releases") modes.add_argument("--list-all", action="store_true", default=False, help=f"List all Betterfox releases")
modes.add_argument("--interactive", "-i", action="store_true", default=False, help=f"Interactively select Betterfox version") modes.add_argument("--interactive", "-i", action="store_true", default=False, help=f"Interactively select Betterfox version")
behaviour = argparser.add_argument_group("Script behaviour")
behaviour.add_argument("--no-wait-for-exit", "-nwfe", action="store_true", default=False, help="Disable 'Press ENTER to exit...' and exit immediately"),
args = argparser.parse_args() args = argparser.parse_args()
releases = _get_releases(args.repository_owner, args.repository_name) releases = _get_releases(args.repository_owner, args.repository_name)
selected_release = None
if args.list or args.list_all: if args.list or args.list_all:
list_releases(releases, args.list) list_releases(releases, args.list)
input("Press ENTER to exit...") _press_enter_to_exit(args)
exit() exit()
if not args.no_backup: if not args.no_backup:
@@ -251,6 +282,6 @@ if __name__ == "__main__":
userjs_file.write(new_content) userjs_file.write(new_content)
else: else:
print(f"Found no overrides in {args.overrides}") print(f"Found no overrides in {args.overrides}")
input("Press ENTER to exit...") _press_enter_to_exit(args)
+16 -11
View File
@@ -19,12 +19,19 @@
/** FASTFOX ***/ /** FASTFOX ***/
user_pref("browser.sessionstore.restore_pinned_tabs_on_demand", true); user_pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
user_pref("browser.sessionhistory.max_total_viewers", 4); // only remember # of pages in Back-Forward cache
user_pref("browser.cache.disk.enable", false); // disable disk cache // SPECULATIVE LOADING WITHOUT PREDICTOR
user_pref("network.http.speculative-parallel-limit", 20);
//user_pref("network.dns.disablePrefetch", false);
//user_pref("network.dns.disablePrefetchFromHTTPS", false);
//user_pref("dom.prefetch_dns_for_anchor_https_document", true);
user_pref("browser.urlbar.speculativeConnect.enabled", true);
user_pref("browser.places.speculativeConnect.enabled", true);
user_pref("network.prefetch-next", true);
user_pref("network.http.max-persistent-connections-per-server", 20); // increase download connections user_pref("network.http.max-persistent-connections-per-server", 20); // increase download connections
/** SECUREFOX ***/ /** SECUREFOX ***/
//user_pref("urlclassifier.features.socialtracking.skipURLs", "*.twitter.com, *.twimg.com"); // removed *.instagram.com
user_pref("signon.rememberSignons", false); // disable password manager user_pref("signon.rememberSignons", false); // disable password manager
user_pref("extensions.formautofill.addresses.enabled", false); // disable address manager user_pref("extensions.formautofill.addresses.enabled", false); // disable address manager
user_pref("extensions.formautofill.creditCards.enabled", false); // disable credit card manager user_pref("extensions.formautofill.creditCards.enabled", false); // disable credit card manager
@@ -35,8 +42,6 @@ user_pref("signon.management.page.breach-alerts.enabled", false); // extra harde
user_pref("signon.autofillForms", false); // unselect "Autofill logins and passwords" for clean UI user_pref("signon.autofillForms", false); // unselect "Autofill logins and passwords" for clean UI
user_pref("signon.generation.enabled", false); // unselect "Suggest and generate strong passwords" for clean UI user_pref("signon.generation.enabled", false); // unselect "Suggest and generate strong passwords" for clean UI
user_pref("signon.firefoxRelay.feature", ""); // unselect suggestions from Firefox Relay for clean UI user_pref("signon.firefoxRelay.feature", ""); // unselect suggestions from Firefox Relay for clean UI
//user_pref("privacy.sanitize.sanitizeOnShutdown", true); // clear browsing data on shutdown
//user_pref("privacy.clearOnShutdown.offlineApps", true); // clear Site Data on shutdown
user_pref("browser.safebrowsing.downloads.enabled", false); // deny SB to scan downloads to identify suspicious files; local checks only user_pref("browser.safebrowsing.downloads.enabled", false); // deny SB to scan downloads to identify suspicious files; local checks only
user_pref("browser.safebrowsing.downloads.remote.url", ""); // enforce no remote checks for downloads by SB user_pref("browser.safebrowsing.downloads.remote.url", ""); // enforce no remote checks for downloads by SB
user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false); // clean up UI; not needed in user.js if remote downloads are disabled user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false); // clean up UI; not needed in user.js if remote downloads are disabled
@@ -49,10 +54,11 @@ user_pref("identity.fxaccounts.enabled", false); // disable Firefox Sync
user_pref("browser.firefox-view.feature-tour", "{\"screen\":\"\",\"complete\":true}"); // disable the Firefox View tour from popping up for new profiles user_pref("browser.firefox-view.feature-tour", "{\"screen\":\"\",\"complete\":true}"); // disable the Firefox View tour from popping up for new profiles
user_pref("accessibility.force_disabled", 1); // disable Accessibility features user_pref("accessibility.force_disabled", 1); // disable Accessibility features
user_pref("security.cert_pinning.enforcement_level", 2); // strict public key pinning user_pref("security.cert_pinning.enforcement_level", 2); // strict public key pinning
user_pref("captivedetect.canonicalURL", ""); // disable captive portal detection
user_pref("network.captive-portal-service.enabled", false); // disable captive portal detection
user_pref("network.connectivity-service.enabled", false); // disable captive portal detection
/** PESKYFOX ***/ /** PESKYFOX ***/
user_pref("cookiebanners.service.mode", 0); // disable for performance since I'm using Easylist Cookie
user_pref("cookiebanners.service.mode.privateBrowsing", 0); // disable for performance since I'm using Easylist Cookie
user_pref("devtools.accessibility.enabled", false); // removes un-needed "Inspect Accessibility Properties" on right-click user_pref("devtools.accessibility.enabled", false); // removes un-needed "Inspect Accessibility Properties" on right-click
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // Settings>Home>Firefox Home Content>Recent Activity>Shortcuts>Sponsored shortcuts user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // Settings>Home>Firefox Home Content>Recent Activity>Shortcuts>Sponsored shortcuts
user_pref("browser.newtabpage.activity-stream.showSponsored", false); // Settings>Home>Firefox Home Content>Recent Activity>Recommended by Pocket>Sponsored Stories user_pref("browser.newtabpage.activity-stream.showSponsored", false); // Settings>Home>Firefox Home Content>Recent Activity>Recommended by Pocket>Sponsored Stories
@@ -75,13 +81,13 @@ user_pref("browser.bookmarks.max_backups", 0); // minimize disk use; manually ba
user_pref("view_source.wrap_long_lines", true); // wrap source lines user_pref("view_source.wrap_long_lines", true); // wrap source lines
user_pref("devtools.debugger.ui.editor-wrapping", true); // wrap lines in devtools user_pref("devtools.debugger.ui.editor-wrapping", true); // wrap lines in devtools
user_pref("browser.zoom.full", false); // text-only zoom, not all elements on page user_pref("browser.zoom.full", false); // text-only zoom, not all elements on page
user_pref("pdfjs.sidebarViewOnLoad", 2); // force showing of Table of Contents in sidebar for PDFs (if available) //user_pref("pdfjs.sidebarViewOnLoad", 2); // force showing of Table of Contents in sidebar for PDFs (if available)
user_pref("layout.word_select.eat_space_to_next_word", false); // do not select the space next to a word when selecting a word user_pref("layout.word_select.eat_space_to_next_word", false); // do not select the space next to a word when selecting a word
//user_pref("browser.tabs.loadInBackground", false); // CTRL+SHIFT+CLICK for background tabs; Settings>General>Tabs>When you open a link, image or media in a new tab, switch to it immediately //user_pref("browser.tabs.loadInBackground", false); // CTRL+SHIFT+CLICK for background tabs; Settings>General>Tabs>When you open a link, image or media in a new tab, switch to it immediately
user_pref("browser.tabs.loadBookmarksInTabs", true); // force bookmarks to open in a new tab, not the current tab user_pref("browser.tabs.loadBookmarksInTabs", true); // force bookmarks to open in a new tab, not the current tab
user_pref("ui.key.menuAccessKey", 0); // remove underlined characters from various settings user_pref("ui.key.menuAccessKey", 0); // remove underlined characters from various settings
user_pref("general.autoScroll", false); // disable unintentional behavior for middle click user_pref("general.autoScroll", false); // disable unintentional behavior for middle click
user_pref("ui.SpellCheckerUnderlineStyle", 1); // dots for spell check errors user_pref("ui.SpellCheckerUnderlineStyle", 1); // [HIDDEN] dots for spell check errors
user_pref("media.videocontrols.picture-in-picture.display-text-tracks.size", "small"); // PiP user_pref("media.videocontrols.picture-in-picture.display-text-tracks.size", "small"); // PiP
user_pref("media.videocontrols.picture-in-picture.urlbar-button.enabled", false); // PiP in address bar user_pref("media.videocontrols.picture-in-picture.urlbar-button.enabled", false); // PiP in address bar
user_pref("reader.parse-on-load.enabled", false); // disable reader mode user_pref("reader.parse-on-load.enabled", false); // disable reader mode
@@ -98,8 +104,7 @@ user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // true by de
/** DELETE IF NOT WINDOWS DESKTOP ***/ /** DELETE IF NOT WINDOWS DESKTOP ***/
user_pref("network.trr.mode", 3); // enable TRR (without System fallback) user_pref("network.trr.mode", 3); // enable TRR (without System fallback)
user_pref("gfx.canvas.accelerated", true); // DEFAULT NON-WINDOWS; enable if not using an integrated GPU //user_pref("browser.startup.preXulSkeletonUI", false); // WINDOWS
user_pref("browser.startup.preXulSkeletonUI", false); // WINDOWS
user_pref("default-browser-agent.enabled", false); // deny Mozilla monitoring default browser (breaks "Make Default" button) user_pref("default-browser-agent.enabled", false); // deny Mozilla monitoring default browser (breaks "Make Default" button)
user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] user_pref("geo.provider.ms-windows-location", false); // [WINDOWS]
user_pref("pdfjs.defaultZoomValue", "125"); // alt=page-width; PDF zoom level user_pref("pdfjs.defaultZoomValue", "125"); // alt=page-width; PDF zoom level
+18 -26
View File
@@ -10,7 +10,7 @@
/**************************************************************************** /****************************************************************************
* Betterfox * * Betterfox *
* "Ad meliora" * * "Ad meliora" *
* version: 133 * * version: 140 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
****************************************************************************/ ****************************************************************************/
@@ -21,12 +21,14 @@
user_pref("content.notify.interval", 100000); user_pref("content.notify.interval", 100000);
/** GFX ***/ /** GFX ***/
user_pref("gfx.canvas.accelerated.cache-items", 4096);
user_pref("gfx.canvas.accelerated.cache-size", 512); user_pref("gfx.canvas.accelerated.cache-size", 512);
user_pref("gfx.content.skia-font-cache-size", 20); user_pref("gfx.content.skia-font-cache-size", 20);
/** DISK CACHE ***/ /** DISK CACHE ***/
user_pref("browser.cache.disk.enable", true); user_pref("browser.cache.disk.enable", false);
/** MEMORY CACHE ***/
user_pref("browser.sessionhistory.max_total_viewers", 4);
/** MEDIA CACHE ***/ /** MEDIA CACHE ***/
user_pref("media.memory_cache_max_size", 65536); user_pref("media.memory_cache_max_size", 65536);
@@ -45,23 +47,22 @@ user_pref("network.dnsCacheExpiration", 3600);
user_pref("network.ssl_tokens_cache_capacity", 10240); user_pref("network.ssl_tokens_cache_capacity", 10240);
/** SPECULATIVE LOADING ***/ /** SPECULATIVE LOADING ***/
user_pref("network.http.speculative-parallel-limit", 0);
user_pref("network.dns.disablePrefetch", true); user_pref("network.dns.disablePrefetch", true);
user_pref("network.dns.disablePrefetchFromHTTPS", true); user_pref("network.dns.disablePrefetchFromHTTPS", true);
user_pref("browser.urlbar.speculativeConnect.enabled", false);
user_pref("browser.places.speculativeConnect.enabled", false);
user_pref("network.prefetch-next", false); user_pref("network.prefetch-next", false);
user_pref("network.predictor.enabled", false); user_pref("network.predictor.enabled", false);
user_pref("network.predictor.enable-prefetch", false);
/** EXPERIMENTAL ***/ /** EXPERIMENTAL ***/
user_pref("layout.css.grid-template-masonry-value.enabled", true); user_pref("layout.css.grid-template-masonry-value.enabled", true);
user_pref("dom.enable_web_task_scheduling", true);
/**************************************************************************** /****************************************************************************
* SECTION: SECUREFOX * * SECTION: SECUREFOX *
****************************************************************************/ ****************************************************************************/
/** TRACKING PROTECTION ***/ /** TRACKING PROTECTION ***/
user_pref("browser.contentblocking.category", "strict"); user_pref("browser.contentblocking.category", "strict");
user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com");
user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com");
user_pref("browser.download.start_downloads_in_tmp_dir", true); user_pref("browser.download.start_downloads_in_tmp_dir", true);
user_pref("browser.helperApps.deleteTempFileOnExit", true); user_pref("browser.helperApps.deleteTempFileOnExit", true);
user_pref("browser.uitour.enabled", false); user_pref("browser.uitour.enabled", false);
@@ -69,7 +70,6 @@ user_pref("privacy.globalprivacycontrol.enabled", true);
/** OCSP & CERTS / HPKP ***/ /** OCSP & CERTS / HPKP ***/
user_pref("security.OCSP.enabled", 0); user_pref("security.OCSP.enabled", 0);
user_pref("security.remote_settings.crlite_filters.enabled", true);
user_pref("security.pki.crlite_mode", 2); user_pref("security.pki.crlite_mode", 2);
/** SSL / TLS ***/ /** SSL / TLS ***/
@@ -89,18 +89,12 @@ user_pref("privacy.history.custom", true);
user_pref("browser.urlbar.trimHttps", true); user_pref("browser.urlbar.trimHttps", true);
user_pref("browser.urlbar.untrimOnUserInteraction.featureGate", true); user_pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
user_pref("browser.search.separatePrivateDefault.ui.enabled", true); user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
user_pref("browser.urlbar.update2.engineAliasRefresh", true);
user_pref("browser.search.suggest.enabled", false); user_pref("browser.search.suggest.enabled", false);
user_pref("browser.urlbar.quicksuggest.enabled", false); user_pref("browser.urlbar.quicksuggest.enabled", false);
user_pref("browser.urlbar.groupLabels.enabled", false); user_pref("browser.urlbar.groupLabels.enabled", false);
user_pref("browser.formfill.enable", false); user_pref("browser.formfill.enable", false);
user_pref("security.insecure_connection_text.enabled", true);
user_pref("security.insecure_connection_text.pbmode.enabled", true);
user_pref("network.IDN_show_punycode", true); user_pref("network.IDN_show_punycode", true);
/** HTTPS-FIRST POLICY ***/
user_pref("dom.security.https_first", true);
/** PASSWORDS ***/ /** PASSWORDS ***/
user_pref("signon.formlessCapture.enabled", false); user_pref("signon.formlessCapture.enabled", false);
user_pref("signon.privateBrowsingCapture.enabled", false); user_pref("signon.privateBrowsingCapture.enabled", false);
@@ -126,8 +120,10 @@ user_pref("browser.safebrowsing.downloads.remote.enabled", false);
/** MOZILLA ***/ /** MOZILLA ***/
user_pref("permissions.default.desktop-notification", 2); user_pref("permissions.default.desktop-notification", 2);
user_pref("permissions.default.geo", 2); user_pref("permissions.default.geo", 2);
user_pref("geo.provider.network.url", "https://beacondb.net/v1/geolocate");
user_pref("browser.search.update", false); user_pref("browser.search.update", false);
user_pref("permissions.manager.defaultsUrl", ""); user_pref("permissions.manager.defaultsUrl", "");
user_pref("extensions.getAddons.cache.enabled", false);
/** TELEMETRY ***/ /** TELEMETRY ***/
user_pref("datareporting.policy.dataSubmissionEnabled", false); user_pref("datareporting.policy.dataSubmissionEnabled", false);
@@ -146,6 +142,7 @@ user_pref("toolkit.coverage.opt-out", true);
user_pref("toolkit.coverage.endpoint.base", ""); user_pref("toolkit.coverage.endpoint.base", "");
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false); user_pref("browser.newtabpage.activity-stream.telemetry", false);
user_pref("datareporting.usage.uploadEnabled", false);
/** EXPERIMENTS ***/ /** EXPERIMENTS ***/
user_pref("app.shield.optoutstudies.enabled", false); user_pref("app.shield.optoutstudies.enabled", false);
@@ -156,11 +153,6 @@ user_pref("app.normandy.api_url", "");
user_pref("breakpad.reportURL", ""); user_pref("breakpad.reportURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false); user_pref("browser.tabs.crashReporting.sendReport", false);
/** DETECTION ***/
user_pref("captivedetect.canonicalURL", "");
user_pref("network.captive-portal-service.enabled", false);
user_pref("network.connectivity-service.enabled", false);
/**************************************************************************** /****************************************************************************
* SECTION: PESKYFOX * * SECTION: PESKYFOX *
****************************************************************************/ ****************************************************************************/
@@ -182,24 +174,20 @@ user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("browser.compactmode.show", true); user_pref("browser.compactmode.show", true);
user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
/** COOKIE BANNER HANDLING ***/
user_pref("cookiebanners.service.mode", 1);
user_pref("cookiebanners.service.mode.privateBrowsing", 1);
/** FULLSCREEN NOTICE ***/ /** FULLSCREEN NOTICE ***/
user_pref("full-screen-api.transition-duration.enter", "0 0"); user_pref("full-screen-api.transition-duration.enter", "0 0");
user_pref("full-screen-api.transition-duration.leave", "0 0"); user_pref("full-screen-api.transition-duration.leave", "0 0");
user_pref("full-screen-api.warning.timeout", 0); user_pref("full-screen-api.warning.timeout", 0);
/** URL BAR ***/ /** URL BAR ***/
user_pref("browser.urlbar.suggest.calculator", true);
user_pref("browser.urlbar.unitConversion.enabled", true); user_pref("browser.urlbar.unitConversion.enabled", true);
user_pref("browser.urlbar.trending.featureGate", false); user_pref("browser.urlbar.trending.featureGate", false);
/** NEW TAB PAGE ***/ /** NEW TAB PAGE ***/
user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); user_pref("browser.newtabpage.activity-stream.default.sites", "");
user_pref("browser.newtabpage.activity-stream.showWeather", false); user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
/** POCKET ***/ /** POCKET ***/
user_pref("extensions.pocket.enabled", false); user_pref("extensions.pocket.enabled", false);
@@ -223,12 +211,16 @@ user_pref("layout.word_select.eat_space_to_next_word", false);
// visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening // visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening
// Enter your personal overrides below this line: // Enter your personal overrides below this line:
/**************************************************************************** /****************************************************************************
* SECTION: SMOOTHFOX * * SECTION: SMOOTHFOX *
****************************************************************************/ ****************************************************************************/
// visit https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js // visit https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js
// Enter your scrolling overrides below this line: // Enter your scrolling overrides below this line:
/**************************************************************************** /****************************************************************************
* END: BETTERFOX * * END: BETTERFOX *
****************************************************************************/ ****************************************************************************/
+127
View File
@@ -0,0 +1,127 @@
//
/* You may copy+paste this file and use it as it is.
*
* If you make changes to your about:config while the program is running, the
* changes will be overwritten by the user.js when the application restarts.
*
* To make lasting changes to preferences, you will have to edit the user.js.
*/
/****************************************************************************
* BetterZen *
* "Ex nihilo nihil fit" *
* version: 138 *
* url: https://github.com/yokoffing/Betterfox *
****************************************************************************/
/****************************************************************************
* SECTION: FASTFOX *
****************************************************************************/
/** GFX ***/
user_pref("gfx.canvas.accelerated.cache-size", 512);
/** DISK CACHE ***/
user_pref("browser.cache.disk.enable", false);
/** NETWORK ***/
user_pref("network.http.pacing.requests.enabled", false);
/** SPECULATIVE LOADING ***/
user_pref("network.dns.disablePrefetch", true);
user_pref("network.dns.disablePrefetchFromHTTPS", true);
user_pref("network.prefetch-next", false);
user_pref("network.predictor.enabled", false);
user_pref("network.predictor.enable-prefetch", false);
/****************************************************************************
* SECTION: SECUREFOX *
****************************************************************************/
/** TRACKING PROTECTION ***/
user_pref("browser.contentblocking.category", "strict");
user_pref("browser.download.start_downloads_in_tmp_dir", true);
/** OCSP & CERTS / HPKP ***/
user_pref("security.OCSP.enabled", 0);
user_pref("security.pki.crlite_mode", 2);
/** DISK AVOIDANCE ***/
user_pref("browser.sessionstore.interval", 60000);
/** SHUTDOWN & SANITIZING ***/
user_pref("browser.privatebrowsing.resetPBM.enabled", true);
user_pref("privacy.history.custom", true);
/** SEARCH / URL BAR ***/
user_pref("browser.urlbar.quicksuggest.enabled", false);
/** PASSWORDS ***/
user_pref("signon.formlessCapture.enabled", false);
user_pref("signon.privateBrowsingCapture.enabled", false);
user_pref("network.auth.subresource-http-auth-allow", 1);
user_pref("editor.truncate_user_pastes", false);
/** HEADERS / REFERERS ***/
user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
/** SAFE BROWSING ***/
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
/** MOZILLA ***/
user_pref("permissions.default.desktop-notification", 2);
user_pref("permissions.default.geo", 2);
user_pref("geo.provider.network.url", "https://beacondb.net/v1/geolocate");
user_pref("browser.search.update", false);
user_pref("permissions.manager.defaultsUrl", "");
/****************************************************************************
* SECTION: PESKYFOX *
****************************************************************************/
/** MOZILLA UI ***/
user_pref("browser.shell.checkDefaultBrowser", false);
/** NEW TAB PAGE ***/
user_pref("browser.newtabpage.activity-stream.default.sites", "");
/** URL BAR ***/
user_pref("dom.text_fragments.create_text_fragment.enabled", true);
/****************************************************************************
* START: ZEN-SPECIFIC OVERRIDES *
****************************************************************************/
// Remove the slashes to enable the prefs
// PREF: re-enable Windows efficiency mode
//user_pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", true);
// PREF: disable new tab preload since they are off by default
//user_pref("browser.newtab.preload", false);
// PREF: show Enhance Tracking Protection shield in URL bar
// Currently bugged if you click to view what's blocked
//user_pref("zen.urlbar.show-protections-icon", true);
// PREF: Disable the Picture in picture pop-out when changing tabs
//user_pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false);
/****************************************************************************
* START: MY OVERRIDES *
****************************************************************************/
// visit https://github.com/yokoffing/Betterfox/wiki/Common-Overrides
// visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening
// Enter your personal overrides below this line:
/****************************************************************************
* SECTION: SMOOTHFOX *
****************************************************************************/
// Reset Zen's custom scrolling prefs to their Firefox defaults before making changes!
// [1] Zen changes: https://github.com/zen-browser/desktop/blob/3932ec21f5661440c4b20796f90341a6ac725818/src/browser/app/profile/zen-browser.js#L297-L312
// [2] Firefox defaults: https://searchfox.org/mozilla-release/source/modules/libpref/init/StaticPrefList.yaml
// Then apply an example from Smoothfox
// [3] https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js
// Enter your scrolling overrides below this line:
/****************************************************************************
* END: BETTERFOX *
****************************************************************************/