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 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
yokoffing 09dd87a3ab v132-133 (#350) 2024-12-09 14:25:38 -05:00
Cat d70e3cdebe Updated install.py _get_default_profile_folder (#346) 2024-12-09 14:21:25 -05:00
Cat 429abb61f5 Added installer.py (#318) 2024-11-08 15:40:11 -05:00
yokoffing 80261756ca v131 (#328) 2024-11-01 18:02:48 -04:00
yokoffing ab5ede0fef v130 (#321) 2024-09-26 14:43:48 -04:00
yokoffing d07af83ee0 Sanitizer 2024-09-24 15:21:09 -04:00
11 changed files with 711 additions and 314 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
+26 -31
View File
@@ -3,7 +3,7 @@
* Fastfox * * Fastfox *
* "Non ducor duco" * * "Non ducor duco" *
* priority: speedy browsing * * priority: speedy browsing *
* version: 129 * * version: 137 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
***************************************************************************************/ ***************************************************************************************/
@@ -45,8 +45,8 @@
// to impact page load performance. // to impact page load performance.
// [EXAMPLE] 100000 = .10s = 100 reflows/second // [EXAMPLE] 100000 = .10s = 100 reflows/second
// [1] https://searchfox.org/mozilla-central/rev/c1180ea13e73eb985a49b15c0d90e977a1aa919c/modules/libpref/init/StaticPrefList.yaml#1824-1834 // [1] https://searchfox.org/mozilla-central/rev/c1180ea13e73eb985a49b15c0d90e977a1aa919c/modules/libpref/init/StaticPrefList.yaml#1824-1834
// [2] https://dev.opera.com/articles/efficient-javascript/?page=3#reflow // [2] https://web.archive.org/web/20240115073722/https://dev.opera.com/articles/efficient-javascript/?page=3#reflow
// [3] https://dev.opera.com/articles/efficient-javascript/?page=3#smoothspeed // [3] https://web.archive.org/web/20240115073722/https://dev.opera.com/articles/efficient-javascript/?page=3#smoothspeed
user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s) user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
// PREF: new tab preload // PREF: new tab preload
@@ -99,15 +99,17 @@ user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
//user_pref("gfx.webrender.software.opengl", true); // LINUX //user_pref("gfx.webrender.software.opengl", true); // LINUX
// PREF: GPU-accelerated Canvas2D // PREF: GPU-accelerated Canvas2D
// Use gpu-canvas instead of to skia-canvas. // Uses Accelerated Canvas2D for hardware acceleration of Canvas2D.
// This provides a consistent acceleration architecture across all platforms
// by utilizing WebGL instead of relying upon Direct2D.
// [WARNING] May cause issues on some Windows machines using integrated GPUs [2] [3] // [WARNING] May cause issues on some Windows machines using integrated GPUs [2] [3]
// Add to your overrides if you have a dedicated GPU. // Add to your overrides if you have a dedicated GPU.
// [NOTE] Higher values will use more memory. // [NOTE] Higher values will use more memory.
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1741501 // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1741501
// [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 macOS LINUX [FF110]; not compatible with WINDOWS integrated GPUs //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
@@ -142,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); // DEFAULT 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
@@ -208,8 +210,9 @@ user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
//user_pref("browser.cache.disk.max_priority_chunks_memory_usage", 40960); // DEFAULT (40 MB) //user_pref("browser.cache.disk.max_priority_chunks_memory_usage", 40960); // DEFAULT (40 MB)
// PREF: how often to validate document in cache // PREF: how often to validate document in cache
// [1] https://searchfox.org/mozilla-release/source/modules/libpref/init/StaticPrefList.yaml#1092-1096
// 0 = once-per-session // 0 = once-per-session
// 1 = each-time
// 2 = never
// 3 = when-appropriate/automatically (default) // 3 = when-appropriate/automatically (default)
//user_pref("browser.cache.check_doc_frequency", 3); // DEFAULT //user_pref("browser.cache.check_doc_frequency", 3); // DEFAULT
@@ -228,7 +231,7 @@ user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
// 0 = do not compress (default) // 0 = do not compress (default)
// 1 = minimal compression // 1 = minimal compression
// 9 = maximal compression // 9 = maximal compression
user_pref("browser.cache.jsbc_compression_level", 3); //user_pref("browser.cache.jsbc_compression_level", 3);
// PREF: strategy to use for when the bytecode should be encoded and saved [TESTING ONLY] // PREF: strategy to use for when the bytecode should be encoded and saved [TESTING ONLY]
// -1 makes page load times marginally longer when a page is being loaded for the first time, while // -1 makes page load times marginally longer when a page is being loaded for the first time, while
@@ -281,6 +284,8 @@ user_pref("browser.cache.jsbc_compression_level", 3);
// [1] https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/StaticPrefList.yaml#l9652 // [1] https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/StaticPrefList.yaml#l9652
// [2] https://github.com/arkenfox/user.js/pull/941 // [2] https://github.com/arkenfox/user.js/pull/941
user_pref("media.memory_cache_max_size", 65536); // default=8192; AF=65536; alt=131072 user_pref("media.memory_cache_max_size", 65536); // default=8192; AF=65536; alt=131072
// PREF: media cache combine sizes
//user_pref("media.memory_caches_combined_limit_kb", 524288); // DEFAULT; alt=1048576 //user_pref("media.memory_caches_combined_limit_kb", 524288); // DEFAULT; alt=1048576
//user_pref("media.memory_caches_combined_limit_pc_sysmem", 5); // DEFAULT; alt=10; the percentage of system memory that Firefox can use for media caches //user_pref("media.memory_caches_combined_limit_pc_sysmem", 5); // DEFAULT; alt=10; the percentage of system memory that Firefox can use for media caches
@@ -318,13 +323,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
@@ -533,28 +539,17 @@ user_pref("network.predictor.enabled", false);
// PREF: CSS Masonry Layout [NIGHTLY] // PREF: CSS Masonry Layout [NIGHTLY]
// [1] https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Masonry_Layout // [1] https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Masonry_Layout
// [2] https://www.smashingmagazine.com/native-css-masonry-layout-css-grid/
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/
user_pref("dom.enable_web_task_scheduling", true); // [3] https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91
// [4] https://github.com/WICG/scheduling-apis/blob/main/explainers/prioritized-post-task.md
// PREF: HTML Sanitizer API [NIGHTLY] // [5] https://wicg.github.io/scheduling-apis/
// [1] https://developer.mozilla.org/en-US/docs/Web/API/Sanitizer // [6] https://caniuse.com/mdn-api_taskcontroller
// [2] https://caniuse.com/mdn-api_sanitizer //user_pref("dom.enable_web_task_scheduling", true);
user_pref("dom.security.sanitizer.enabled", true);
// PREF: WebGPU [HIGHLY EXPERIMENTAL!]
// [WARNING] Do not enable unless you are a web developer!
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1746245
// [2] https://developer.chrome.com/docs/web-platform/webgpu/
// [3] https://github.com/gpuweb/gpuweb/wiki/Implementation-Status
// [4] https://hacks.mozilla.org/2020/04/experimental-webgpu-in-firefox/
//user_pref("dom.webgpu.enabled", true);
//user_pref("gfx.webgpu.force-enabled", true); // enforce
// enable WebGPU indirect draws/dispatches:
//user_pref("dom.webgpu.indirect-dispatch.enabled", true);
/**************************************************************************** /****************************************************************************
* SECTION: TAB UNLOAD * * SECTION: TAB UNLOAD *
+29 -31
View File
@@ -3,7 +3,7 @@
* Peskyfox * * Peskyfox *
* "Aquila non capit muscas" * * "Aquila non capit muscas" *
* priority: remove annoyances * * priority: remove annoyances *
* version: 129 * * version: 137 *
* 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 *
@@ -65,15 +65,13 @@ user_pref("browser.aboutwelcome.enabled", false); // disable Intro screens
// PREF: disable "What's New" toolbar icon [FF69+] // PREF: disable "What's New" toolbar icon [FF69+]
//user_pref("browser.messaging-system.whatsNewPanel.enabled", false); //user_pref("browser.messaging-system.whatsNewPanel.enabled", false);
// PREF: only show List All Tabs icon when needed
// true=always show tab overflow dropdown (FF106+ default)
// false=only display tab dropdown when there are too many tabs
// [1] https://www.ghacks.net/2022/10/19/how-to-hide-firefoxs-list-all-tabs-icon/
user_pref("browser.tabs.tabmanager.enabled", false);
// PREF: new profile switcher // PREF: new profile switcher
user_pref("browser.profiles.enabled", true); user_pref("browser.profiles.enabled", true);
// PREF: use native title bar buttons [LINUX]
// [1] https://github.com/yokoffing/Betterfox/issues/320
//user_pref("widget.gtk.non-native-titlebar-buttons.enabled", true);
/**************************************************************************** /****************************************************************************
* SECTION: THEME ADJUSTMENTS * * SECTION: THEME ADJUSTMENTS *
****************************************************************************/ ****************************************************************************/
@@ -84,12 +82,6 @@ user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
// PREF: add compact mode back to options // PREF: add compact mode back to options
user_pref("browser.compactmode.show", true); user_pref("browser.compactmode.show", true);
// PREF: remove focus indicator for links
// [1] https://www.askvg.com/firefox-tip-restore-classic-dotted-outline-focus-indicator-for-links/
user_pref("browser.display.focus_ring_on_anything", true);
user_pref("browser.display.focus_ring_style", 0);
user_pref("browser.display.focus_ring_width", 0);
// PREF: preferred color scheme for websites // PREF: preferred color scheme for websites
// [SETTING] General>Language and Appearance>Website appearance // [SETTING] General>Language and Appearance>Website appearance
// By default, color scheme matches the theme of your browser toolbar (3). // By default, color scheme matches the theme of your browser toolbar (3).
@@ -110,23 +102,26 @@ user_pref("browser.privateWindowSeparation.enabled", false);
//user_pref("browser.search.widget.inNavBar", true); //user_pref("browser.search.widget.inNavBar", true);
// PREF: new tab page wallpapers // PREF: new tab page wallpapers
user_pref("browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled", true); //user_pref("browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled", true); // [DEFAULT FF132+]
/**************************************************************************** /****************************************************************************
* SECTION: COOKIE BANNER HANDLING * * SECTION: COOKIE BANNER HANDLING *
****************************************************************************/ ****************************************************************************/
// 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.
@@ -173,8 +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.cleartype_params.force_gdi_classic_max_size", 6);
//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);
@@ -200,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
@@ -213,12 +207,18 @@ user_pref("browser.urlbar.trending.featureGate", false);
// PREF: disable urlbar suggestions // PREF: disable urlbar suggestions
//user_pref("browser.urlbar.addons.featureGate", false); // [FF115+] //user_pref("browser.urlbar.addons.featureGate", false); // [FF115+]
//user_pref("browser.urlbar.fakespot.featureGate", false); // [FF130+] [DEFAULT: false]
//user_pref("browser.urlbar.mdn.featureGate", false); // [FF117+] [HIDDEN PREF] //user_pref("browser.urlbar.mdn.featureGate", false); // [FF117+] [HIDDEN PREF]
//user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false] //user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false]
//user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false] //user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false]
//user_pref("browser.urlbar.clipboard.featureGate", false); // [FF118+] [DEFAULT: true FF125+] //user_pref("browser.urlbar.clipboard.featureGate", false); // [FF118+] [DEFAULT: true FF125+]
//user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false] //user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false]
// PREF: disable recent searches [FF120+]
// [NOTE] Recent searches are cleared with history.
// [1] https://support.mozilla.org/kb/search-suggestions-firefox
//user_pref("browser.urlbar.recentsearches.featureGate", false);
// PREF: disable tab-to-search [FF85+] // PREF: disable tab-to-search [FF85+]
// Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search // Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search
// [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines // [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines
@@ -237,11 +237,12 @@ 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
// [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
//user_pref("dom.text_fragments.enabled", true); //user_pref("dom.text_fragments.enabled", true); // [DEFAULT]
user_pref("dom.text_fragments.create_text_fragment.enabled", true);
/**************************************************************************** /****************************************************************************
* SECTION: AUTOPLAY * * SECTION: AUTOPLAY *
@@ -288,12 +289,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 [FF128+ NIGHTLY] //user_pref("browser.newtabpage.activity-stream.showWeather", false); // Weather [FF130+]
//user_pref("browser.newtabpage.activity-stream.system.showWeather", false); // Weather [FF128+ NIGHTLY] //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);
@@ -306,7 +307,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/
@@ -590,9 +591,6 @@ user_pref("layout.word_select.eat_space_to_next_word", false);
//user_pref("mousewheel.with_control.action", 3); //user_pref("mousewheel.with_control.action", 3);
//user_pref("mousewheel.with_meta.action", 3); //user_pref("mousewheel.with_meta.action", 3);
// PREF: hide image placeholders
//user_pref("browser.display.show_image_placeholders", false);
// PREF: adjust the minimum tab width // PREF: adjust the minimum tab width
// Can be overridden by userChrome.css // Can be overridden by userChrome.css
//user_pref("browser.tabs.tabMinWidth", 120); // default=76 //user_pref("browser.tabs.tabMinWidth", 120); // default=76
@@ -626,7 +624,7 @@ user_pref("layout.word_select.eat_space_to_next_word", false);
// PREF: JPEG XL image format [NIGHTLY] // PREF: JPEG XL image format [NIGHTLY]
// May not affect anything on ESR/Stable channel [2]. // May not affect anything on ESR/Stable channel [2].
// [TEST] https://jpegxl.io/tutorials/firefox/#firefoxjpegxltutorial // [TEST] https://www.jpegxl.io/firefox#firefox-jpegxl-tutorial
// [1] https://cloudinary.com/blog/the-case-for-jpeg-xl // [1] https://cloudinary.com/blog/the-case-for-jpeg-xl
// [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1539075#c51 // [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1539075#c51
//user_pref("image.jxl.enabled", true); //user_pref("image.jxl.enabled", true);
+13 -18
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://web.archive.org/web/20231108092752if_/https://pmctraining.com/site/wp-content/uploads/2018/04/Law-of-Diminishing-Returns-CHART.png) 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,7 +45,7 @@ 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/en-US/docs/releases/G6.0/) | [files](https://github.com/WaterfoxCo/Waterfox/tree/current/waterfox/browser/app/profile) (Sep 2023)
@@ -63,6 +54,8 @@ The `user.js` — a configuration file that controls Firefox settings — is cur
* [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)
* [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)
* [Español] [Optimize and Accelerate Firefox](https://www.youtube.com/watch?v=3XtoONmq5_Q) (Nov 2022) * [Español] [Optimize and Accelerate Firefox](https://www.youtube.com/watch?v=3XtoONmq5_Q) (Nov 2022)
@@ -73,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)
@@ -106,6 +100,7 @@ If you like the project, leave a :star: (top right) and become a [stargazer](htt
## Credit ## Credit
* Betterfox mirrors the ongoing work provided by [arkenfox](https://github.com/arkenfox/user.js). Additionally, this repository includes content reproduced or adapted from other sources. Credit for overlapping material goes to the original authors. * Betterfox mirrors the ongoing work provided by [arkenfox](https://github.com/arkenfox/user.js). Additionally, this repository includes content reproduced or adapted from other sources. Credit for overlapping material goes to the original authors.
* Appreciation goes to the [Firefox](https://www.mozilla.org/en-US/firefox/new/) team and developers working on [Bugzilla](https://bugzilla.mozilla.org/home), fighting for the open web. * Appreciation goes to the [Firefox](https://www.mozilla.org/en-US/firefox/new/) team and developers working on [Bugzilla](https://bugzilla.mozilla.org/home), fighting for the open web.
* Thanks to [Denperidge](https://github.com/Denperidge) for adding [`install.py`](https://github.com/yokoffing/Betterfox/blob/main/install.py) for advanced users in v.131.
* A special thanks to [Alex Kontos](https://github.com/MrAlex94) of [Waterfox](https://github.com/WaterfoxCo/Waterfox) for his collaboration in v.116. * A special thanks to [Alex Kontos](https://github.com/MrAlex94) of [Waterfox](https://github.com/WaterfoxCo/Waterfox) for his collaboration in v.116.
* Many thanks to the 2021 [Ghostery](https://github.com/ghostery) team for testing Betterfox at scale in its early days. * Many thanks to the 2021 [Ghostery](https://github.com/ghostery) team for testing Betterfox at scale in its early days.
+109 -124
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: 129 * * version: 137 *
* 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");
//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
@@ -38,6 +38,8 @@ user_pref("browser.contentblocking.category", "strict");
//user_pref("privacy.annotate_channels.strict_list.pbmode.enabled", true); // DEFAULT //user_pref("privacy.annotate_channels.strict_list.pbmode.enabled", true); // DEFAULT
//user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] enabled with "Strict" //user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+] enabled with "Strict"
//user_pref("privacy.fingerprintingProtection.pbmode", true); // DEFAULT //user_pref("privacy.fingerprintingProtection.pbmode", true); // DEFAULT
//user_pref("privacy.bounceTrackingProtection.mode", 1); // [FF131+] [ETP FF133+]
// [1] https://searchfox.org/mozilla-central/source/toolkit/components/antitracking/bouncetrackingprotection/nsIBounceTrackingProtection.idl#11-23
// PREF: query stripping // PREF: query stripping
// Currently uses a small list [1] // Currently uses a small list [1]
@@ -54,15 +56,27 @@ user_pref("browser.contentblocking.category", "strict");
//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); // enabled with "Strict"
// 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 //user_pref("urlclassifier.trackingSkipURLs", "embed.reddit.com, *.twitter.com, *.twimg.com"); // MANUAL [FF136+]
user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com"); // MANUAL //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
@@ -108,6 +122,7 @@ user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.
// [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/
//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
@@ -120,18 +135,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.
@@ -143,14 +152,6 @@ user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.
// [6] https://firefox-source-docs.mozilla.org/toolkit/components/antitracking/anti-tracking/cookie-purging/index.html // [6] https://firefox-source-docs.mozilla.org/toolkit/components/antitracking/anti-tracking/cookie-purging/index.html
//user_pref("privacy.purge_trackers.enabled", true); // DEFAULT //user_pref("privacy.purge_trackers.enabled", true); // DEFAULT
// PREF: Bounce Tracking Protection [FF127+]
// A new standardised variant of Cookie Purging that uses heuristics to detect bounce trackers,
// rather than relying on tracker lists.
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1895222
// [2] https://groups.google.com/a/mozilla.org/g/dev-platform/c/M6erM0SjPTM
//user_pref("privacy.bounceTrackingProtection.enabled", true);
//user_pref("privacy.bounceTrackingProtection.enableDryRunMode", false); // false enables tracker data purging
// PREF: SameSite Cookies // PREF: SameSite Cookies
// Currently, the absence of the SameSite attribute implies that cookies will be // Currently, the absence of the SameSite attribute implies that cookies will be
// attached to any request for a given origin, no matter who initiated that request. // attached to any request for a given origin, no matter who initiated that request.
@@ -167,7 +168,7 @@ user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.
// [8] https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies // [8] https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
// [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); //user_pref("network.cookie.sameSite.noneRequiresSecure", true); // [DEFAULT FF131+]
//user_pref("network.cookie.sameSite.schemeful", true); //user_pref("network.cookie.sameSite.schemeful", true);
// PREF: Hyperlink Auditing (click tracking) // PREF: Hyperlink Auditing (click tracking)
@@ -261,6 +262,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
@@ -272,7 +274,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)
@@ -302,9 +304,11 @@ user_pref("security.pki.crlite_mode", 2);
//user_pref("security.enterprise_roots.enabled", false); //user_pref("security.enterprise_roots.enabled", false);
//user_pref("security.certerrors.mitm.auto_enable_enterprise_roots", false); //user_pref("security.certerrors.mitm.auto_enable_enterprise_roots", false);
// PREF: disable content analysis by DLP (Data Loss Prevention) agents [FF124+] // PREF: disable content analysis by Data Loss Prevention (DLP) agents [FF124+]
// DLP agents are background processes on managed computers that allow enterprises to monitor locally running // DLP agents are background processes on managed computers that
// applications for data exfiltration events, which they can allow/block based on customer defined DLP policies. // allow enterprises to monitor locally running applications for
// data exfiltration events, which they can allow/block based on
// customer-defined DLP policies.
// [1] https://github.com/chromium/content_analysis_sdk // [1] https://github.com/chromium/content_analysis_sdk
// [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1880314 // [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1880314
//user_pref("browser.contentanalysis.enabled", false); // [FF121+] [DEFAULT] //user_pref("browser.contentanalysis.enabled", false); // [FF121+] [DEFAULT]
@@ -349,6 +353,12 @@ user_pref("browser.xul.error_pages.expert_bad_cert", true);
// [3] https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/ // [3] https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/
user_pref("security.tls.enable_0rtt_data", false); user_pref("security.tls.enable_0rtt_data", false);
// PREF: enable hybrid post-quantum key exchange
// [1] https://pq.cloudflareresearch.com
// [2] https://github.com/zen-browser/desktop/pull/2275
//user_pref("security.tls.enable_kyber", true);
//user_pref("network.http.http3.enable_kyber", true);
/**************************************************************************** /****************************************************************************
* SECTION: FINGERPRINT PROTECTION (FPP) * * SECTION: FINGERPRINT PROTECTION (FPP) *
****************************************************************************/ ****************************************************************************/
@@ -392,7 +402,7 @@ user_pref("security.tls.enable_0rtt_data", false);
* SECTION: DISK AVOIDANCE * * SECTION: DISK AVOIDANCE *
****************************************************************************/ ****************************************************************************/
// PREF: prevent media cache from writing to disk in Private Browsing // PREF: set media cache in Private Browsing to in-memory
// [NOTE] MSE (Media Source Extensions) are already stored in-memory in PB // [NOTE] MSE (Media Source Extensions) are already stored in-memory in PB
user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); user_pref("browser.privatebrowsing.forceMediaMemoryCache", true);
@@ -471,6 +481,9 @@ user_pref("browser.sessionstore.interval", 60000); // 1 minute; default=15000 (1
//user_pref("privacy.cpd.siteSettings", false); //user_pref("privacy.cpd.siteSettings", false);
//user_pref("privacy.clearHistory.siteSettings", false); //user_pref("privacy.clearHistory.siteSettings", false);
// PREF: purge session icon in Private Browsing windows
user_pref("browser.privatebrowsing.resetPBM.enabled", true);
/****************************************************************************** /******************************************************************************
* SECTION: SHUTDOWN & SANITIZING * * SECTION: SHUTDOWN & SANITIZING *
******************************************************************************/ ******************************************************************************/
@@ -551,8 +564,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.
@@ -580,13 +593,16 @@ user_pref("browser.urlbar.update2.engineAliasRefresh", true); // HIDDEN
// [SETTING] Search>Provide search suggestions > Show search suggestions in address bar result // [SETTING] Search>Provide search suggestions > Show search suggestions in address bar result
user_pref("browser.search.suggest.enabled", false); user_pref("browser.search.suggest.enabled", false);
//user_pref("browser.search.suggest.enabled.private", false); // DEFAULT //user_pref("browser.search.suggest.enabled.private", false); // DEFAULT
user_pref("browser.urlbar.suggest.searches", false);
// PREF: disable Show recent searches
// [SETTING] Search > Search Suggestions > Show recent searches
//user_pref("browser.urlbar.suggest.recentsearches", false);
// PREF: disable Firefox Suggest // PREF: disable Firefox Suggest
// [1] https://github.com/arkenfox/user.js/issues/1257 // [1] https://github.com/arkenfox/user.js/issues/1257
user_pref("browser.urlbar.quicksuggest.enabled", false); // controls whether the UI is shown user_pref("browser.urlbar.quicksuggest.enabled", false); // controls whether the UI is shown
user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+] //user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+]
user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+] //user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+]
// hide Firefox Suggest label in URL dropdown box // hide Firefox Suggest label in URL dropdown box
user_pref("browser.urlbar.groupLabels.enabled", false); user_pref("browser.urlbar.groupLabels.enabled", false);
@@ -644,7 +660,7 @@ 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+] //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+]
@@ -675,7 +691,7 @@ user_pref("dom.security.https_first", true); // [DEFAULT FF129+]
// PREF: offer suggestion for HTTPS site when available // PREF: offer suggestion for HTTPS site when available
// [1] https://x.com/leli_gibts_scho/status/1371463866606059528 // [1] https://x.com/leli_gibts_scho/status/1371463866606059528
user_pref("dom.security.https_only_mode_error_page_user_suggestions", true); //user_pref("dom.security.https_only_mode_error_page_user_suggestions", true);
// PREF: HTTP background requests in HTTPS-only Mode // PREF: HTTP background requests in HTTPS-only Mode
// When attempting to upgrade, if the server doesn't respond within 3 seconds[=default time], // When attempting to upgrade, if the server doesn't respond within 3 seconds[=default time],
@@ -824,7 +840,6 @@ user_pref("dom.security.https_only_mode_error_page_user_suggestions", true);
// [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
@@ -902,22 +917,6 @@ user_pref("editor.truncate_user_pastes", false);
* SECTION: MIXED CONTENT + CROSS-SITE * * SECTION: MIXED CONTENT + CROSS-SITE *
******************************************************************************/ ******************************************************************************/
// PREF: block insecure active content (scripts) on HTTPS pages
// [TEST] https://mixed-script.badssl.com/
// [1] https://trac.torproject.org/projects/tor/ticket/21323
//user_pref("security.mixed_content.block_active_content", true); // DEFAULT
// PREF: upgrade passive content to use HTTPS on secure pages
// Firefox will now automatically try to upgrade <img>, <audio>, and <video> elements
// from HTTP to HTTPS if they are embedded within an HTTPS page. If these
// mixed content elements do not support HTTPS, they will no longer load.
// [NOTE] Enterprise users may need to disable this setting [1].
// [1] https://blog.mozilla.org/security/2024/06/05/firefox-will-upgrade-more-mixed-content-in-version-127/
//user_pref("security.mixed_content.upgrade_display_content", true); // [DEFAULT FF127+]
//user_pref("security.mixed_content.upgrade_display_content.audio", true); // [DEFAULT FF119+]
//user_pref("security.mixed_content.upgrade_display_content.image", true); // [DEFAULT FF127+]
//user_pref("security.mixed_content.upgrade_display_content.video", true); // [DEFAULT FF119+]
// PREF: block insecure passive content (images) on HTTPS pages // PREF: block insecure passive content (images) on HTTPS pages
// [WARNING] This preference blocks all mixed content, including upgradable. // [WARNING] This preference blocks all mixed content, including upgradable.
// Firefox still attempts an HTTP connection if it can't find a secure one, // Firefox still attempts an HTTP connection if it can't find a secure one,
@@ -928,55 +927,56 @@ user_pref("editor.truncate_user_pastes", false);
// [1] https://blog.mozilla.org/security/2024/06/05/firefox-will-upgrade-more-mixed-content-in-version-127/ // [1] https://blog.mozilla.org/security/2024/06/05/firefox-will-upgrade-more-mixed-content-in-version-127/
user_pref("security.mixed_content.block_display_content", true); user_pref("security.mixed_content.block_display_content", true);
// PREF: block insecure downloads from secure sites
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1660952
//user_pref("dom.block_download_insecure", true); // DEFAULT
// PREF: allow PDFs to load javascript // PREF: allow PDFs to load javascript
// https://www.reddit.com/r/uBlockOrigin/comments/mulc86/firefox_88_now_supports_javascript_in_pdf_files/ // https://www.reddit.com/r/uBlockOrigin/comments/mulc86/firefox_88_now_supports_javascript_in_pdf_files/
user_pref("pdfjs.enableScripting", false); user_pref("pdfjs.enableScripting", false);
// PREF: limit allowed extension directories
// The pref value represents the sum: e.g. 5 would be profile and application directories.
// [WARNING] Breaks usage of files which are installed outside allowed directories.
// [1] https://archive.is/DYjAM
// 1=profile, 2=user, 4=application, 8=system, 16=temporary, 31=all
//user_pref("extensions.enabledScopes", 5); // [HIDDEN PREF] DEFAULT
// user_pref("extensions.autoDisableScopes", 15); // [DEFAULT: 15]
// PREF: disable bypassing 3rd party extension install prompts
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1659530,1681331
user_pref("extensions.postDownloadThirdPartyPrompt", false);
// PREF: disable middle click on new tab button opening URLs or searches using clipboard [FF115+] // PREF: disable middle click on new tab button opening URLs or searches using clipboard [FF115+]
// Enable if you're using LINUX. // Enable if you're using LINUX.
//user_pref("browser.tabs.searchclipboardfor.middleclick", false); // DEFAULT WINDOWS macOS //user_pref("browser.tabs.searchclipboardfor.middleclick", false); // DEFAULT WINDOWS macOS
// PREF: disable content analysis by Data Loss Prevention (DLP) agents
// DLP agents are background processes on managed computers that
// allow enterprises to monitor locally running applications for
// data exfiltration events, which they can allow/block based on
// customer-defined DLP policies.
// [1] https://github.com/chromium/content_analysis_sdk
//user_pref("browser.contentanalysis.default_allow", false); // [FF124+] [DEFAULT: false]
// PREF: enforce TLS 1.0 and 1.1 downgrades as session only
//user_pref("security.tls.version.enable-deprecated", false); // DEFAULT
// PREF: enable (limited but sufficient) window.opener protection
// Makes rel=noopener implicit for target=_blank in anchor and area elements when no rel attribute is set.
// [1] https://jakearchibald.com/2016/performance-benefits-of-rel-noopener/
//user_pref("dom.targetBlankNoOpener.enabled", true); // DEFAULT
// PREF: enable "window.name" protection
// If a new page from another domain is loaded into a tab, then window.name is set to an empty string. The original
// string is restored if the tab reverts back to the original page. This change prevents some cross-site attacks.
//user_pref("privacy.window.name.update.enabled", true); // DEFAULT
// PREF: disable automatic authentication on Microsoft sites [WINDOWS] // PREF: disable automatic authentication on Microsoft sites [WINDOWS]
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1695693,1719301 // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1695693,1719301
//user_pref("network.http.windows-sso.enabled", false); //user_pref("network.http.windows-sso.enabled", false);
/****************************************************************************
* SECTION: EXTENSIONS *
****************************************************************************/
// PREF: limit allowed extension directories
// 1=profile, 2=user, 4=application, 8=system, 16=temporary, 31=all
// The pref value represents the sum: e.g. 5 would be profile and application directories.
// [WARNING] Breaks usage of files which are installed outside allowed directories.
// [1] https://archive.is/DYjAM
user_pref("extensions.enabledScopes", 5); // [HIDDEN PREF]
//user_pref("extensions.autoDisableScopes", 15); // [DEFAULT: 15]
// PREF: skip 3rd party panel when installing recommended addons [FF82+]
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1659530,1681331
//user_pref("extensions.postDownloadThirdPartyPrompt", false);
// PREF: disable mozAddonManager Web API [FF57+]
// [NOTE] To allow extensions to work on AMO, you also need extensions.webextensions.restrictedDomains.
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988
//user_pref("privacy.resistFingerprinting.block_mozAddonManager", true);
// PREF: disable webextension restrictions on Mozilla domains [FF60+]
// [1] https://www.reddit.com/r/firefox/comments/n1lpaf/make_addons_work_on_mozilla_sites/gwdy235/?context=3
// [2] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988
//user_pref("extensions.webextensions.restrictedDomains", "");
// PREF: do not require signing for extensions [ESR/DEV/NIGHTLY ONLY]
// [1] https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox#w_what-are-my-options-if-i-want-to-use-an-unsigned-add-on-advanced-users
//user_pref("xpinstall.signatures.required", false);
// PREF: disable Quarantined Domains [FF115+]
// Users may see a notification when running add-ons that are not monitored by Mozilla when they visit certain sites.
// The notification informs them that “some extensions are not allowed” and were blocked from running on that site.
// There's no details as to which sites are affected.
// [1] https://support.mozilla.org/en-US/kb/quarantined-domains
// [2] https://www.ghacks.net/2023/07/04/firefox-115-new-esr-base-and-some-add-ons-may-be-blocked-from-running-on-certain-sites/
//user_pref("extensions.quarantinedDomains.enabled", false);
/****************************************************************************** /******************************************************************************
* SECTION: HEADERS / REFERERS * * SECTION: HEADERS / REFERERS *
******************************************************************************/ ******************************************************************************/
@@ -1047,7 +1047,7 @@ user_pref("privacy.userContext.ui.enabled", true);
// PREF: set behavior on "+ Tab" button to display container menu on left click [FF74+] // PREF: set behavior on "+ Tab" button to display container menu on left click [FF74+]
// [NOTE] The menu is always shown on long press and right click. // [NOTE] The menu is always shown on long press and right click.
// [SETTING] General>Tabs>Enable Container Tabs>Settings>Select a container for each new tab ***/ // [SETTING] General>Tabs>Enable Container Tabs>Settings>Select a container for each new tab
//user_pref("privacy.userContext.newTabContainerOnLeftClick.enabled", true); //user_pref("privacy.userContext.newTabContainerOnLeftClick.enabled", true);
// PREF: set external links to open in site-specific containers [FF123+] // PREF: set external links to open in site-specific containers [FF123+]
@@ -1073,13 +1073,14 @@ user_pref("privacy.userContext.ui.enabled", true);
//user_pref("privacy.webrtc.globalMuteToggles", true); //user_pref("privacy.webrtc.globalMuteToggles", true);
// PREF: force WebRTC inside the proxy [FF70+] // PREF: force WebRTC inside the proxy [FF70+]
user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); //user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
// PREF: force a single network interface for ICE candidates generation [FF42+] // PREF: force a single network interface for ICE candidates generation [FF42+]
// When using a system-wide proxy, it uses the proxy interface. // When using a system-wide proxy, it uses the proxy interface.
// [1] https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate // [1] https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate
// [2] https://wiki.mozilla.org/Media/WebRTC/Privacy // [2] https://wiki.mozilla.org/Media/WebRTC/Privacy
user_pref("media.peerconnection.ice.default_address_only", true); // [3] https://github.com/zen-browser/desktop/issues/972
//user_pref("media.peerconnection.ice.default_address_only", true);
// PREF: force exclusion of private IPs from ICE candidates [FF51+] // PREF: force exclusion of private IPs from ICE candidates [FF51+]
// [SETUP-HARDEN] This will protect your private IP even in TRUSTED scenarios after you // [SETUP-HARDEN] This will protect your private IP even in TRUSTED scenarios after you
@@ -1155,7 +1156,7 @@ user_pref("media.peerconnection.ice.default_address_only", true);
// [STATS] ~0.2% of websites, about half of which are for cryptomining / malvertising [2][3] // [STATS] ~0.2% of websites, about half of which are for cryptomining / malvertising [2][3]
// [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=wasm // [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=wasm
// [2] https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly // [2] https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly
// [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);
/****************************************************************************** /******************************************************************************
@@ -1274,10 +1275,13 @@ user_pref("permissions.default.desktop-notification", 2);
// 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]
@@ -1307,38 +1311,16 @@ user_pref("permissions.default.geo", 2);
//user_pref("extensions.update.enabled", false); //user_pref("extensions.update.enabled", false);
// PREF: disable search engine updates (e.g. OpenSearch) // PREF: disable search engine updates (e.g. OpenSearch)
// Prevent Firefox from adding back search engines after you removed them.
// [NOTE] This does not affect Mozilla's built-in or Web Extension search engines. // [NOTE] This does not affect Mozilla's built-in or Web Extension search engines.
//user_pref("browser.search.update", false); user_pref("browser.search.update", false);
// PREF: remove special permissions for certain mozilla domains // PREF: remove special permissions for certain mozilla domains [FF35+]
// default = resource://app/defaults/permissions // default = resource://app/defaults/permissions
//user_pref("permissions.manager.defaultsUrl", ""); user_pref("permissions.manager.defaultsUrl", "");
// PREF: remove webchannel whitelist // PREF: remove webchannel whitelist
user_pref("webchannel.allowObject.urlWhitelist", ""); //user_pref("webchannel.allowObject.urlWhitelist", ""); // [DEFAULT FF132+]
// PREF: disable mozAddonManager Web API [FF57+]
// [NOTE] To allow extensions to work on AMO, you also need extensions.webextensions.restrictedDomains.
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988
//user_pref("privacy.resistFingerprinting.block_mozAddonManager", true); // [HIDDEN PREF FF57-108]
// PREF: disable webextension restrictions on Mozilla domains
// [NOTE] May only work with PREF: privacy.resistfingerprinting enabled and/or DEV/NIGHTLY-only?
// [1] https://www.reddit.com/r/firefox/comments/n1lpaf/make_addons_work_on_mozilla_sites/gwdy235/?context=3
// [2] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1384330,1406795,1415644,1453988
//user_pref("extensions.webextensions.restrictedDomains", "");
// PREF: do not require signing for extensions [ESR/DEV/NIGHTLY ONLY]
// [1] https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox#w_what-are-my-options-if-i-want-to-use-an-unsigned-add-on-advanced-users
//user_pref("xpinstall.signatures.required", false);
// PREF: disable Quarantined Domains [FF115+]
// Users may see a notification when running add-ons that are not monitored by Mozilla when they visit certain sites.
// The notification informs them that “some extensions are not allowed” and were blocked from running on that site.
// There's no details as to which sites are affected.
// [1] https://support.mozilla.org/en-US/kb/quarantined-domains
// [2] https://www.ghacks.net/2023/07/04/firefox-115-new-esr-base-and-some-add-ons-may-be-blocked-from-running-on-certain-sites/
//user_pref("extensions.quarantinedDomains.enabled", false);
/****************************************************************************** /******************************************************************************
* SECTION: TELEMETRY * * SECTION: TELEMETRY *
@@ -1358,7 +1340,7 @@ user_pref("datareporting.healthreport.uploadEnabled", false);
// - If "unified" is true then "enabled" only controls whether to record extended data // - If "unified" is true then "enabled" only controls whether to record extended data
// [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2] // [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2]
// [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html // [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html
// [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/ // [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5
user_pref("toolkit.telemetry.unified", false); user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false); // see [NOTE] user_pref("toolkit.telemetry.enabled", false); // see [NOTE]
user_pref("toolkit.telemetry.server", "data:,"); user_pref("toolkit.telemetry.server", "data:,");
@@ -1380,6 +1362,10 @@ 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+]
// [NOTE] Already disabled by main telemetry switch
//user_pref("datareporting.usage.uploadEnabled", false);
/****************************************************************************** /******************************************************************************
* SECTION: EXPERIMENTS * * SECTION: EXPERIMENTS *
******************************************************************************/ ******************************************************************************/
@@ -1405,7 +1391,7 @@ user_pref("browser.tabs.crashReporting.sendReport", false);
// PREF: enforce no submission of backlogged crash reports // PREF: enforce no submission of backlogged crash reports
// [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports // [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); //user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT FF132+]
/****************************************************************************** /******************************************************************************
* SECTION: DETECTION * * SECTION: DETECTION *
@@ -1431,7 +1417,6 @@ user_pref("network.connectivity-service.enabled", false);
//user_pref("toolkit.telemetry.dap_helper", ""); // [OPTIONAL HARDENING] //user_pref("toolkit.telemetry.dap_helper", ""); // [OPTIONAL HARDENING]
//user_pref("toolkit.telemetry.dap_leader", ""); // [OPTIONAL HARDENING] //user_pref("toolkit.telemetry.dap_leader", ""); // [OPTIONAL HARDENING]
// PREF: software that continually reports what default browser you are using [WINDOWS] // PREF: software that continually reports what default browser you are using [WINDOWS]
// [WARNING] Breaks "Make Default..." button in Preferences to set Firefox as the default browser [2]. // [WARNING] Breaks "Make Default..." button in Preferences to set Firefox as the default browser [2].
// [1] https://techdows.com/2020/04/what-is-firefox-default-browser-agent-and-how-to-disable-it.html // [1] https://techdows.com/2020/04/what-is-firefox-default-browser-agent-and-how-to-disable-it.html
+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
+265
View File
@@ -0,0 +1,265 @@
from datetime import datetime
from os import name, getenv
from json import loads
from re import compile, IGNORECASE, sub
from pathlib import Path
from configparser import ConfigParser
from argparse import ArgumentParser
from shutil import copytree, ignore_patterns
from urllib.request import urlopen
from subprocess import check_output
from io import BytesIO
from zipfile import ZipFile
"""
install(-betterfox).py
Usage:
python install.py
When called without arguments, it will:
- Backup your current firefox profile
- Automatically download user.js from the latest Betterfox release compatible with your Firefox version into the profile
- Apply user-overrides in the same directory
However, you can check out install.py/betterfox-install.exe --help to customise most behaviours!
Limitations:
- When using a different repositoy as a source, that repository needs to use the same releases workflow
- Over time, the get_releases might not list older releases due to limited page size. This can be expanded down the road, though
Building into an exe (on Windows):
- pipx install pyinstaller (note: you can try without pipx, but this didn't work for me)
- Run:
- CMD: `pyinstaller --onefile --name install-betterfox install.py && move %cd%\\dist\\install-betterfox.exe %cd% && del install-betterfox.spec && rmdir /S /Q build && rmdir dist`
- BASH: `pyinstaller --onefile --name install-betterfox install.py && && mv dist/install-betterfox.exe . && rm install-betterfox.spec && rm -rf ./build/ && rmdir dist`
(Sorry, didn't want to add a .gitignore solely for the install script)
- Done!
If there's any problems with the script, feel free to mention @Denperidge on GitHub!
"""
re_find_version = compile(r"mozilla.org/.*?/firefox/(?P<version>[\d.]*?)/", IGNORECASE)
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()
DEFAULT_FIREFOX_INSTALL = Path("C:/Program Files/Mozilla Firefox/" if name == "nt" else "")
selected_if_backup = None
selected_config = ""
userjs_path = None
def _get_firefox_version(bin="firefox"):
try:
ver_string = check_output([bin, "--version"], encoding="UTF-8")
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():
config_path = FIREFOX_ROOT.joinpath("profiles.ini")
print(f"Reading {config_path}...")
config_parser = ConfigParser(strict=False)
config_parser.read(config_path)
path = None
for section in config_parser.sections():
if "Default" in config_parser[section]:
section_default_value = config_parser[section]["Default"]
if section_default_value:
print("Default detected from section: " + section)
# Confirm whether a 0 value is possible, keep fallback until then
if section_default_value == "0":
continue
if section_default_value == "1":
path = config_parser[section]["Path"]
else:
path = section_default_value
break
if path is not None:
return FIREFOX_ROOT.joinpath(path)
else:
raise Exception("Could not determine default Firefox profile! Exiting...")
def _get_releases(repository_owner, repository_name):
releases = []
raw_releases = loads(urlopen(f"https://api.github.com/repos/{repository_owner}/{repository_name}/releases").read())
for raw_release in raw_releases:
name = raw_release["name"] or raw_release["tag_name"] # or fixes 126.0 not being lodaded
body = raw_release["body"]
# Find which firefox releases are supported. Manual overrides for ones that don't have it written in their thing!
if name == "user.js v.122.1":
supported = ["107.0", "107.1", "108.0", "108.0.1", "108.0.2", "109.0", "109.0", "110.1", "110.0.1", "111.0", "111.0.1", "112.0", "112.0.1", "112.0.2", "113.0", "113.0.1", "113.0.2", "114.0", "114.0.1", "114.0.2", "115.0", "115.0.1", "115.0.2", "115.0.3", "115.1.0", "115.10.0", "115.11.0", "115.12.0", "115.13.0", "115.14.0", "115.15.0", "115.16.0", "115.16.1", "115.17.0", "115.2.0", "115.2.1", "115.3.0", "115.3.1", "115.4.0", "115.5.0", "115.6.0", "115.7.0", "115.8.0", "115.9.0", "115.9.1", "116.0", "116.0.1", "116.0.2", "116.0.3", "117.0", "117.0.1", "118.0", "118.0.1", "118.0.2", "119.0", "119.0.1", "120.0", "120.0.1", "121.0", "121.0.1", "122.0", "122.0.1"]
elif name == "user.js 116.1":
supported = ["116.0", "116.0.1", "116.0.2", "116.0.3"]
elif name == "Betterfox v.107":
supported = ["107.0"]
elif "firefox release" in body.lower():
trim_body = body.lower()[body.lower().index("firefox release"):]
supported = re_find_version.findall(trim_body)
if len(supported) == 0:
print(f"Could not parse release in '{name}'. Please post this error message on https://github.com/{repository_owner}/{repository_name}/issues")
continue
else:
print(f"Could not find firefox release header '{name}'. Please post this error message on https://github.com/{repository_owner}/{repository_name}/issues")
continue
releases.append({
"name": name,
"url": raw_release["zipball_url"],
"supported": supported,
})
return releases
def _get_latest_compatible_release(releases):
for release in releases:
if firefox_version in release["supported"]:
return release
return None
def _get_firefox_version(bin="firefox"):
try:
ver_string = check_output([bin, "--version"], encoding="UTF-8")
return ver_string[ver_string.rindex(" ")+1:].strip()
except FileNotFoundError:
default_path = str(DEFAULT_FIREFOX_INSTALL.joinpath("firefox"))
if bin != default_path: # Avoid infinite recursion
return _get_firefox_version(default_path)
else:
raise Exception("Firefox binary not found. Please ensure Firefox is installed and the path is correct.")
def backup_profile(src):
dest = f"{src}-backup-{datetime.today().strftime('%Y-%m-%d-%H-%M-%S')}"
copytree(src, dest, ignore=ignore_patterns("*lock"))
print("Backed up profile to " + dest)
def download_betterfox(url):
data = BytesIO()
data.write(urlopen(url).read())
return data
def extract_betterfox(data, profile_folder):
zipfile = ZipFile(data)
userjs_zipinfo = None
for file in zipfile.filelist:
if file.filename.endswith("user.js"):
userjs_zipinfo = file
userjs_zipinfo.filename = Path(userjs_zipinfo.filename).name
if not userjs_zipinfo:
raise BaseException("Could not find user.js!")
return zipfile.extract(userjs_zipinfo, profile_folder)
def list_releases(releases, only_supported=False, add_index=False):
print()
print(f"Listing {'compatible' if only_supported else 'all'} Betterfox releases:")
if only_supported:
print("Use --list-all to view all available releases")
else:
print(f"Releases marked with '> ' are documented to be compatible with your Firefox version ({firefox_version})")
print()
i = 0
for release in releases:
supported = firefox_version in release["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'])}")
i+=1
if __name__ == "__main__":
firefox_version = _get_firefox_version()
selected_release = None
default_profile_folder = _get_default_profile_folder()
argparser = ArgumentParser(
)
argparser.add_argument("--overrides", "-o", default=default_profile_folder.joinpath("user-overrides.js"), help="if the provided file exists, add overrides to user.js. Defaults to " + str(default_profile_folder.joinpath("user-overrides.js"))),
advanced = argparser.add_argument_group("Advanced")
advanced.add_argument("--betterfox-version", "-bv", default=None, help=f"Which version of Betterfox to install. Defaults to the latest compatible release for your installed Firefox version")
advanced.add_argument("--profile-dir", "-p", "-pd", default=default_profile_folder, help=f"Which profile dir to install user.js in. Defaults to {default_profile_folder}")
advanced.add_argument("--repository-owner", "-ro", default="yokoffing", help="owner of the Betterfox repository. Defaults to yokoffing")
advanced.add_argument("--repository-name", "-rn", default="Betterfox", help="name of the Betterfox repository. Defaults to Betterfox")
disable = argparser.add_argument_group("Disable functionality")
disable.add_argument("--no-backup", "-nb", action="store_true", default=False, help="disable backup of current profile (not recommended)"),
disable.add_argument("--no-install", "-ni", action="store_true", default=False, help="don't install Betterfox"),
modes = argparser.add_mutually_exclusive_group()
modes.add_argument("--list", action="store_true", default=False, help=f"List all Betterfox releases compatible with your version of Firefox ({firefox_version})")
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")
args = argparser.parse_args()
releases = _get_releases(args.repository_owner, args.repository_name)
if args.list or args.list_all:
list_releases(releases, args.list)
input("Press ENTER to exit...")
exit()
if not args.no_backup:
backup_profile(args.profile_dir)
if args.betterfox_version:
# If not None AND not string, default value has been used
if not isinstance(args.betterfox_version, str):
selected_release = args.betterfox_version
print(f"Using latest compatible Betterfox version ({selected_release['name']})...")
# If string has been passed
else:
selected_release = next(rel for rel in releases if rel['name'] == args.betterfox_version)
print(f"Using manually selected Betterfox version ({selected_release['name']})")
if not args.betterfox_version:
selected_release = _get_latest_compatible_release(releases)
if args.interactive or not selected_release:
if not selected_release:
print("Could not find a compatible Betterfox version for your Firefox installation.")
list_releases(releases, False, True)
selection = int(input(f"Select Betterfox version, or press enter without typing a number to cancel [0-{len(releases) - 1}]: "))
selected_release = releases[selection]
if not args.no_install:
userjs_path = extract_betterfox(
download_betterfox(selected_release["url"]),
args.profile_dir
)
print(f"Installed user.js to {userjs_path} !")
if Path(args.overrides).exists():
print("Found overrides at " + str(args.overrides))
with open(str(args.overrides), "r", encoding="utf-8") as overrides_file:
overrides = overrides_file.read()
with open(userjs_path, "r", encoding="utf-8") as userjs_file:
old_content = userjs_file.read()
new_content = sub(re_find_overrides, "\n" + overrides + "\n", old_content, count=1, flags=IGNORECASE)
with open(userjs_path, "w", encoding="utf-8") as userjs_file:
userjs_file.write(new_content)
else:
print(f"Found no overrides in {args.overrides}")
input("Press ENTER to exit...")
+17 -29
View File
@@ -20,25 +20,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.sessionhistory.max_total_viewers", 4); // only remember # of pages in Back-Forward cache
user_pref("browser.cache.disk.enable", false); // disable disk cache
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
user_pref("network.buffer.cache.size", 262144); // default=32768; [WARNING] Cannot open HTML files bigger than 4 MB if changed
user_pref("network.buffer.cache.count", 128); // default=24; use bigger packets
/** 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
user_pref("browser.urlbar.suggest.recentsearches", false); // unselect "Show recent searches" for clean UI
user_pref("browser.urlbar.showSearchSuggestionsFirst", false); // unselect "Show search suggestions ahead of browsing history in address bar results" for clean UI user_pref("browser.urlbar.showSearchSuggestionsFirst", false); // unselect "Show search suggestions ahead of browsing history in address bar results" for clean UI
//user_pref("browser.urlbar.suggest.trending", false); // FF119+ disable showing trending searches; unselect for clean UI
//user_pref("browser.urlbar.groupLabels.enabled", false); // hide Firefox Suggest label in URL dropdown box //user_pref("browser.urlbar.groupLabels.enabled", false); // hide Firefox Suggest label in URL dropdown box
user_pref("signon.management.page.breach-alerts.enabled", false); // extra hardening user_pref("signon.management.page.breach-alerts.enabled", false); // extra hardening
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
@@ -53,8 +47,6 @@ 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
/** 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
@@ -77,13 +69,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
@@ -94,44 +86,46 @@ user_pref("reader.parse-on-load.enabled", false); // disable reader mode
user_pref("privacy.userContext.enabled", false); // disable Containers functionality user_pref("privacy.userContext.enabled", false); // disable Containers functionality
user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // true by default on NIGHTLY user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // true by default on NIGHTLY
//user_pref("xpinstall.signatures.required", false); // [ESR/DEV/NIGHTLY] //user_pref("xpinstall.signatures.required", false); // [ESR/DEV/NIGHTLY]
//user_pref("browser.urlbar.suggest.trending", false); // FF119+ disable showing trending searches; unselect for clean UI
//user_pref("browser.urlbar.suggest.quickactions", false); // Quick actions; hide URL bar dropdown suggestions //user_pref("browser.urlbar.suggest.quickactions", false); // Quick actions; hide URL bar dropdown suggestions
//user_pref("browser.urlbar.suggest.clipboard", false); // Clipboard; hide URL bar dropdown suggestions //user_pref("browser.urlbar.suggest.clipboard", false); // Clipboard; hide URL bar dropdown suggestions
/** 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
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", "");
user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_max_size", 6);
user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false);
//user_pref("gfx.font_rendering.cleartype_params.gamma", 898); // 1000-2200; https://www.reddit.com/r/firefox/comments/10ed7o2/comment/j4qar9y/ //user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
//user_pref("font.name.serif.x-western", "Roboto Slab"); // serif font //user_pref("font.name.serif.x-western", "Roboto Slab"); // serif font
//user_pref("font.name.sans-serif.x-western", "Roboto"); // sans-serif font //user_pref("font.name.sans-serif.x-western", "Roboto"); // sans-serif font
//user_pref("font.name.monospace.x-western", "Fira Code"); // monospace font //user_pref("font.name.monospace.x-western", "Fira Code"); // monospace font
/** DELETE IF NOT ENTERPRISE WINDOWS LAPTOP ***/ /** DELETE IF NOT ENTERPRISE WINDOWS LAPTOP ***/
//user_pref("network.trr.mode", 3); // enable TRR (without System fallback) user_pref("urlclassifier.trackingSkipURLs", ""); // do not allow embedded tweets, Instagram, Reddit, and Tiktok posts
user_pref("urlclassifier.features.socialtracking.skipURLs", ""); // do not allow embedded tweets, Instagram, Reddit, and Tiktok posts
user_pref("browser.search.suggest.enabled", true); // search suggestions
user_pref("browser.urlbar.showSearchSuggestionsFirst", true); // Show search suggestions ahead of browsing history in address bar results
//user_pref("network.connectivity-service.enabled", true); // public wifi
//user_pref("network.trr.confirmationNS", "example.com"); // TRR confirmation request
//user_pref("network.trr.mode", 2); // enable TRR (without System fallback)
//user_pref("browser.startup.preXulSkeletonUI", false); // WINDOWS //user_pref("browser.startup.preXulSkeletonUI", false); // WINDOWS
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", "");
user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_max_size", 6);
user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false);
user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", false); // no need for userChrome user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", false); // no need for userChrome
user_pref("browser.urlbar.suggest.history", true); // Browsing history //user_pref("browser.urlbar.suggest.history", true); // Browsing history
user_pref("browser.urlbar.suggest.bookmark", true); // Bookmarks //user_pref("browser.urlbar.suggest.bookmark", true); // Bookmarks
//user_pref("browser.urlbar.suggest.openpage", true); // Open tabs //user_pref("browser.urlbar.suggest.openpage", true); // Open tabs
//user_pref("browser.urlbar.suggest.topsites", true); // Shortcuts //user_pref("browser.urlbar.suggest.topsites", true); // Shortcuts
//user_pref("browser.download.folderList", 1); // 0=desktop, 1=downloads, 2=last used
//user_pref("browser.download.useDownloadDir", false); // ask where to download
/** DELETE IF NOT macOS LAPTOP ***/ /** DELETE IF NOT macOS LAPTOP ***/
//user_pref("browser.download.folderList", 1); // 0=desktop, 1=downloads, 2=last used
user_pref("network.trr.mode", 2); // enable TRR (with System fallback) user_pref("network.trr.mode", 2); // enable TRR (with System fallback)
user_pref("network.trr.max-fails", 5); // lower max attempts to use DoH user_pref("network.trr.max-fails", 5); // lower max attempts to use DoH
user_pref("geo.provider.use_corelocation", false); // geolocation [MAC] user_pref("geo.provider.use_corelocation", false); // geolocation [MAC]
@@ -140,12 +134,6 @@ user_pref("app.update.auto", false); // disable auto-installing Firefox updates
//user_pref("font.name.monospace.x-western", "SF Mono"); // monospace font //user_pref("font.name.monospace.x-western", "SF Mono"); // monospace font
/** DELETE IF NOT LINUX LAPTOP ***/ /** DELETE IF NOT LINUX LAPTOP ***/
//user_pref("browser.download.folderList", 1); // 0=desktop, 1=downloads, 2=last used
//user_pref(layers.acceleration.force-enable", true); // needed in 2024?
//user_pref("gfx.webrender.software.opengl", true); // needed?
user_pref("browser.low_commit_space_threshold_mb", 13107); // determine when tabs unload
user_pref("browser.low_commit_space_threshold_percent", 20); // determine when tabs unload (percentage)
//user_pref("middlemouse.contentLoadURL", false); // disable middle mouse click opening links from clipboard
user_pref("network.trr.mode", 2); // enable TRR (with System fallback) user_pref("network.trr.mode", 2); // enable TRR (with System fallback)
user_pref("network.trr.max-fails", 5); // lower max attempts to use DoH user_pref("network.trr.max-fails", 5); // lower max attempts to use DoH
user_pref("geo.provider.use_geoclue", false); // [LINUX] user_pref("geo.provider.use_geoclue", false); // [LINUX]
+16 -36
View File
@@ -10,7 +10,7 @@
/**************************************************************************** /****************************************************************************
* Betterfox * * Betterfox *
* "Ad meliora" * * "Ad meliora" *
* version: 129 * * version: 137 *
* url: https://github.com/yokoffing/Betterfox * * url: https://github.com/yokoffing/Betterfox *
****************************************************************************/ ****************************************************************************/
@@ -21,12 +21,11 @@
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.jsbc_compression_level", 3); user_pref("browser.cache.disk.enable", false);
/** MEDIA CACHE ***/ /** MEDIA CACHE ***/
user_pref("media.memory_cache_max_size", 65536); user_pref("media.memory_cache_max_size", 65536);
@@ -53,17 +52,12 @@ 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);
user_pref("dom.security.sanitizer.enabled", 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("network.cookie.sameSite.noneRequiresSecure", true);
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);
@@ -71,7 +65,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 ***/
@@ -84,6 +77,7 @@ user_pref("browser.privatebrowsing.forceMediaMemoryCache", true);
user_pref("browser.sessionstore.interval", 60000); user_pref("browser.sessionstore.interval", 60000);
/** SHUTDOWN & SANITIZING ***/ /** SHUTDOWN & SANITIZING ***/
user_pref("browser.privatebrowsing.resetPBM.enabled", true);
user_pref("privacy.history.custom", true); user_pref("privacy.history.custom", true);
/** SEARCH / URL BAR ***/ /** SEARCH / URL BAR ***/
@@ -93,17 +87,10 @@ user_pref("browser.search.separatePrivateDefault.ui.enabled", true);
user_pref("browser.urlbar.update2.engineAliasRefresh", 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.suggest.quicksuggest.sponsored", false);
user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", 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);
@@ -113,7 +100,9 @@ user_pref("editor.truncate_user_pastes", false);
/** MIXED CONTENT + CROSS-SITE ***/ /** MIXED CONTENT + CROSS-SITE ***/
user_pref("security.mixed_content.block_display_content", true); user_pref("security.mixed_content.block_display_content", true);
user_pref("pdfjs.enableScripting", false); user_pref("pdfjs.enableScripting", false);
user_pref("extensions.postDownloadThirdPartyPrompt", false);
/** EXTENSIONS ***/
user_pref("extensions.enabledScopes", 5);
/** HEADERS / REFERERS ***/ /** HEADERS / REFERERS ***/
user_pref("network.http.referer.XOriginTrimmingPolicy", 2); user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
@@ -121,18 +110,15 @@ user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
/** CONTAINERS ***/ /** CONTAINERS ***/
user_pref("privacy.userContext.ui.enabled", true); user_pref("privacy.userContext.ui.enabled", true);
/** WEBRTC ***/
user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
user_pref("media.peerconnection.ice.default_address_only", true);
/** SAFE BROWSING ***/ /** SAFE BROWSING ***/
user_pref("browser.safebrowsing.downloads.remote.enabled", false); 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("permissions.manager.defaultsUrl", ""); user_pref("permissions.manager.defaultsUrl", "");
user_pref("webchannel.allowObject.urlWhitelist", "");
/** TELEMETRY ***/ /** TELEMETRY ***/
user_pref("datareporting.policy.dataSubmissionEnabled", false); user_pref("datareporting.policy.dataSubmissionEnabled", false);
@@ -160,7 +146,6 @@ user_pref("app.normandy.api_url", "");
/** CRASH REPORTS ***/ /** CRASH REPORTS ***/
user_pref("breakpad.reportURL", ""); user_pref("breakpad.reportURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false); user_pref("browser.tabs.crashReporting.sendReport", false);
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
/** DETECTION ***/ /** DETECTION ***/
user_pref("captivedetect.canonicalURL", ""); user_pref("captivedetect.canonicalURL", "");
@@ -181,37 +166,28 @@ user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features",
user_pref("browser.preferences.moreFromMozilla", false); user_pref("browser.preferences.moreFromMozilla", false);
user_pref("browser.aboutConfig.showWarning", false); user_pref("browser.aboutConfig.showWarning", false);
user_pref("browser.aboutwelcome.enabled", false); user_pref("browser.aboutwelcome.enabled", false);
user_pref("browser.tabs.tabmanager.enabled", false);
user_pref("browser.profiles.enabled", true); user_pref("browser.profiles.enabled", true);
/** THEME ADJUSTMENTS ***/ /** THEME ADJUSTMENTS ***/
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("browser.compactmode.show", true); user_pref("browser.compactmode.show", true);
user_pref("browser.display.focus_ring_on_anything", true);
user_pref("browser.display.focus_ring_style", 0);
user_pref("browser.display.focus_ring_width", 0);
user_pref("layout.css.prefers-color-scheme.content-override", 2);
user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS
user_pref("browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled", true);
/** 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.delay", -1);
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);
user_pref("dom.text_fragments.create_text_fragment.enabled", true);
/** 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.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);
@@ -235,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 *
****************************************************************************/ ****************************************************************************/
+129
View File
@@ -0,0 +1,129 @@
//
/* 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: 137 *
* url: https://github.com/yokoffing/Betterfox *
****************************************************************************/
/****************************************************************************
* SECTION: FASTFOX *
****************************************************************************/
/** GFX ***/
user_pref("gfx.canvas.accelerated.cache-items", 8192); // DEFAULT FF135+
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: reduce CPU and GPU use until bug is fixed
// [1] https://github.com/zen-browser/desktop/issues/6302
user_pref("zen.view.experimental-rounded-view", false);
// 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);
/****************************************************************************
* 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 *
****************************************************************************/