1
0
mirror of https://github.com/yokoffing/Betterfox.git synced 2026-06-28 15:41:46 +05:30

Compare commits

...

9 Commits

Author SHA1 Message Date
yokoffing f2b656a74b Update user-overrides.js 2026-06-25 08:45:49 -04:00
yokoffing 29fc4c4df6 add JS options 2026-06-25 08:45:36 -04:00
yokoffing 5d03962513 add custom FF prefs 2026-06-25 08:27:57 -04:00
yokoffing 6d10adcba9 Update README.md 2026-06-25 08:19:41 -04:00
yokoffing c9ec39c8a6 Merge branch 'main' into 152.0 2026-06-19 10:14:05 -04:00
yokoffing 8bd2f5d72e comment out eme 2026-06-12 22:25:12 -04:00
minh2134 c97bc06396 install.py: Waterfox compatibility and default to firefox user.js always (#485)
* install.py: Integrate waterfox and default to firefox user.js always

This commit:
- Removes the old --zen switch
- Adds a new --browser/-b switch to specify the browser. Available
  options: firefox, waterfox, zen
- Now defaults to the firefox user.js even if there's new user.js added

* install.py: Remove the redundant --zen flag
2026-05-30 22:03:12 -04:00
Vadim Zyamalov 392c62a03c New profile system aloows for non-ascii characters (#470) 2026-05-03 12:22:57 -04:00
yokoffing 0bc76714a9 Delete .github/FUNDING.yml 2026-05-01 17:35:42 -04:00
5 changed files with 58 additions and 25 deletions
-13
View File
@@ -1,13 +0,0 @@
# These are supported funding model platforms
github: yokoffing
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: yokoffing
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: yokoffing
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+34 -2
View File
@@ -130,6 +130,38 @@ user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s)
user_pref("gfx.canvas.accelerated.cache-size", 512); // default=256; Chrome=512; max=2048 user_pref("gfx.canvas.accelerated.cache-size", 512); // default=256; Chrome=512; max=2048
//user_pref("gfx.canvas.max-size", 32767); // [DEFAULT] //user_pref("gfx.canvas.max-size", 32767); // [DEFAULT]
/****************************************************************************
* SECTION: JAVASCRIPT OPTIONS *
****************************************************************************/
// PREF: lower the Baseline JIT compilation threshold
// Controls how many times a function runs before Firefox promotes it from the
// C++ interpreter to the Baseline JIT compiler. The Baseline JIT compiles each
// bytecode instruction into a small piece of machine code and uses Inline Caches
// (ICs) to both speed up execution and collect type info for the Ion optimizing JIT.
// Lowering this from 100 to 50 promotes "warm" functions to compiled machine code
// sooner, which reduces dropped frames while browsing.
// [1] https://ra1ahq.blog/en/optimizaciya-proizvoditelnosti-mozilla-firefox-chast-1
user_pref("javascript.options.baselinejit.threshold", 50); // default=100
// PREF: raise the IonMonkey (Ion) optimizing-JIT compilation threshold
// Controls how many times a function runs before Firefox promotes it from the
// Baseline JIT to IonMonkey, the optimizing JIT. Ion applies advanced compiler
// optimizations to produce fast code for "hot" functions, at the cost of slower
// compilation. The Baseline JIT is quicker to produce but can't cope with the large
// amounts of code on heavy websites.
// Raising this threshold keeps more code on the faster-to-compile Baseline JIT,
// reserving the expensive Ion compilation for only the hottest functions.
// [1] https://ra1ahq.blog/en/optimizaciya-proizvoditelnosti-mozilla-firefox-chast-1
//user_pref("javascript.options.ion.threshold", 1500); // DEFAULT
// PREF: decrease concurrent JavaScript garbage collection (GC) threads
// Sets the divisor in the formula: GC threads = CPU threads ÷ divisor (min 1).
// A LOWER value = MORE parallel GC threads. A HIGHER value = FEWER threads.
// Example (24-thread CPU): divisor 1 → 24 threads | 2 → 12 | 4 (default) → 6 | 12 → 2
// Power users with many cores should LOWER this value, not raise it.
// [NOTE] Mozilla's default of 4 is conservative to avoid thread contention on weak hardware.
//user_pref("javascript.options.concurrent_multiprocess_gcs.cpu_divisor", 4); // DEFAULT
/**************************************************************************** /****************************************************************************
* SECTION: DISK CACHE * * SECTION: DISK CACHE *
****************************************************************************/ ****************************************************************************/
@@ -306,8 +338,8 @@ user_pref("image.mem.decode_bytes_at_a_time", 32768); // default=16384; chunk si
// [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
// [3] https://ra1ahq.blog/en/optimizaciya-proizvoditelnosti-mozilla-firefox // [3] https://ra1ahq.blog/en/optimizaciya-proizvoditelnosti-mozilla-firefox
//user_pref("network.buffer.cache.size", 65535); // default=32768 (32 kb); 262144 too large 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 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
+1 -1
View File
@@ -1,6 +1,6 @@
![Badge](https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fyokoffing%2FBetterfox&label=&icon=github&color=%23198754&message=&style=flat&tz=US%2FEastern)![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)[![shields.io Stars](https://img.shields.io/github/stars/yokoffing/betterfox)](https://github.com/yokoffing/betterfox/stargazers) ![Badge](https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fyokoffing%2FBetterfox&label=&icon=github&color=%23198754&message=&style=flat&tz=US%2FEastern)![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)[![shields.io Stars](https://img.shields.io/github/stars/yokoffing/betterfox)](https://github.com/yokoffing/betterfox/stargazers)
Do not trust sites that claim to be Betterfox. This page is the only official source. :warning: Do not trust sites that claim to be Betterfox. This page is the only official source.
# 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/).
+9 -7
View File
@@ -99,7 +99,7 @@ def _get_default_profile_folder(firefox_root):
print(f"Reading {config_path}...") print(f"Reading {config_path}...")
config_parser = ConfigParser(strict=False) config_parser = ConfigParser(strict=False)
config_parser.read(config_path) config_parser.read(config_path, encoding = "utf8")
path = None path = None
for section in config_parser.sections(): for section in config_parser.sections():
@@ -174,12 +174,17 @@ def download_betterfox(url):
def extract_betterfox(data, profile_folder): def extract_betterfox(data, profile_folder):
zipfile = ZipFile(data) zipfile = ZipFile(data)
userjs_zipinfo = None userjs_zipinfo = None
depth = 1 # default to firefox user.js living at root dir
if args.browser != "firefox":
depth = 2 # ignore the outside
for file in zipfile.filelist: for file in zipfile.filelist:
if "/zen/" in file.filename and not args.zen: path = file.filename.split("/")
if len(path)-1 != depth or (args.browser not in path and depth != 1) :
continue continue
if file.filename.endswith("user.js"): if file.filename.endswith("user.js"):
userjs_zipinfo = file userjs_zipinfo = file
userjs_zipinfo.filename = Path(userjs_zipinfo.filename).name userjs_zipinfo.filename = Path(userjs_zipinfo.filename).name
break
if not userjs_zipinfo: if not userjs_zipinfo:
raise BaseException("Could not find user.js!") raise BaseException("Could not find user.js!")
@@ -212,18 +217,15 @@ if __name__ == "__main__":
default_profile_folder = _get_default_profile_folder(firefox_root) default_profile_folder = _get_default_profile_folder(firefox_root)
argparser = ArgumentParser( 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"))), 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"))),
argparser.add_argument("--zen", "-z", action="store_true", default=False, help="Install user.js for the Zen browser instead. Defaults to False"),
advanced = argparser.add_argument_group("Advanced") 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("--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("--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-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") advanced.add_argument("--repository-name", "-rn", default="Betterfox", help="name of the Betterfox repository. Defaults to Betterfox")
advanced.add_argument("--browser", "-b", default="firefox", help="Which browser should Betterfox install to. Defaults to firefox. Available options: firefox, zen, waterfox")
disable = argparser.add_argument_group("Disable functionality") 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-backup", "-nb", action="store_true", default=False, help="disable backup of current profile (not recommended)"),
+14 -2
View File
@@ -20,6 +20,13 @@
/** 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.sessionstore.interval", 900000); // save session every 15 minutes user_pref("browser.sessionstore.interval", 900000); // save session every 15 minutes
user_pref("browser.newtab.preload", false); // disable new tab if not using
user_pref("nglayout.initialpaint.delay", 50); // delay painting new tabs
user_pref("javascript.options.baselinejit.threshold", 50); // default=100
//user_pref("javascript.options.ion.threshold", 5000);
user_pref("network.buffer.cache.size", 65535);
user_pref("network.buffer.cache.count", 48);
user_pref("javascript.options.concurrent_multiprocess_gcs.cpu_divisor", 2); // default=4
/** SECUREFOX ***/ /** SECUREFOX ***/
user_pref("privacy.trackingprotection.allow_list.convenience.enabled", false); // disable Strict allowlist of convenience features user_pref("privacy.trackingprotection.allow_list.convenience.enabled", false); // disable Strict allowlist of convenience features
@@ -48,13 +55,15 @@ user_pref("browser.firefox-view.feature-tour", "{\"screen\":\"\",\"complete\":tr
user_pref("accessibility.force_disabled", 1); // disable Accessibility features user_pref("accessibility.force_disabled", 1); // disable Accessibility features
user_pref("dom.security.https_only_mode", false); // disable HTTPS Only in normal windows user_pref("dom.security.https_only_mode", false); // disable HTTPS Only in normal windows
user_pref("dom.security.https_only_mode_pbm", true); // HTTPS Only in PB windows user_pref("dom.security.https_only_mode_pbm", true); // HTTPS Only in PB windows
user_pref("media.eme.enabled", false); // disable DRM //user_pref("media.eme.enabled", false); // disable DRM
user_pref("browser.eme.ui.enabled", false); // hide the UI setting; this also disables the DRM prompt //user_pref("browser.eme.ui.enabled", false); // hide the UI setting; this also disables the DRM prompt
//user_pref("dom.serviceWorkers.enabled", false); // disable service workers in Normal Browsing //user_pref("dom.serviceWorkers.enabled", false); // disable service workers in Normal Browsing
user_pref("dom.serviceWorkers.privateBrowsing.enabled", false); // disable service workers in Private Browsing user_pref("dom.serviceWorkers.privateBrowsing.enabled", false); // disable service workers in Private Browsing
user_pref("privacy.restrict3rdpartystorage.heuristic.navigation", false); // restrict dynamic storage access user_pref("privacy.restrict3rdpartystorage.heuristic.navigation", false); // restrict dynamic storage access
user_pref("privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction", false); // restrict dynamic storage access user_pref("privacy.restrict3rdpartystorage.heuristic.opened_window_after_interaction", false); // restrict dynamic storage access
user_pref("security.cert_pinning.enforcement_level", 2); // strict public key pinning user_pref("security.cert_pinning.enforcement_level", 2); // strict public key pinning
user_pref("dom.fs.enabled", false); // FROST
user_pref("dom.fs.writable_file_stream.enabled", false); // FROST
/** PESKYFOX ***/ /** PESKYFOX ***/
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
@@ -105,6 +114,7 @@ user_pref("geo.provider.ms-windows-location", 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.enhanced_contrast", 100); user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
//user_pref("browser.display.auto_quality_min_font_size", 0);
//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
@@ -121,6 +131,7 @@ user_pref("network.dnsCacheExpiration", 3600); // keep entries for 1 hour; defau
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.enhanced_contrast", 100); user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
//user_pref("browser.display.auto_quality_min_font_size", 0);
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", false); // no need for userChrome user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", false); // no need for userChrome
/** DELETE IF NOT macOS ***/ /** DELETE IF NOT macOS ***/
@@ -147,5 +158,6 @@ user_pref("app.update.auto", false); // disable auto-installing Firefox updates
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.enhanced_contrast", 100); user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100);
//user_pref("browser.display.auto_quality_min_font_size", 0);
user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false);
user_pref("privacy.userContext.enabled", false); // disable Container Tabs user_pref("privacy.userContext.enabled", false); // disable Container Tabs