├── .github ├── FUNDING.yml └── ISSUE_TEMPLATE │ └── bug_report.yml ├── Fastfox.js ├── LICENSE ├── Peskyfox.js ├── README.md ├── Securefox.js ├── Smoothfox.js ├── install.py ├── personal └── user-overrides.js ├── policies.json ├── user.js └── zen └── user.js /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: yokoffing 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: yokoffing 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: yokoffing 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: File a bug report 3 | assignees: yokoffing 4 | 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Please confirm the issue relates to Betterfox user.js before submitting a report. 10 | 11 | To troubleshoot your installation, try solutions below and test the issue after each step: 12 | * Launch Firefox in [Troubleshoot Mode](https://support.mozilla.org/en-US/kb/diagnose-firefox-issues-using-troubleshoot-mode). 13 | * 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). 14 | * [Clear website data](https://support.mozilla.org/en-US/kb/clear-cookies-and-site-data-firefox) and restart Firefox. 15 | * Create a [new clean profile](https://support.mozilla.org/en-US/kb/profile-manager-create-remove-switch-firefox-profiles). 16 | 17 | - type: checkboxes 18 | attributes: 19 | label: Prerequisites 20 | options: 21 | - label: The issue persists when using Firefox in Troubleshoot Mode. 22 | required: true 23 | - 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)." 24 | required: true 25 | - label: The issue persists after I cleared website data and restarted Firefox. 26 | required: true 27 | - 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. 28 | required: true 29 | 30 | - type: textarea 31 | attributes: 32 | label: Bug description 33 | description: Describe the issue. 34 | placeholder: A bug causes this and that... 35 | validations: 36 | required: true 37 | 38 | - type: textarea 39 | attributes: 40 | label: Steps to reproduce 41 | description: Explain the steps required to reproduce the issue. 42 | placeholder: | 43 | 1. Go to `...` 44 | 2. Click on `...` 45 | 3. Scroll down to `...` 46 | validations: 47 | required: true 48 | 49 | - type: textarea 50 | attributes: 51 | label: Expected behavior 52 | description: What did you expect to happen instead? 53 | placeholder: Firefox should do [this]. Instead, it did [that]. 54 | validations: 55 | required: false 56 | 57 | - type: textarea 58 | attributes: 59 | label: Screenshots 60 | description: Add screenshots to help explain your problem (optional). 61 | validations: 62 | required: false 63 | 64 | - type: dropdown 65 | attributes: 66 | label: Operating System (OS) 67 | options: 68 | - Windows (10 or later) 69 | - macOS (ARM-based device) 70 | - macOS (Intel-based device) 71 | - Linux 72 | - Other 73 | validations: 74 | required: true 75 | 76 | - type: dropdown 77 | attributes: 78 | label: Browser 79 | options: 80 | - Firefox 81 | - Firefox Beta 82 | - Firefox Developer Edition 83 | - Firefox Nightly 84 | - Firefox ESR 85 | - Floorp 86 | - LibreWolf 87 | - Zen Browser 88 | - Waterfox 89 | - Other 90 | validations: 91 | required: true 92 | 93 | - type: input 94 | attributes: 95 | label: Version 96 | placeholder: 136 stable 97 | validations: 98 | required: false 99 | 100 | - type: textarea 101 | attributes: 102 | label: Additional information 103 | description: Include any other information that may be helpful. 104 | validations: 105 | required: false 106 | -------------------------------------------------------------------------------- /Fastfox.js: -------------------------------------------------------------------------------- 1 | 2 | /**************************************************************************************** 3 | * Fastfox * 4 | * "Non ducor duco" * 5 | * priority: speedy browsing * 6 | * version: 137 * 7 | * url: https://github.com/yokoffing/Betterfox * 8 | ***************************************************************************************/ 9 | 10 | /**************************************************************************** 11 | * SECTION: GENERAL * 12 | ****************************************************************************/ 13 | 14 | // PREF: initial paint delay 15 | // How long FF will wait before rendering the page (in ms) 16 | // [NOTE] You may prefer using 250. 17 | // [NOTE] Dark Reader users may want to use 1000 [3]. 18 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1283302 19 | // [2] https://docs.google.com/document/d/1BvCoZzk2_rNZx3u9ESPoFjSADRI0zIPeJRXFLwWXx_4/edit#heading=h.28ki6m8dg30z 20 | // [3] https://old.reddit.com/r/firefox/comments/o0xl1q/reducing_cpu_usage_of_dark_reader_extension/ 21 | // [4] https://reddit.com/r/browsers/s/wvNB7UVCpx 22 | //user_pref("nglayout.initialpaint.delay", 5); // DEFAULT; formerly 250 23 | //user_pref("nglayout.initialpaint.delay_in_oopif", 5); // DEFAULT 24 | 25 | // PREF: page reflow timer 26 | // Rather than wait until a page has completely downloaded to display it to the user, 27 | // web browsers will periodically render what has been received to that point. 28 | // Because reflowing the page every time additional data is received slows down 29 | // total page load time, a timer was added so that the page would not reflow too often. 30 | // This preference specfies whether that timer is active. 31 | // [1] https://kb.mozillazine.org/Content.notify.ontimer 32 | // true = do not reflow pages at an interval any higher than that specified by content.notify.interval (default) 33 | // false = reflow pages whenever new data is received 34 | //user_pref("content.notify.ontimer", true); // DEFAULT 35 | 36 | // PREF: notification interval (in microseconds) to avoid layout thrashing 37 | // When Firefox is loading a page, it periodically reformats 38 | // or "reflows" the page as it loads. The page displays new elements 39 | // every 0.12 seconds by default. These redraws increase the total page load time. 40 | // The default value provides good incremental display of content 41 | // without causing an increase in page load time. 42 | // [NOTE] Lowering the interval will increase responsiveness 43 | // but also increase the total load time. 44 | // [WARNING] If this value is set below 1/10 of a second, it starts 45 | // to impact page load performance. 46 | // [EXAMPLE] 100000 = .10s = 100 reflows/second 47 | // [1] https://searchfox.org/mozilla-central/rev/c1180ea13e73eb985a49b15c0d90e977a1aa919c/modules/libpref/init/StaticPrefList.yaml#1824-1834 48 | // [2] https://web.archive.org/web/20240115073722/https://dev.opera.com/articles/efficient-javascript/?page=3#reflow 49 | // [3] https://web.archive.org/web/20240115073722/https://dev.opera.com/articles/efficient-javascript/?page=3#smoothspeed 50 | user_pref("content.notify.interval", 100000); // (.10s); default=120000 (.12s) 51 | 52 | // PREF: new tab preload 53 | // [WARNING] Disabling this may cause a delay when opening a new tab in Firefox. 54 | // [1] https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping 55 | // [2] https://github.com/arkenfox/user.js/issues/1556 56 | //user_pref("browser.newtab.preload", true); // DEFAULT 57 | 58 | // PREF: disable EcoQoS [WINDOWS] 59 | // Background tab processes use efficiency mode on Windows 11 to limit resource use. 60 | // [WARNING] Leave this alone, unless you're on Desktop and you rely on 61 | // background tabs to have maximum performance. 62 | // [1] https://devblogs.microsoft.com/performance-diagnostics/introducing-ecoqos/ 63 | // [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1796525 64 | // [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1800412 65 | // [4] https://reddit.com/r/firefox/comments/107fj69/how_can_i_disable_the_efficiency_mode_on_firefox/ 66 | //user_pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false); 67 | 68 | // PREF: control how tabs are loaded when a session is restored 69 | // true=Tabs are not loaded until they are selected (default) 70 | // false=Tabs begin to load immediately. 71 | //user_pref("browser.sessionstore.restore_on_demand", true); // DEFAULT 72 | //user_pref("browser.sessionstore.restore_pinned_tabs_on_demand", true); 73 | //user_pref("browser.sessionstore.restore_tabs_lazily", true); // DEFAULT 74 | 75 | // PREF: disable preSkeletonUI on startup [WINDOWS] 76 | //user_pref("browser.startup.preXulSkeletonUI", false); 77 | 78 | // PREF: lazy load iframes 79 | //user_pref("dom.iframe_lazy_loading.enabled", true); // DEFAULT [FF121+] 80 | 81 | /**************************************************************************** 82 | * SECTION: GFX RENDERING TWEAKS * 83 | ****************************************************************************/ 84 | 85 | // PREF: Webrender tweaks 86 | // [1] https://searchfox.org/mozilla-central/rev/6e6332bbd3dd6926acce3ce6d32664eab4f837e5/modules/libpref/init/StaticPrefList.yaml#6202-6219 87 | // [2] https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank/ 88 | // [3] https://www.reddit.com/r/firefox/comments/tbphok/is_setting_gfxwebrenderprecacheshaders_to_true/i0bxs2r/ 89 | // [4] https://www.reddit.com/r/firefox/comments/z5auzi/comment/ixw65gb?context=3 90 | // [5] https://gist.github.com/RubenKelevra/fd66c2f856d703260ecdf0379c4f59db?permalink_comment_id=4532937#gistcomment-4532937 91 | //user_pref("gfx.webrender.all", true); // enables WR + additional features 92 | //user_pref("gfx.webrender.precache-shaders", true); // longer initial startup time 93 | //user_pref("gfx.webrender.compositor", true); // DEFAULT WINDOWS macOS 94 | //user_pref("gfx.webrender.compositor.force-enabled", true); // enforce 95 | 96 | // PREF: if your hardware doesn't support Webrender, you can fallback to Webrender's software renderer 97 | // [1] https://www.ghacks.net/2020/12/14/how-to-find-out-if-webrender-is-enabled-in-firefox-and-how-to-enable-it-if-it-is-not/ 98 | //user_pref("gfx.webrender.software", true); // Software Webrender uses CPU instead of GPU 99 | //user_pref("gfx.webrender.software.opengl", true); // LINUX 100 | 101 | // PREF: GPU-accelerated Canvas2D 102 | // Uses Accelerated Canvas2D for hardware acceleration of Canvas2D. 103 | // This provides a consistent acceleration architecture across all platforms 104 | // by utilizing WebGL instead of relying upon Direct2D. 105 | // [WARNING] May cause issues on some Windows machines using integrated GPUs [2] [3] 106 | // Add to your overrides if you have a dedicated GPU. 107 | // [NOTE] Higher values will use more memory. 108 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1741501 109 | // [2] https://github.com/yokoffing/Betterfox/issues/153 110 | // [3] https://github.com/yokoffing/Betterfox/issues/198 111 | //user_pref("gfx.canvas.accelerated", true); // [DEFAULT FF133+] 112 | //user_pref("gfx.canvas.accelerated.cache-items", 8192); // DEFAULT FF135+; Chrome=4096 113 | user_pref("gfx.canvas.accelerated.cache-size", 512); // default=256; Chrome=512 114 | user_pref("gfx.content.skia-font-cache-size", 20); // default=5; Chrome=20 115 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1239151#c2 116 | 117 | // PREF: prefer GPU over CPU 118 | // At best, the prefs do nothing on Linux/macOS. 119 | // At worst, it'll result in crashes if the sandboxing is a WIP. 120 | // [1] https://firefox-source-docs.mozilla.org/dom/ipc/process_model.html#gpu-process 121 | //user_pref("layers.gpu-process.enabled", true); // DEFAULT WINDOWS 122 | //user_pref("layers.gpu-process.force-enabled", true); // enforce 123 | //user_pref("layers.mlgpu.enabled", true); // LINUX 124 | //user_pref("media.hardware-video-decoding.enabled", true); // DEFAULT WINDOWS macOS 125 | //user_pref("media.hardware-video-decoding.force-enabled", true); // enforce 126 | //user_pref("media.gpu-process-decoder", true); // DEFAULT WINDOWS 127 | //user_pref("media.ffmpeg.vaapi.enabled", true); // LINUX 128 | 129 | // PREF: hardware and software decoded video overlay [FF116+] 130 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1829063 131 | // [2] https://phabricator.services.mozilla.com/D175993 132 | //user_pref("gfx.webrender.dcomp-video-hw-overlay-win", true); // DEFAULT 133 | //user_pref("gfx.webrender.dcomp-video-hw-overlay-win-force-enabled", true); // enforce 134 | //user_pref("gfx.webrender.dcomp-video-sw-overlay-win", true); // DEFAULT 135 | //user_pref("gfx.webrender.dcomp-video-sw-overlay-win-force-enabled", true); // enforce 136 | 137 | /**************************************************************************** 138 | * SECTION: DISK CACHE * 139 | ****************************************************************************/ 140 | 141 | // PREF: disk cache 142 | // [NOTE] If you think it helps performance, then feel free to override this. 143 | // [SETTINGS] See about:cache 144 | // More efficient to keep the browser cache instead of having to 145 | // re-download objects for the websites you visit frequently. 146 | // [1] https://www.janbambas.cz/new-firefox-http-cache-enabled/ 147 | user_pref("browser.cache.disk.enable", false); 148 | 149 | // PREF: disk cache size 150 | // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913808,968106,968101 151 | // [2] https://rockridge.hatenablog.com/entry/2014/09/15/165501 152 | // [3] https://www.reddit.com/r/firefox/comments/17oqhw3/firefox_and_ssd_disk_consumption/ 153 | //user_pref("browser.cache.disk.smart_size.enabled", false); // force a fixed max cache size on disk 154 | //user_pref("browser.cache.disk.capacity", 512000); // default=256000; size of disk cache; 1024000=1GB, 2048000=2GB 155 | //user_pref("browser.cache.disk.max_entry_size", 51200); // DEFAULT (50 MB); maximum size of an object in disk cache 156 | 157 | // PREF: Race Cache With Network (RCWN) [FF59+] 158 | // [ABOUT] about:networking#rcwn 159 | // Firefox concurrently sends requests for cached resources to both the 160 | // local disk cache and the network server. The browser uses whichever 161 | // result arrives first and cancels the other request. This approach sometimes 162 | // loads pages faster because the network can be quicker than accessing the cache 163 | // on a hard drive. When RCWN is enabled, the request might be served from 164 | // the server even if you have valid entry in the cache. Set to false if your 165 | // intention is to increase cache usage and reduce network usage. 166 | // [1] https://slides.com/valentingosu/race-cache-with-network-2017 167 | // [2] https://simonhearne.com/2020/network-faster-than-cache/ 168 | // [3] https://support.mozilla.org/en-US/questions/1267945 169 | // [4] https://askubuntu.com/questions/1214862/36-syns-in-a-row-how-to-limit-firefox-connections-to-one-website 170 | // [5] https://bugzilla.mozilla.org/show_bug.cgi?id=1622859 171 | // [6] https://soylentnews.org/comments.pl?noupdate=1&sid=40195&page=1&cid=1067867#commentwrap 172 | //user_pref("network.http.rcwn.enabled", false); 173 | 174 | // PREF: attempt to RCWN only if a resource is smaller than this size 175 | //user_pref("network.http.rcwn.small_resource_size_kb", 256); // DEFAULT 176 | 177 | // PREF: cache memory pool 178 | // Cache v2 provides a memory pool that stores metadata (such as response headers) 179 | // for recently read cache entries [1]. It is managed by a cache thread, and caches with 180 | // metadata in the pool appear to be reused immediately. 181 | // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=986179 182 | //user_pref("browser.cache.disk.metadata_memory_limit", 500); // default=250 (0.25 MB); limit of recent metadata we keep in memory for faster access 183 | 184 | // PREF: number of chunks we preload ahead of read 185 | // Large content such as images will load faster. 186 | // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913819,988318 187 | // [2] http://www.janbambas.cz/new-firefox-http-cache-enabled/ 188 | //user_pref("browser.cache.disk.preload_chunk_count", 4); // DEFAULT 189 | 190 | // PREF: the time period used to re-compute the frecency value of cache entries 191 | // The frequency algorithm is used to select entries, and entries that are recently 192 | // saved or frequently reused are retained. The frecency value determines how 193 | // frequently a page has been accessed and is used by Firefox's cache algorithm. 194 | // The frequency algorithm is used to select entries, and entries that are recently 195 | // saved or frequently reused are retained. The frecency value determines how 196 | // often a page has been accessed and is used by Firefox's cache algorithm. 197 | // When the memory pool becomes full, the oldest data is purged. By default, 198 | // data older than 6 hours is treated as old. 199 | // [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=942835,1012327 200 | // [2] https://bugzilla.mozilla.org/buglist.cgi?bug_id=913808,968101 201 | //user_pref("browser.cache.frecency_half_life_hours", 6); // DEFAULT 202 | 203 | // PREF: memory limit (in kB) for new cache data not yet written to disk 204 | // Writes to the cache are buffered and written to disk on background with low priority. 205 | // With a slow persistent storage, these buffers may grow when data is coming 206 | // fast from the network. When the amount of unwritten data is exceeded, new 207 | // writes will simply fail. We have two buckets, one for important data 208 | // (priority) like html, css, fonts and js, and one for other data like images, video, etc. 209 | //user_pref("browser.cache.disk.max_chunks_memory_usage", 40960); // DEFAULT (40 MB) 210 | //user_pref("browser.cache.disk.max_priority_chunks_memory_usage", 40960); // DEFAULT (40 MB) 211 | 212 | // PREF: how often to validate document in cache 213 | // 0 = once-per-session 214 | // 1 = each-time 215 | // 2 = never 216 | // 3 = when-appropriate/automatically (default) 217 | //user_pref("browser.cache.check_doc_frequency", 3); // DEFAULT 218 | 219 | // PREF: enforce free space checks 220 | // When smartsizing is disabled, we could potentially fill all disk space by 221 | // cache data when the disk capacity is not set correctly. To avoid that, we 222 | // check the free space every time we write some data to the cache. The free 223 | // space is checked against two limits. Once the soft limit is reached we start 224 | // evicting the least useful entries, when we reach the hard limit writing to 225 | // the entry fails. 226 | //user_pref("browser.cache.disk.free_space_soft_limit", 10240); // default=5120 (5 MB) 227 | //user_pref("browser.cache.disk.free_space_hard_limit", 2048); // default=1024 (1 MB) 228 | 229 | // PREF: compression level for cached JavaScript bytecode [FF102+] 230 | // [1] https://github.com/yokoffing/Betterfox/issues/247 231 | // 0 = do not compress (default) 232 | // 1 = minimal compression 233 | // 9 = maximal compression 234 | //user_pref("browser.cache.jsbc_compression_level", 3); 235 | 236 | // PREF: strategy to use for when the bytecode should be encoded and saved [TESTING ONLY] 237 | // -1 makes page load times marginally longer when a page is being loaded for the first time, while 238 | // subsequent reload of websites will be much much faster. 239 | // 0 means that the bytecode is created every 4 page loads [3]. 240 | // [1] https://searchfox.org/mozilla-release/source/modules/libpref/init/StaticPrefList.yaml#3461-3488 241 | // [2] https://www.reddit.com/r/firefox/comments/12786yv/improving_performance_in_firefox_android_part_ii/ 242 | // [3] https://github.com/zen-browser/desktop/issues/217 243 | // -1 = saved as soon as the script is seen for the first time, independently of the size or last access time 244 | // 0 = saved in order to minimize the page-load time (default) 245 | //user_pref("dom.script_loader.bytecode_cache.enabled", true); // DEFAULT 246 | //user_pref("dom.script_loader.bytecode_cache.strategy", 0); // DEFAULT 247 | 248 | /**************************************************************************** 249 | * SECTION: MEMORY CACHE * 250 | ****************************************************************************/ 251 | 252 | // PREF: memory cache 253 | // The "automatic" size selection (default) is based on a decade-old table 254 | // that only contains settings for systems at or below 8GB of system memory [1]. 255 | // Waterfox G6 allows it to go above 8GB machines [3]. 256 | // Value can be up to the max size of an unsigned 64-bit integer. 257 | // -1 = Automatically decide the maximum memory to use to cache decoded images, 258 | // messages, and chrome based on the total amount of RAM 259 | // For machines with 8GB+ RAM, that equals 32768 kb = 32 MB 260 | // [1] https://kb.mozillazine.org/Browser.cache.memory.capacity#-1 261 | // [2] https://searchfox.org/mozilla-central/source/netwerk/cache2/CacheObserver.cpp#94-125 262 | // [3] https://github.com/WaterfoxCo/Waterfox/commit/3fed16932c80a2f6b37d126fe10aed66c7f1c214 263 | //user_pref("browser.cache.memory.capacity", 131072); // (128 MB) 264 | //user_pref("browser.cache.memory.max_entry_size", 20480); // (20 MB); default=5120 (5 MB) 265 | 266 | // PREF: amount of Back/Forward cached pages stored in memory for each tab 267 | // Pages that were recently visited are stored in memory in such a way 268 | // that they don't have to be re-parsed. This improves performance 269 | // when pressing Back and Forward. This pref limits the maximum 270 | // number of pages stored in memory. If you are not using the Back 271 | // and Forward buttons that much, but rather using tabs, then there 272 | // is no reason for Firefox to keep memory for this. 273 | // -1=determine automatically (8 pages) 274 | // [1] https://kb.mozillazine.org/Browser.sessionhistory.max_total_viewers#Possible_values_and_their_effects 275 | user_pref("browser.sessionhistory.max_total_viewers", 4); 276 | 277 | /**************************************************************************** 278 | * SECTION: MEDIA CACHE * 279 | ****************************************************************************/ 280 | 281 | // PREF: media disk cache 282 | //user_pref("media.cache_size", 512000); // DEFAULT 283 | 284 | // PREF: media memory cache 285 | // [1] https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/StaticPrefList.yaml#l9652 286 | // [2] https://github.com/arkenfox/user.js/pull/941 287 | user_pref("media.memory_cache_max_size", 65536); // default=8192; AF=65536; alt=131072 288 | 289 | // PREF: media cache combine sizes 290 | //user_pref("media.memory_caches_combined_limit_kb", 524288); // DEFAULT; alt=1048576 291 | //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 292 | 293 | // PREF: Media Source Extensions (MSE) web standard 294 | // Disabling MSE allows videos to fully buffer, but you're limited to 720p. 295 | // [WARNING] Disabling MSE may break certain videos. 296 | // false=Firefox plays the old WebM format 297 | // true=Firefox plays the new WebM format (default) 298 | // [1] https://support.mozilla.org/en-US/questions/1008271 299 | //user_pref("media.mediasource.enabled", true); // DEFAULT 300 | 301 | // PREF: adjust video buffering periods when not using MSE (in seconds) 302 | // [NOTE] Does not affect videos over 720p since they use DASH playback [1] 303 | // [1] https://lifehacker.com/preload-entire-youtube-videos-by-disabling-dash-playbac-1186454034 304 | user_pref("media.cache_readahead_limit", 7200); // 120 min; default=60; stop reading ahead when our buffered data is this many seconds ahead of the current playback 305 | user_pref("media.cache_resume_threshold", 3600); // 60 min; default=30; when a network connection is suspended, don't resume it until the amount of buffered data falls below this threshold 306 | 307 | /**************************************************************************** 308 | * SECTION: IMAGE CACHE * 309 | ****************************************************************************/ 310 | 311 | // PREF: image cache 312 | //user_pref("image.cache.size", 5242880); // DEFAULT; in MiB; alt=10485760 (cache images up to 10MiB in size) 313 | user_pref("image.mem.decode_bytes_at_a_time", 32768); // default=16384; alt=65536; chunk size for calls to the image decoders 314 | 315 | // PREF: set minimum timeout to unmap shared surfaces since they have been last used 316 | // This is only used on 32-bit builds of Firefox where there is meaningful 317 | // virtual address space pressure. 318 | // [1] https://phabricator.services.mozilla.com/D109440 319 | // [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1699224 320 | //user_pref("image.mem.shared.unmap.min_expiration_ms", 120000); // default=60000; minimum timeout to unmap shared surfaces since they have been last used 321 | 322 | /**************************************************************************** 323 | * SECTION: NETWORK * 324 | ****************************************************************************/ 325 | 326 | // PREF: use bigger packets 327 | // [WARNING] Cannot open HTML files bigger than 4MB if value is too large [2]. 328 | // Reduce Firefox's CPU usage by requiring fewer application-to-driver data transfers. 329 | // However, it does not affect the actual packet sizes transmitted over the network. 330 | // [1] https://www.mail-archive.com/support-seamonkey@lists.mozilla.org/msg74561.html 331 | // [2] https://github.com/yokoffing/Betterfox/issues/279 332 | // [3] https://ra1ahq.blog/en/optimizaciya-proizvoditelnosti-mozilla-firefox 333 | //user_pref("network.buffer.cache.size", 65535); // default=32768 (32 kb); 262144 too large 334 | //user_pref("network.buffer.cache.count", 48); // default=24; 128 too large 335 | 336 | // PREF: increase the absolute number of HTTP connections 337 | // [1] https://kb.mozillazine.org/Network.http.max-connections 338 | // [2] https://kb.mozillazine.org/Network.http.max-persistent-connections-per-server 339 | // [3] https://www.reddit.com/r/firefox/comments/11m2yuh/how_do_i_make_firefox_use_more_of_my_900_megabit/jbfmru6/ 340 | user_pref("network.http.max-connections", 1800); // default=900 341 | user_pref("network.http.max-persistent-connections-per-server", 10); // default=6; download connections; anything above 10 is excessive 342 | user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5); // default=3 343 | //user_pref("network.http.max-persistent-connections-per-proxy", 48); // default=32 344 | //user_pref("network.websocket.max-connections", 200); // DEFAULT 345 | 346 | // PREF: pacing requests [FF23+] 347 | // Controls how many HTTP requests are sent at a time. 348 | // Pacing HTTP requests can have some benefits, such as reducing network congestion, 349 | // improving web page loading speed, and avoiding server overload. 350 | // Pacing requests adds a slight delay between requests to throttle them. 351 | // If you have a fast machine and internet connection, disabling pacing 352 | // may provide a small speed boost when loading pages with lots of requests. 353 | // false=Firefox will send as many requests as possible without pacing 354 | // true=Firefox will pace requests (default) 355 | user_pref("network.http.pacing.requests.enabled", false); 356 | //user_pref("network.http.pacing.requests.min-parallelism", 10); // default=6 357 | //user_pref("network.http.pacing.requests.burst", 14); // default=10 358 | 359 | // PREF: increase DNS cache 360 | // [1] https://developer.mozilla.org/en-US/docs/Web/Performance/Understanding_latency 361 | //user_pref("network.dnsCacheEntries", 1000); // default=400 362 | 363 | // PREF: adjust DNS expiration time 364 | // [ABOUT] about:networking#dns 365 | // [NOTE] These prefs will be ignored by DNS resolver if using DoH/TRR. 366 | user_pref("network.dnsCacheExpiration", 3600); // keep entries for 1 hour 367 | //user_pref("network.dnsCacheExpirationGracePeriod", 240); // default=60; cache DNS entries for 4 minutes after they expire 368 | 369 | // PREF: the number of threads for DNS 370 | //user_pref("network.dns.max_high_priority_threads", 40); // DEFAULT [FF 123?] 371 | //user_pref("network.dns.max_any_priority_threads", 24); // DEFAULT [FF 123?] 372 | 373 | // PREF: increase TLS token caching 374 | user_pref("network.ssl_tokens_cache_capacity", 10240); // default=2048; more TLS token caching (fast reconnects) 375 | 376 | /**************************************************************************** 377 | * SECTION: SPECULATIVE LOADING * 378 | ****************************************************************************/ 379 | 380 | // These are connections that are not explicitly asked for (e.g., clicked on). 381 | // [1] https://developer.mozilla.org/en-US/docs/Web/Performance/Speculative_loading 382 | 383 | // [NOTE] FF85+ partitions (isolates) pooled connections, prefetch connections, 384 | // pre-connect connections, speculative connections, TLS session identifiers, 385 | // and other connections. We can take advantage of the speed of pre-connections 386 | // while preserving privacy. Users may relax hardening to maximize their preference. 387 | // For more information, see SecureFox: "PREF: State Paritioning" and "PREF: Network Partitioning". 388 | // [NOTE] To activate and increase network predictions, go to settings in uBlock Origin and uncheck: 389 | // - "Disable pre-fetching (to prevent any connection for blocked network requests)" 390 | // [NOTE] Add prefs to "MY OVERRIDES" section and uncomment to enable them in your user.js. 391 | 392 | // PREF: link-mouseover opening connection to linked server 393 | // When accessing content online, devices use sockets as endpoints. 394 | // The global limit on half-open sockets controls how many speculative 395 | // connection attempts can occur at once when starting new connections [3]. 396 | // If the user follows through, pages can load faster since some 397 | // work was done in advance. Firefox opens predictive connections 398 | // to sites when hovering over New Tab thumbnails or starting a 399 | // URL Bar search [1] and hyperlinks within a page [2]. 400 | // [NOTE] DNS (if enabled), TCP, and SSL handshakes are set up in advance, 401 | // but page contents are not downloaded until a click on the link is registered. 402 | // [1] https://support.mozilla.org/en-US/kb/how-stop-firefox-making-automatic-connections?redirectslug=how-stop-firefox-automatically-making-connections&redirectlocale=en-US#:~:text=Speculative%20pre%2Dconnections 403 | // [2] https://news.slashdot.org/story/15/08/14/2321202/how-to-quash-firefoxs-silent-requests 404 | // [3] https://searchfox.org/mozilla-central/rev/028c68d5f32df54bca4cf96376f79e48dfafdf08/modules/libpref/init/all.js#1280-1282 405 | // [4] https://www.keycdn.com/blog/resource-hints#prefetch 406 | // [5] https://3perf.com/blog/link-rels/#prefetch 407 | user_pref("network.http.speculative-parallel-limit", 0); 408 | 409 | // PREF: DNS prefetching for HTMLLinkElement 410 | // Used for cross-origin connections to provide small performance improvements. 411 | // You can enable rel=dns-prefetch for the HTTPS document without prefetching 412 | // DNS for anchors, whereas the latter makes more specualtive requests [5]. 413 | // [1] https://bitsup.blogspot.com/2008/11/dns-prefetching-for-firefox.html 414 | // [2] https://css-tricks.com/prefetching-preloading-prebrowsing/#dns-prefetching 415 | // [3] https://www.keycdn.com/blog/resource-hints#2-dns-prefetching 416 | // [4] http://www.mecs-press.org/ijieeb/ijieeb-v7-n5/IJIEEB-V7-N5-2.pdf 417 | // [5] https://bugzilla.mozilla.org/show_bug.cgi?id=1596935#c28 418 | user_pref("network.dns.disablePrefetch", true); 419 | user_pref("network.dns.disablePrefetchFromHTTPS", true); // [FF127+ false] 420 | 421 | // PREF: DNS prefetch for HTMLAnchorElement (speculative DNS) 422 | // Disable speculative DNS calls to prevent Firefox from resolving 423 | // hostnames for other domains linked on a page. This may eliminate 424 | // unnecessary DNS lookups, but can increase latency when following external links. 425 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1596935#c28 426 | // [2] https://github.com/arkenfox/user.js/issues/1870#issuecomment-2220773972 427 | //user_pref("dom.prefetch_dns_for_anchor_http_document", false); // [FF128+] 428 | //user_pref("dom.prefetch_dns_for_anchor_https_document", false); // DEFAULT [FF128+] 429 | 430 | // PREF: enable tag and Link: rel=preconnect response header handling 431 | //user_pref("network.preconnect", true); // DEFAULT 432 | 433 | // PREF: preconnect to the autocomplete URL in the address bar 434 | // Whether to warm up network connections for autofill or search results. 435 | // Firefox preloads URLs that autocomplete when a user types into the address bar. 436 | // Connects to destination server ahead of time, to avoid TCP handshake latency. 437 | // [NOTE] Firefox will perform DNS lookup (if enabled) and TCP and TLS handshake, 438 | // but will not start sending or receiving HTTP data. 439 | // [1] https://www.ghacks.net/2017/07/24/disable-preloading-firefox-autocomplete-urls/ 440 | user_pref("browser.urlbar.speculativeConnect.enabled", false); 441 | 442 | // PREF: mousedown speculative connections on bookmarks and history [FF98+] 443 | // Whether to warm up network connections for places:menus and places:toolbar. 444 | user_pref("browser.places.speculativeConnect.enabled", false); 445 | 446 | // PREF: network module preload [FF115+] 447 | // High-priority loading of current page JavaScript modules. 448 | // Used to preload high-priority JavaScript modules for strategic performance improvements. 449 | // Module preloading allows developers to fetch JavaScript modules and dependencies 450 | // earlier to accelerate page loads. The browser downloads, parses, and compiles modules 451 | // referenced by links with this attribute in parallel with other resources, rather 452 | // than sequentially waiting to process each. Preloading reduces overall download times. 453 | // Browsers may also automatically preload dependencies without firing extra events. 454 | // Unlike other pre-connection tags (except rel=preload), this tag is mandatory for the browser. 455 | // [1] https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/modulepreload 456 | //user_pref("network.modulepreload", true); // DEFAULT 457 | 458 | // PREF: link prefetching 459 | // Pre-populates the HTTP cache by prefetching same-site future navigation 460 | // resources or subresources used on those pages. 461 | // Enabling link prefetching allows Firefox to preload pages tagged as important. 462 | // The browser prefetches links with the prefetch-link tag, fetching resources 463 | // likely needed for the next navigation at low priority. When clicking a link 464 | // or loading a new page, prefetching stops and discards hints. Prefetching 465 | // downloads resources without executing them. 466 | // [NOTE] Since link prefetch uses the HTTP cache, it has a number of issues 467 | // with document prefetches, such as being potentially blocked by Cache-Control headers 468 | // (e.g. cache partitioning). 469 | // [1] https://developer.mozilla.org/en-US/docs/Glossary/Prefetch 470 | // [2] http://www.mecs-press.org/ijieeb/ijieeb-v7-n5/IJIEEB-V7-N5-2.pdf 471 | // [3] https://timkadlec.com/remembers/2020-06-17-prefetching-at-this-age/ 472 | // [4] https://3perf.com/blog/link-rels/#prefetch 473 | // [5] https://developer.mozilla.org/docs/Web/HTTP/Link_prefetching_FAQ 474 | user_pref("network.prefetch-next", false); 475 | 476 | // PREF: Fetch Priority API [FF119+] 477 | // Indicates whether the `fetchpriority` attribute for elements which support it. 478 | // [1] https://web.dev/articles/fetch-priority 479 | // [2] https://nitropack.io/blog/post/priority-hints 480 | // [2] https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/fetchPriority 481 | // [3] https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement/fetchPriority 482 | //user_pref("network.fetchpriority.enabled", true); 483 | 484 | // PREF: early hints [FF120+] 485 | // [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/103 486 | // [2] https://developer.chrome.com/blog/early-hints/ 487 | // [3] https://blog.cloudflare.com/early-hints/ 488 | // [4] https://blog.cloudflare.com/early-hints-performance/ 489 | //user_pref("network.early-hints.enabled", true); 490 | 491 | // PREF: `Link: rel=preconnect` in 103 Early Hint response [FF120+] 492 | // Used to warm most critical cross-origin connections to provide 493 | // performance improvements when connecting to them. 494 | // [NOTE] When 0, this is limited by "network.http.speculative-parallel-limit". 495 | //user_pref("network.early-hints.preconnect.enabled", true); 496 | //user_pref("network.early-hints.preconnect.max_connections", 10); // DEFAULT 497 | 498 | // PREF: Network Predictor (NP) 499 | // When enabled, it trains and uses Firefox's algorithm to preload page resource 500 | // by tracking past page resources. It uses a local file (history) of needed images, 501 | // scripts, etc. to request them preemptively when navigating. 502 | // [NOTE] By default, it only preconnects DNS, TCP, and SSL handshakes. 503 | // No data sends until clicking. With "network.predictor.enable-prefetch" enabled, 504 | // it also performs prefetches. 505 | // [1] https://wiki.mozilla.org/Privacy/Reviews/Necko 506 | // [2] https://www.ghacks.net/2014/05/11/seer-disable-firefox/ 507 | // [3] https://github.com/dillbyrne/random-agent-spoofer/issues/238#issuecomment-110214518 508 | // [4] https://www.igvita.com/posa/high-performance-networking-in-google-chrome/#predictor 509 | user_pref("network.predictor.enabled", false); 510 | 511 | // PREF: Network Predictor fetch for resources ahead of time 512 | // Prefetch page resources based on past user behavior. 513 | //user_pref("network.predictor.enable-prefetch", false); // DEFAULT 514 | 515 | // PREF: make Network Predictor active when hovering over links 516 | // When hovering over links, Network Predictor uses past resource history to 517 | // preemptively request what will likely be needed instead of waiting for the document. 518 | // Predictive connections automatically open when hovering over links to speed up 519 | // loading, starting some work in advance. 520 | //user_pref("network.predictor.enable-hover-on-ssl", false); // DEFAULT 521 | 522 | // PREF: assign Network Predictor confidence levels 523 | // [NOTE] Keep in mind that Network Predictor must LEARN your browsing habits. 524 | // Editing these lower will cause more speculative connections to occur, 525 | // which reduces accuracy over time and has privacy implications. 526 | //user_pref("network.predictor.preresolve-min-confidence", 60); // DEFAULT 527 | //user_pref("network.predictor.preconnect-min-confidence", 90); // DEFAULT 528 | //user_pref("network.predictor.prefetch-min-confidence", 100); // DEFAULT 529 | 530 | // PREF: other Network Predictor values 531 | // [NOTE] Keep in mmind that Network Predictor must LEARN your browsing habits. 532 | //user_pref("network.predictor.prefetch-force-valid-for", 10); // DEFAULT; how long prefetched resources are considered valid and usable (in seconds) for the prediction modeling 533 | //user_pref("network.predictor.prefetch-rolling-load-count", 10); // DEFAULT; the maximum number of resources that Firefox will prefetch in memory at one time based on prediction modeling 534 | //user_pref("network.predictor.max-resources-per-entry", 250); // default=100 535 | //user_pref("network.predictor.max-uri-length", 1000); // default=500 536 | 537 | /**************************************************************************** 538 | * SECTION: EXPERIMENTAL * 539 | ****************************************************************************/ 540 | 541 | // PREF: CSS Masonry Layout [NIGHTLY] 542 | // [1] https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Masonry_Layout 543 | // [2] https://www.smashingmagazine.com/native-css-masonry-layout-css-grid/ 544 | user_pref("layout.css.grid-template-masonry-value.enabled", true); 545 | 546 | // PREF: Prioritized Task Scheduling API [NIGHTLY] 547 | // [1] https://github.com/yokoffing/Betterfox/issues/355 548 | // [2] https://blog.mozilla.org/performance/2022/06/02/prioritized-task-scheduling-api-is-prototyped-in-nightly/ 549 | // [3] https://medium.com/airbnb-engineering/building-a-faster-web-experience-with-the-posttask-scheduler-276b83454e91 550 | // [4] https://github.com/WICG/scheduling-apis/blob/main/explainers/prioritized-post-task.md 551 | // [5] https://wicg.github.io/scheduling-apis/ 552 | // [6] https://caniuse.com/mdn-api_taskcontroller 553 | //user_pref("dom.enable_web_task_scheduling", true); 554 | 555 | /**************************************************************************** 556 | * SECTION: TAB UNLOAD * 557 | ****************************************************************************/ 558 | 559 | // PREF: unload tabs on low memory 560 | // [ABOUT] about:unloads 561 | // Firefox will detect if your computer’s memory is running low (less than 200MB) 562 | // and suspend tabs that you have not used in awhile. 563 | // [1] https://support.mozilla.org/en-US/kb/unload-inactive-tabs-save-system-memory-firefox 564 | // [2] https://hacks.mozilla.org/2021/10/tab-unloading-in-firefox-93/ 565 | //user_pref("browser.tabs.unloadOnLowMemory", true); // DEFAULT 566 | 567 | // PREF: determine when tabs unload [WINDOWS] [LINUX] 568 | // Notify TabUnloader or send the memory pressure if the memory resource 569 | // notification is signaled AND the available commit space is lower than 570 | // this value (in MiB). 571 | // Set this to some value, e.g. 4/5 of total memory available on your system: 572 | // 4GB=3276, 8GB=6553, 16GB=13107, 32GB=25698, 64GB=52429 573 | // [1] https://dev.to/msugakov/taking-firefox-memory-usage-under-control-on-linux-4b02 574 | //user_pref("browser.low_commit_space_threshold_mb", 3276); // default=200; WINDOWS LINUX 575 | 576 | // PREF: determine when tabs unload [LINUX] 577 | // On Linux, Firefox checks available memory in comparison to total memory, 578 | // and use this percent value (out of 100) to determine if Firefox is in a 579 | // low memory scenario. 580 | // [1] https://dev.to/msugakov/taking-firefox-memory-usage-under-control-on-linux-4b02 581 | //user_pref("browser.low_commit_space_threshold_percent", 20); // default=5; LINUX 582 | 583 | // PREF: determine how long (in ms) tabs are inactive before they unload 584 | // 60000=1min; 300000=5min; 600000=10min (default) 585 | //user_pref("browser.tabs.min_inactive_duration_before_unload", 300000); // 5min; default=600000 586 | 587 | /**************************************************************************** 588 | * SECTION: PROCESS COUNT * 589 | ****************************************************************************/ 590 | 591 | // PREF: process count 592 | // [ABOUT] View in about:processes. 593 | // With Firefox Quantum (2017), CPU cores = processCount. However, since the 594 | // introduction of Fission [2], the number of website processes is controlled 595 | // by processCount.webIsolated. Disabling fission.autostart or changing 596 | // fission.webContentIsolationStrategy reverts control back to processCount. 597 | // [1] https://www.reddit.com/r/firefox/comments/r69j52/firefox_content_process_limit_is_gone/ 598 | // [2] https://firefox-source-docs.mozilla.org/dom/ipc/process_model.html#web-content-processes 599 | //user_pref("dom.ipc.processCount", 8); // DEFAULT; Shared Web Content 600 | //user_pref("dom.ipc.processCount.webIsolated", 1); // default=4; Isolated Web Content 601 | 602 | // PREF: use one process for process preallocation cache 603 | //user_pref("dom.ipc.processPrelaunch.fission.number", 1); // default=3; Process Preallocation Cache 604 | 605 | // PREF: configure process isolation 606 | // [1] https://hg.mozilla.org/mozilla-central/file/tip/dom/ipc/ProcessIsolation.cpp#l53 607 | // [2] https://www.reddit.com/r/firefox/comments/r69j52/firefox_content_process_limit_is_gone/ 608 | 609 | // OPTION 1: isolate all websites 610 | // Web content is always isolated into its own `webIsolated` content process 611 | // based on site-origin, and will only load in a shared `web` content process 612 | // if site-origin could not be determined. 613 | //user_pref("fission.webContentIsolationStrategy", 1); // DEFAULT 614 | //user_pref("browser.preferences.defaultPerformanceSettings.enabled", true); // DEFAULT 615 | //user_pref("dom.ipc.processCount.webIsolated", 1); // one process per site origin 616 | 617 | // OPTION 2: isolate only "high value" websites 618 | // Only isolates web content loaded by sites which are considered "high 619 | // value". A site is considered high value if it has been granted a 620 | // `highValue*` permission by the permission manager, which is done in 621 | // response to certain actions. 622 | //user_pref("fission.webContentIsolationStrategy", 2); 623 | //user_pref("browser.preferences.defaultPerformanceSettings.enabled", false); 624 | //user_pref("dom.ipc.processCount.webIsolated", 1); // one process per site origin (high value) 625 | //user_pref("dom.ipc.processCount", 8); // determine by number of CPU cores/processors 626 | 627 | // OPTION 3: do not isolate websites 628 | // All web content is loaded into a shared `web` content process. This is 629 | // similar to the non-Fission behavior; however, remote subframes may still 630 | // be used for sites with special isolation behavior, such as extension or 631 | // mozillaweb content processes. 632 | //user_pref("fission.webContentIsolationStrategy", 0); 633 | //user_pref("browser.preferences.defaultPerformanceSettings.enabled", false); 634 | //user_pref("dom.ipc.processCount", 8); // determine by number of CPU cores/processors 635 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 yokoffing 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Peskyfox.js: -------------------------------------------------------------------------------- 1 | 2 | /**************************************************************************** 3 | * Peskyfox * 4 | * "Aquila non capit muscas" * 5 | * priority: remove annoyances * 6 | * version: 137 * 7 | * url: https://github.com/yokoffing/Betterfox * 8 | * credit: Some prefs are reproduced and adapted from the arkenfox project * 9 | * credit urL: https://github.com/arkenfox/user.js * 10 | ***************************************************************************/ 11 | 12 | /**************************************************************************** 13 | * SECTION: MOZILLA UI * 14 | ****************************************************************************/ 15 | 16 | // PREF: Mozilla VPN 17 | // [1] https://github.com/yokoffing/Betterfox/issues/169 18 | user_pref("browser.privatebrowsing.vpnpromourl", ""); 19 | //user_pref("browser.vpn_promo.enabled", false); 20 | 21 | // PREF: disable about:addons' Recommendations pane (uses Google Analytics) 22 | user_pref("extensions.getAddons.showPane", false); // HIDDEN 23 | 24 | // PREF: disable recommendations in about:addons' Extensions and Themes panes 25 | user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); 26 | 27 | // PREF: Personalized Extension Recommendations in about:addons and AMO 28 | // [NOTE] This pref has no effect when Health Reports are disabled. 29 | // [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to make personalized extension recommendations 30 | user_pref("browser.discovery.enabled", false); 31 | 32 | // PREF: disable Fakespot integration [FF116+] 33 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1840156#c0 34 | // [2] https://github.com/arkenfox/user.js/issues/1730 35 | // [3] https://www.fakespot.com/ 36 | // [4] https://www.ghacks.net/2023/10/12/firefox-will-soon-tell-you-if-product-reviews-are-reliable/ 37 | //user_pref("browser.shopping.experience2023.enabled", false); // DEFAULT 38 | //user_pref("browser.shopping.experience2023.ads.exposure", false); // DEFAULT [FF121+] 39 | 40 | // PREF: disable Firefox from asking to set as the default browser 41 | // [1] https://github.com/yokoffing/Betterfox/issues/166 42 | user_pref("browser.shell.checkDefaultBrowser", false); 43 | 44 | // PREF: disable Extension Recommendations (CFR: "Contextual Feature Recommender") 45 | // [1] https://support.mozilla.org/en-US/kb/extension-recommendations 46 | user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); 47 | user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); 48 | 49 | // PREF: hide "More from Mozilla" in Settings 50 | user_pref("browser.preferences.moreFromMozilla", false); 51 | 52 | // PREF: tab and about:config warnings 53 | //user_pref("browser.tabs.warnOnClose", false); // DEFAULT [FF94+] 54 | //user_pref("browser.tabs.warnOnCloseOtherTabs", true); // DEFAULT 55 | //user_pref("browser.tabs.warnOnOpen", true); // DEFAULT 56 | user_pref("browser.aboutConfig.showWarning", false); 57 | 58 | // PREF: disable welcome notices 59 | //user_pref("browser.startup.homepage_override.mstone", "ignore"); // What's New page after updates; master switch 60 | user_pref("browser.aboutwelcome.enabled", false); // disable Intro screens 61 | //user_pref("startup.homepage_welcome_url", ""); 62 | //user_pref("startup.homepage_welcome_url.additional", ""); 63 | //user_pref("startup.homepage_override_url", ""); // What's New page after updates 64 | 65 | // PREF: disable "What's New" toolbar icon [FF69+] 66 | //user_pref("browser.messaging-system.whatsNewPanel.enabled", false); 67 | 68 | // PREF: new profile switcher 69 | user_pref("browser.profiles.enabled", true); 70 | 71 | // PREF: use native title bar buttons [LINUX] 72 | // [1] https://github.com/yokoffing/Betterfox/issues/320 73 | //user_pref("widget.gtk.non-native-titlebar-buttons.enabled", true); 74 | 75 | /**************************************************************************** 76 | * SECTION: THEME ADJUSTMENTS * 77 | ****************************************************************************/ 78 | 79 | // PREF: enable Firefox to use userChome, userContent, etc. 80 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); 81 | 82 | // PREF: add compact mode back to options 83 | user_pref("browser.compactmode.show", true); 84 | 85 | // PREF: preferred color scheme for websites 86 | // [SETTING] General>Language and Appearance>Website appearance 87 | // By default, color scheme matches the theme of your browser toolbar (3). 88 | // Set this pref to choose Dark on sites that support it (0) or Light (1). 89 | // Before FF95, the pref was 2, which determined site color based on OS theme. 90 | // Dark (0), Light (1), System (2), Browser (3) [DEFAULT FF95+] 91 | // [1] https://www.reddit.com/r/firefox/comments/rfj6yc/how_to_stop_firefoxs_dark_theme_from_overriding/hoe82i5/?context=3 92 | user_pref("layout.css.prefers-color-scheme.content-override", 2); 93 | 94 | // PREF: disable always using dark theme for private browsing windows [FF106+] 95 | //user_pref("browser.theme.dark-private-windows", false); 96 | 97 | // PREF: prevent private windows being separate from normal windows in taskbar [WINDOWS] [FF106+] 98 | user_pref("browser.privateWindowSeparation.enabled", false); 99 | 100 | // PREF: show search bar [FF122+] 101 | // Mozilla has removed the search bar option from the settings window. 102 | //user_pref("browser.search.widget.inNavBar", true); 103 | 104 | // PREF: new tab page wallpapers 105 | //user_pref("browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled", true); // [DEFAULT FF132+] 106 | 107 | /**************************************************************************** 108 | * SECTION: COOKIE BANNER HANDLING * 109 | ****************************************************************************/ 110 | 111 | // PREF: Cookie Banner handling 112 | // [DEPRECIATED] Future of the project is unclear. See [5] and [6]. 113 | // [NOTE] Feature still enforces Total Cookie Protection to limit 3rd-party cookie tracking [1] 114 | // [1] https://github.com/mozilla/cookie-banner-rules-list/issues/33#issuecomment-1318460084 115 | // [2] https://phabricator.services.mozilla.com/D153642 116 | // [3] https://winaero.com/make-firefox-automatically-click-on-reject-all-in-cookie-banner-consent/ 117 | // [4] https://docs.google.com/spreadsheets/d/1Nb4gVlGadyxix4i4FBDnOeT_eJp2Zcv69o-KfHtK-aA/edit#gid=0 118 | // [5] https://bugzilla.mozilla.org/show_bug.cgi?id=1940418 119 | // [6] https://github.com/mozilla/cookie-banner-rules-list/issues/544 120 | // 2: reject banners if it is a one-click option; otherwise, fall back to the accept button to remove banner 121 | // 1: reject banners if it is a one-click option; otherwise, keep banners on screen 122 | // 0: disable all cookie banner handling 123 | //user_pref("cookiebanners.service.mode", 1); 124 | //user_pref("cookiebanners.service.mode.privateBrowsing", 1); 125 | 126 | // PREF: Cookie Banner global rules 127 | // Global rules that can handle a list of cookie banner libraries and providers on any site. 128 | // This is used for click rules that can handle common Consent Management Providers (CMP). 129 | //user_pref("cookiebanners.service.enableGlobalRules", true); // DEFAULT [FF121+] 130 | //user_pref("cookiebanners.service.enableGlobalRules.subFrames", true); // DEFAULT [FF121+] 131 | 132 | /**************************************************************************** 133 | * SECTION: TRANSLATIONS * 134 | ****************************************************************************/ 135 | 136 | // PREF: Firefox Translations [FF118+] 137 | // Automated translation of web content is done locally in Firefox, so that 138 | // the text being translated does not leave your machine. 139 | // [ABOUT] Visit about:translations to translate your own text as well. 140 | // [1] https://blog.mozilla.org/en/mozilla/local-translation-add-on-project-bergamot/ 141 | // [2] https://blog.nightly.mozilla.org/2023/06/01/firefox-translations-and-other-innovations-these-weeks-in-firefox-issue-139/ 142 | // [3] https://www.ghacks.net/2023/08/02/mozilla-firefox-117-beta-brings-an-automatic-language-translator-for-websites-and-it-works-offline/ 143 | //user_pref("browser.translations.enable", true); // DEFAULT 144 | //user_pref("browser.translations.autoTranslate", true); 145 | 146 | /**************************************************************************** 147 | * SECTION: FULLSCREEN NOTICE * 148 | ****************************************************************************/ 149 | 150 | // PREF: remove fullscreen delay 151 | user_pref("full-screen-api.transition-duration.enter", "0 0"); // default=200 200 152 | user_pref("full-screen-api.transition-duration.leave", "0 0"); // default=200 200 153 | 154 | // PREF: disable fullscreen notice 155 | user_pref("full-screen-api.warning.delay", -1); // default=500 156 | user_pref("full-screen-api.warning.timeout", 0); // default=3000 157 | 158 | /**************************************************************************** 159 | * SECTION: FONT APPEARANCE * 160 | ****************************************************************************/ 161 | 162 | // PREF: smoother font 163 | // [1] https://reddit.com/r/firefox/comments/wvs04y/windows_11_firefox_v104_font_rendering_different/?context=3 164 | //user_pref("gfx.webrender.quality.force-subpixel-aa-where-possible", true); 165 | 166 | // PREF: use DirectWrite everywhere like Chrome [WINDOWS] 167 | // [1] https://kb.mozillazine.org/Thunderbird_6.0,_etc.#Font_rendering_and_performance_issues 168 | // [2] https://reddit.com/r/firefox/comments/wvs04y/comment/ilklzy1/?context=3 169 | //user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5); 170 | //user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 100); 171 | //user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", ""); // DEFAULT FF135+ 172 | //user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); 173 | // Some users find these helpful: 174 | //user_pref("gfx.font_rendering.cleartype_params.gamma", 1750); 175 | //user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100); 176 | //user_pref("gfx.font_rendering.cleartype_params.pixel_structure", 1); 177 | 178 | // PREF: use macOS Appearance Panel text smoothing setting when rendering text [macOS] 179 | //user_pref("gfx.use_text_smoothing_setting", true); 180 | 181 | /**************************************************************************** 182 | * SECTION: URL BAR * 183 | ****************************************************************************/ 184 | 185 | // PREF: minimize URL bar suggestions (bookmarks, history, open tabs) 186 | // Dropdown options in the URL bar: 187 | //user_pref("browser.urlbar.suggest.history", false); 188 | //user_pref("browser.urlbar.suggest.bookmark", true); // DEFAULT 189 | //user_pref("browser.urlbar.suggest.clipboard", false); 190 | //user_pref("browser.urlbar.suggest.openpage", false); 191 | user_pref("browser.urlbar.suggest.engines", false); 192 | //user_pref("browser.urlbar.suggest.searches", false); 193 | //user_pref("browser.urlbar.quickactions.enabled", false); 194 | //user_pref("browser.urlbar.shortcuts.quickactions", false); 195 | //user_pref("browser.urlbar.suggest.weather", true); // DEFAULT [FF108] 196 | //user_pref("browser.urlbar.weather.ignoreVPN", false); // DEFAULT 197 | //user_pref("browser.urlbar.suggest.calculator", true); // [DEFAULT FF137+] 198 | user_pref("browser.urlbar.unitConversion.enabled", true); 199 | 200 | // PREF: disable dropdown suggestions with empty query 201 | //user_pref("browser.urlbar.suggest.topsites", false); 202 | 203 | // PREF: disable urlbar trending search suggestions [FF118+] 204 | // [SETTING] Search>Search Suggestions>Show trending search suggestions (FF119) 205 | user_pref("browser.urlbar.trending.featureGate", false); 206 | //user_pref("browser.urlbar.suggest.trending", false); 207 | 208 | // PREF: disable urlbar suggestions 209 | //user_pref("browser.urlbar.addons.featureGate", false); // [FF115+] 210 | //user_pref("browser.urlbar.fakespot.featureGate", false); // [FF130+] [DEFAULT: false] 211 | //user_pref("browser.urlbar.mdn.featureGate", false); // [FF117+] [HIDDEN PREF] 212 | //user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false] 213 | //user_pref("browser.urlbar.weather.featureGate", false); // [FF108+] [DEFAULT: false] 214 | //user_pref("browser.urlbar.clipboard.featureGate", false); // [FF118+] [DEFAULT: true FF125+] 215 | //user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+] [DEFAULT: false] 216 | 217 | // PREF: disable recent searches [FF120+] 218 | // [NOTE] Recent searches are cleared with history. 219 | // [1] https://support.mozilla.org/kb/search-suggestions-firefox 220 | //user_pref("browser.urlbar.recentsearches.featureGate", false); 221 | 222 | // PREF: disable tab-to-search [FF85+] 223 | // Alternatively, you can exclude on a per-engine basis by unchecking them in Options>Search 224 | // [SETTING] Privacy & Security>Address Bar>When using the address bar, suggest>Search engines 225 | //user_pref("browser.urlbar.suggest.engines", false); 226 | 227 | // PREF: Adaptive History Autofill 228 | // [1] https://docs.google.com/document/u/1/d/e/2PACX-1vRBLr_2dxus-aYhZRUkW9Q3B1K0uC-a0qQyE3kQDTU3pcNpDHb36-Pfo9fbETk89e7Jz4nkrqwRhi4j/pub 229 | //user_pref("browser.urlbar.autoFill", true); // [DEFAULT] 230 | //user_pref("browser.urlbar.autoFill.adaptiveHistory.enabled", false); 231 | 232 | // PREF: adjust the amount of Address bar / URL bar dropdown results 233 | // This value controls the total number of entries to appear in the location bar dropdown. 234 | // [NOTE] Items (bookmarks/history/openpages) with a high "frequency"/"bonus" will always 235 | // be displayed (no we do not know how these are calculated or what the threshold is), 236 | // and this does not affect the search by search engine suggestion. 237 | // disable=0 238 | //user_pref("browser.urlbar.maxRichResults", 5); // default=10 239 | 240 | // PREF: text fragments 241 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1753933#c6 242 | // [2] https://developer.mozilla.org/en-US/docs/Web/Text_fragments 243 | // [3] https://web.dev/articles/text-fragments 244 | //user_pref("dom.text_fragments.enabled", true); // [DEFAULT] 245 | user_pref("dom.text_fragments.create_text_fragment.enabled", true); 246 | 247 | /**************************************************************************** 248 | * SECTION: AUTOPLAY * 249 | ****************************************************************************/ 250 | 251 | // PREF: do not autoplay media audio 252 | // [NOTE] You can set exceptions under site permissions 253 | // [SETTING] Privacy & Security>Permissions>Autoplay>Settings>Default for all websites 254 | // 0=Allow all, 1=Block non-muted media (default), 5=Block all 255 | //user_pref("media.autoplay.default", 1); // DEFAULT 256 | //user_pref("media.block-autoplay-until-in-foreground", true); // DEFAULT 257 | 258 | // PREF: disable autoplay of HTML5 media if you interacted with the site [FF78+] 259 | // 0=sticky (default), 1=transient, 2=user 260 | // Firefox's Autoplay Policy Documentation (PDF) is linked below via SUMO 261 | // [NOTE] If you have trouble with some video sites (e.g. YouTube), then add an exception (see previous PREF) 262 | // [1] https://support.mozilla.org/questions/1293231 263 | //user_pref("media.autoplay.blocking_policy", 2); 264 | 265 | /**************************************************************************** 266 | * SECTION: NEW TAB PAGE * 267 | ****************************************************************************/ 268 | 269 | // PREF: startup / new tab page 270 | // 0=blank, 1=home, 2=last visited page, 3=resume previous session 271 | // [NOTE] Session Restore is cleared with history and not used in Private Browsing mode 272 | // [SETTING] General>Startup>Open previous windows and tabs 273 | //user_pref("browser.startup.page", 3); 274 | 275 | // PREF: set HOME+NEW WINDOW page to blank tab 276 | // about:home=Activity Stream, custom URL, about:blank 277 | // [SETTING] Home>New Windows and Tabs>Homepage and new windows 278 | // [Custom URLs] Set two or more websites in Home Page Field – delimited by | 279 | // [1] https://support.mozilla.org/en-US/questions/1271888#answer-1262899 280 | //user_pref("browser.startup.homepage", "about:blank"); 281 | 282 | // PREF: set NEWTAB page to blank tab 283 | // true=Firefox Home, false=blank page 284 | // [SETTING] Home>New Windows and Tabs>New tabs 285 | //user_pref("browser.newtabpage.enabled", false); 286 | 287 | // PREF: Pinned Shortcuts on New Tab 288 | // [SETTINGS] Home>Firefox Home Content 289 | // [1] https://github.com/arkenfox/user.js/issues/1556 290 | //user_pref("browser.newtabpage.activity-stream.discoverystream.enabled", false); 291 | //user_pref("browser.newtabpage.activity-stream.showSearch", true); // NTP Web Search [DEFAULT] 292 | //user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); // Shortcuts 293 | user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // Shortcuts > Sponsored shortcuts [FF83+] 294 | //user_pref("browser.newtabpage.activity-stream.showWeather", false); // Weather [FF130+] 295 | //user_pref("browser.newtabpage.activity-stream.system.showWeather", false); // hides Weather as an UI option 296 | user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); // Recommended by Pocket 297 | user_pref("browser.newtabpage.activity-stream.showSponsored", false); // Sponsored Stories [FF58+] 298 | //user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false); // Recent Activity [DEFAULT] 299 | //user_pref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", false); 300 | //user_pref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false); 301 | //user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); 302 | //user_pref("browser.newtabpage.activity-stream.section.highlights.includeVisited", false); 303 | //user_pref("browser.newtabpage.activity-stream.feeds.snippets", false); // [DEFAULT] 304 | 305 | // PREF: wallpapers on New Tab [FF128+ NIGHTLY] 306 | //user_pref("browser.newtabpage.activity-stream.newtabWallpapers.enabled", false); // Wallpapers 307 | 308 | // PREF: clear default topsites 309 | // [NOTE] This does not block you from adding your own. 310 | user_pref("browser.newtabpage.activity-stream.default.sites", ""); 311 | 312 | // PREF: keep search in the search box; prevent from jumping to address bar 313 | // [1] https://www.reddit.com/r/firefox/comments/oxwvbo/firefox_start_page_search_options/ 314 | //user_pref("browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar", false); 315 | 316 | // PREF: Firefox logo to always show 317 | //user_pref("browser.newtabpage.activity-stream.logowordmark.alwaysVisible", true); // DEFAULT 318 | 319 | // PREF: Bookmarks Toolbar visibility 320 | // always, never, or newtab 321 | //user_pref("browser.toolbars.bookmarks.visibility", "newtab"); // DEFAULT 322 | 323 | /****************************************************************************** 324 | * SECTION: POCKET * 325 | ******************************************************************************/ 326 | 327 | // PREF: Disable built-in Pocket extension 328 | user_pref("extensions.pocket.enabled", false); 329 | //user_pref("extensions.pocket.api"," "); 330 | //user_pref("extensions.pocket.oAuthConsumerKey", " "); 331 | //user_pref("extensions.pocket.site", " "); 332 | //user_pref("extensions.pocket.showHome", false); 333 | 334 | /****************************************************************************** 335 | * SECTION: DOWNLOADS * 336 | ******************************************************************************/ 337 | 338 | // PREF: choose download location 339 | // [SETTING] To set your default "downloads": General>Downloads>Save files to... 340 | // 0=desktop, 1=downloads (default), 2=last used 341 | //user_pref("browser.download.folderList", 1); // DEFAULT 342 | 343 | // PREF: always ask how to handle new mimetypes [FF101+] 344 | // Enforce user interaction for greater security. 345 | // [SETTING] General>Files and Applications>Applications>What should Firefox do with other files? 346 | // false=Save files 347 | // true=Ask whether to open or save files 348 | //user_pref("browser.download.always_ask_before_handling_new_types", true); 349 | 350 | // PREF: always ask where to download 351 | // [OPTIONAL HARDENING] Enforce user interaction for greater security. 352 | // [SETTING] General>Files and Applications>Downloads>Always ask you where to save files 353 | // [DIALOGUE] "Ask whether to open or save files" 354 | // true=direct download (default) 355 | // false=the user is asked what to do 356 | // [1] https://github.com/yokoffing/Betterfox/issues/267 357 | //user_pref("browser.download.useDownloadDir", false); 358 | //user_pref("browser.download.dir", "C:\Users\\AppData\Local\Temp"); // [WINDOWS] 359 | 360 | // PREF: autohide the downloads button 361 | //user_pref("browser.download.autohideButton", true); // DEFAULT 362 | 363 | // PREF: disable download panel opening on every download [non-functional?] 364 | // Controls whether to open the download panel every time a download begins. 365 | // [NOTE] The first download ever ran in a new profile will still open the panel. 366 | //user_pref("browser.download.alwaysOpenPanel", false); 367 | 368 | // PREF: disable adding downloads to the system's "recent documents" list 369 | user_pref("browser.download.manager.addToRecentDocs", false); 370 | 371 | /**************************************************************************** 372 | * SECTION: PDF * 373 | ****************************************************************************/ 374 | 375 | // PREF: enforce Firefox's built-in PDF reader 376 | // This setting controls if the option "Display in Firefox" is available in the setting below 377 | // and by effect controls whether PDFs are handled in-browser or externally ("Ask" or "Open With"). 378 | // [1] https://mozilla.github.io/pdf.js/ 379 | //user_pref("pdfjs.disabled", false); // DEFAULT 380 | 381 | // PREF: allow viewing of PDFs even if the response HTTP headers 382 | // include Content-Disposition:attachment. 383 | //user_pref("browser.helperApps.showOpenOptionForPdfJS", true); // DEFAULT 384 | 385 | // PREF: open PDFs inline (FF103+) 386 | user_pref("browser.download.open_pdf_attachments_inline", true); 387 | 388 | // PREF: PDF sidebar on load 389 | // 2=table of contents (if not available, will default to 1) 390 | // 1=view pages 391 | // 0=disabled 392 | // -1=remember previous state (default) 393 | //user_pref("pdfjs.sidebarViewOnLoad", 2); 394 | 395 | // PREF: default zoom for PDFs [HIDDEN] 396 | // [NOTE] "page-width" not needed if using sidebar on load 397 | //user_pref("pdfjs.defaultZoomValue", page-width); 398 | 399 | /**************************************************************************** 400 | * SECTION: TAB BEHAVIOR * 401 | ****************************************************************************/ 402 | 403 | // PREF: search query opens in a new tab (instead of the current tab) 404 | //user_pref("browser.search.openintab", true); // SEARCH BOX 405 | //user_pref("browser.urlbar.openintab", true); // URL BAR 406 | 407 | // PREF: control behavior of links that would normally open in a new window 408 | // [NOTE] You can still right-click a link and open in a new window 409 | // 3 (default) = in a new tab; pop-up windows are treated like regular tabs 410 | // 2 = in a new window 411 | // 1 = in the current tab 412 | //user_pref("browser.link.open_newwindow", 3); // DEFAULT 413 | 414 | // PREF: determine the behavior of pages opened by JavaScript (like popups) 415 | // 2 (default) = catch new windows opened by JavaScript that do not have 416 | // specific values set (how large the window should be, whether it 417 | // should have a status bar, etc.) 418 | // 1 = let all windows opened by JavaScript open in new windows 419 | // 0 = force all new windows opened by JavaScript into tabs 420 | // [NOTE] Most advertising popups also open in new windows with values set 421 | // [1] https://kb.mozillazine.org/About:config_entries 422 | //user_pref("browser.link.open_newwindow.restriction", 0); 423 | 424 | // PREF: override for external links 425 | // Set if a different destination for external links is needed 426 | // 3=Open in a new tab in the current window 427 | // 2=Open in a new window 428 | // 1=Open in the current tab/window 429 | // -1=no overrides (default) 430 | //user_pref("browser.link.open_newwindow.override.external", -1); // DEFAULT 431 | 432 | // PREF: focus behavior for new tabs from links 433 | // Determine whether a link opens in the foreground or background on left-click 434 | // [SETTINGS] Settings>General>Tabs>"When you open a link, image or media in a new tab, switch to it immediately" 435 | // true(default) = opens new tabs by left-click in the background, leaving focus on the current tab 436 | // false = opens new tabs by left-click in the foreground, putting focus on the new tab 437 | // [NOTE] CTRL+SHIFT+CLICK will open new tabs in foreground (default); switching PREF to false will reverse this behavior 438 | // [1] https://kb.mozillazine.org/About:config_entries 439 | //user_pref("browser.tabs.loadInBackground", true); // DEFAULT 440 | 441 | // PREF: determines whether pages normally meant to open in a new window (such as 442 | // target="_blank" or from an external program), but that have instead been loaded in a new tab 443 | // This pref takes effect when Firefox has diverted a new window to a new tab instead, then: 444 | // true = loads the new tab in the background, leaving focus on the current tab 445 | // false(default) = loads the new tab in the foreground, taking the focus from the current tab 446 | // [NOTE] Setting this preference to true will still bring the browser to the front when opening links from outside the browser 447 | // [1] https://kb.mozillazine.org/About:config_entries 448 | //user_pref("browser.tabs.loadDivertedInBackground", false); // DEFAULT 449 | 450 | // PREF: force bookmarks to open in a new tab, not the current tab 451 | //user_pref("browser.tabs.loadBookmarksInTabs", true); 452 | //user_pref("browser.tabs.loadBookmarksInBackground", true); // load bookmarks in background 453 | 454 | // PREF: leave Bookmarks Menu open when selecting a site 455 | user_pref("browser.bookmarks.openInTabClosesMenu", false); 456 | 457 | // PREF: restore "View image info" on right-click 458 | user_pref("browser.menu.showViewImageInfo", true); 459 | 460 | // PREF: show all matches in Findbar 461 | user_pref("findbar.highlightAll", true); 462 | 463 | // PREF: force disable finding text on page without prompting 464 | // [NOTE] Not as powerful as using Ctrl+F. 465 | // [SETTINGS] General>Browsing>"Search for text when you start typing" 466 | // [1] https://github.com/yokoffing/Betterfox/issues/212 467 | //user_pref("accessibility.typeaheadfind", false); // enforce DEFAULT 468 | 469 | // PREF: disable middle mouse click opening links from clipboard 470 | // It's been default in Linux since at least FF102. 471 | // [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/10089 472 | //user_pref("middlemouse.contentLoadURL", false); 473 | 474 | // PREF: Prevent scripts from moving and resizing open windows 475 | //user_pref("dom.disable_window_move_resize", true); 476 | 477 | // PREF: insert new tabs after groups like it 478 | // true(default) = open new tabs to the right of the parent tab 479 | // false = new tabs are opened at the far right of the tab bar 480 | //user_pref("browser.tabs.insertRelatedAfterCurrent", true); // DEFAULT 481 | 482 | // PREF: insert new tabs immediately after the current tab 483 | //user_pref("browser.tabs.insertAfterCurrent", true); 484 | 485 | // PREF: leave the browser window open even after you close the last tab 486 | //user_pref("browser.tabs.closeWindowWithLastTab", false); 487 | 488 | // PREF: stop websites from reloading pages automatically 489 | // [WARNING] Breaks some sites. 490 | // [1] https://www.ghacks.net/2018/08/19/stop-websites-from-reloading-pages-automatically/ 491 | //user_pref("accessibility.blockautorefresh", true); 492 | //user_pref("browser.meta_refresh_when_inactive.disabled", true); 493 | 494 | // PREF: do not select the space next to a word when selecting a word 495 | user_pref("layout.word_select.eat_space_to_next_word", false); 496 | 497 | // PREF: controls if a double-click word selection also deletes one adjacent whitespace 498 | // This mimics native behavior on macOS. 499 | //user_pref("editor.word_select.delete_space_after_doubleclick_selection", true); 500 | 501 | // PREF: do not hide the pointer while typing [LINUX] 502 | //user_pref("widget.gtk.hide-pointer-while-typing.enabled", false); 503 | 504 | // PREF: limit events that can cause a pop-up 505 | // Firefox provides an option to provide exceptions for sites, remembered in your Site Settings. 506 | // (default) "change click dblclick auxclick mouseup pointerup notificationclick reset submit touchend contextmenu" 507 | // (alternate) user_pref("dom.popup_allowed_events", "click dblclick mousedown pointerdown"); 508 | //user_pref("dom.popup_allowed_events", "click dblclick"); 509 | //user_pref("dom.disable_open_during_load", true); // DEFAULT 510 | //user_pref("privacy.popups.showBrowserMessage", true); // DEFAULT 511 | 512 | // PREF: enable Tab Previews [FF122+, FF128+] 513 | // [1] https://github.com/yokoffing/Betterfox/issues/309 514 | //user_pref("browser.tabs.hoverPreview.enabled", true); 515 | //user_pref("browser.tabs.hoverPreview.showThumbnails", true); // DEFAULT 516 | 517 | /**************************************************************************** 518 | * SECTION: KEYBOARD AND SHORTCUTS * 519 | ****************************************************************************/ 520 | 521 | // PREF: disable backspace action 522 | // 0=previous page, 1=scroll up, 2=do nothing 523 | //user_pref("browser.backspace_action", 2); // DEFAULT 524 | 525 | // PREF: disable ALT key toggling the menu bar 526 | //user_pref("ui.key.menuAccessKeyFocuses", false); 527 | //user_pref("ui.key.menuAccessKey", 18); // DEFAULT 528 | 529 | // PREF: cycle through tabs in recently used order 530 | // [SETTING] Ctrl+Tab cycles through tabs in recently used order 531 | //user_pref("browser.ctrlTab.sortByRecentlyUsed", true); 532 | 533 | // PREF: disable websites overriding Firefox's keyboard shortcuts [FF58+] 534 | // 0=ask (default), 1=allow, 2=block 535 | // [SETTING] to add site exceptions: Ctrl+I>Permissions>Override Keyboard Shortcuts ***/ 536 | //user_pref("permissions.default.shortcuts", 2); 537 | 538 | // PREF: hide frequent sites on right-click of taskbar icon [WINDOWS?] 539 | //user_pref("browser.taskbar.lists.frequent.enabled", false); 540 | 541 | /**************************************************************************** 542 | * SECTION: ACCESSIBILITY AND USABILITY * 543 | ****************************************************************************/ 544 | 545 | // PREF: disable Reader mode parse on load 546 | // Reader supposedly costs extra CPU after page load. 547 | // [TIP] Use about:reader?url=%s as a keyword to open links automatically in reader mode [1]. 548 | // Firefox will not have to parse webpage for Reader when navigating. 549 | // Extremely minimal performance impact, if you disable. 550 | // [1] https://www.reddit.com/r/firefox/comments/621sr2/i_found_out_how_to_automatically_open_a_url_in/ 551 | //user_pref("reader.parse-on-load.enabled", false); 552 | 553 | // PREF: Spell-check 554 | // 0=none, 1-multi-line, 2=multi-line & single-line 555 | //user_pref("layout.spellcheckDefault", 1); // DEFAULT 556 | 557 | // PREF: Spell Checker underline styles [HIDDEN] 558 | // [1] https://kb.mozillazine.org/Ui.SpellCheckerUnderlineStyle#Possible_values_and_their_effects 559 | //user_pref("ui.SpellCheckerUnderlineStyle", 1); 560 | 561 | // PREF: remove underlined characters from various settings 562 | //user_pref("ui.key.menuAccessKey", 0); 563 | 564 | // PREF: enable CSS moz document rules 565 | // Still needed for Stylus? 566 | // [1] https://reddit.com/r/FirefoxCSS/comments/8x2q97/reenabling_mozdocument_rules_in_firefox_61/ 567 | //user_pref("layout.css.moz-document.content.enabled", true); 568 | 569 | /**************************************************************************** 570 | * SECTION: BOOKMARK MANAGEMENT * 571 | ****************************************************************************/ 572 | 573 | // PREF: limit the number of bookmark backups Firefox keeps 574 | //user_pref("browser.bookmarks.max_backups", 1); // default=15 575 | 576 | /**************************************************************************** 577 | * SECTION: ZOOM AND DISPLAY SETTINGS * 578 | ****************************************************************************/ 579 | 580 | // PREF: zoom only text on webpage, not other elements 581 | //user_pref("browser.zoom.full", false); 582 | 583 | // PREF: allow for more granular control of zoom levels 584 | // Especially useful if you want to set your default zoom to a custom level. 585 | //user_pref("toolkit.zoomManager.zoomValues", ".3,.5,.67,.8,.9,.95,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,2,2.4,3"); 586 | 587 | // PREF: restore zooming behavior [macOS] [FF109+] 588 | // On macOS, Ctrl or Cmd + trackpad or mouse wheel now scrolls the page instead of zooming. 589 | // This avoids accidental zooming and matches Safari's and Chrome's behavior. 590 | // The prefs below restores the previous zooming behavior 591 | //user_pref("mousewheel.with_control.action", 3); 592 | //user_pref("mousewheel.with_meta.action", 3); 593 | 594 | // PREF: adjust the minimum tab width 595 | // Can be overridden by userChrome.css 596 | //user_pref("browser.tabs.tabMinWidth", 120); // default=76 597 | 598 | // PREF: always underline links [FF120+] 599 | //user_pref("layout.css.always_underline_links", false); // DEFAULT 600 | 601 | /**************************************************************************** 602 | * SECTION: DEVELOPER TOOLS * 603 | ****************************************************************************/ 604 | 605 | // PREF: wrap long lines of text when using source / debugger 606 | //user_pref("view_source.wrap_long_lines", true); 607 | //user_pref("devtools.debugger.ui.editor-wrapping", true); 608 | 609 | // PREF: enable ASRouter Devtools at about:newtab#devtools 610 | // This is useful if you're making your own CSS theme. 611 | // [1] https://firefox-source-docs.mozilla.org/browser/components/newtab/content-src/asrouter/docs/debugging-docs.html 612 | //user_pref("browser.newtabpage.activity-stream.asrouter.devtoolsEnabled", true); 613 | 614 | // show user agent styles in the inspector 615 | //user_pref("devtools.inspector.showUserAgentStyles", true); 616 | 617 | // show native anonymous content (like scrollbars or tooltips) and user 618 | // agent shadow roots (like the components of an element) in the inspector 619 | //user_pref("devtools.inspector.showAllAnonymousContent", true); 620 | 621 | /**************************************************************************** 622 | * SECTION: IMAGE AND MEDIA HANDLING * 623 | ****************************************************************************/ 624 | 625 | // PREF: JPEG XL image format [NIGHTLY] 626 | // May not affect anything on ESR/Stable channel [2]. 627 | // [TEST] https://www.jpegxl.io/firefox#firefox-jpegxl-tutorial 628 | // [1] https://cloudinary.com/blog/the-case-for-jpeg-xl 629 | // [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1539075#c51 630 | //user_pref("image.jxl.enabled", true); 631 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![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) 2 | 3 | # Betterfox 4 | [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/). 5 | 6 | ## Made for everyday browsing 7 | [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. 8 | 9 | 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). 10 | 11 | ## Required reading 12 | 0) Create a [backup profile](https://github.com/yokoffing/Betterfox/wiki/Backup). 13 | 1) Download the user.js file [here](https://raw.githubusercontent.com/yokoffing/Betterfox/main/user.js) (Right click > `Save Link As…`). 14 | 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. 15 | 3) Open Firefox. In the URL bar, type `about:profiles` and press **Enter**. 16 | 4) For the profile you want to use, click **Open Folder** in the **Root Directory** section. 17 | 5) Move the `user.js` file into the folder. 18 | 19 | *After restarting Firefox:* 20 | 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). 21 | 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. 22 | 23 | ## Simple goals 24 | 1) **Minimalism:** get what isn't needed out of the way 25 | 2) **Efficiency:** unleash Firefox's ability to be fast and performant 26 | 3) **Privacy:** protect your data without causing site breakage 27 | 28 | ## Simple configs 29 | 30 | `Fastfox`, `Securefox`, `Peskyfox`, and `Smoothfox` are guides to settings within Firefox. 31 | 32 | The `user.js` — a configuration file that controls Firefox settings — is curated from these guides. 33 | 34 | | List | Description | 35 | |:---------:|-------------| 36 | | [Fastfox](https://github.com/yokoffing/Betterfox/blob/main/Fastfox.js) | Increase Firefox's browsing speed. Give Chrome a run for its money!| 37 | | [Securefox](https://github.com/yokoffing/Betterfox/blob/main/Securefox.js) | Protect user data without causing site breakage. | 38 | | [Peskyfox](https://github.com/yokoffing/Betterfox/blob/main/Peskyfox.js) | Provide a clean, distraction-free browsing experience. | 39 | | [Smoothfox](https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js) | Get Edge-like smooth scrolling on your favorite browser — or choose something more your style. | 40 | | [user.js](https://github.com/yokoffing/Betterfox/blob/main/user.js) | All the essentials. None of the breakage. This is your `user.js`. | 41 | 42 | ## Recognition 43 | 44 | ### Browser Integration 45 | > [!IMPORTANT] 46 | > 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. 47 | 48 | * [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) 49 | * [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?) 50 | * [Mercury](https://github.com/Alex313031/Mercury/releases/tag/v.115.3.0) | [files](https://github.com/Alex313031/Mercury/commit/eb9600f9fb8f48c8f5b5c6f3264fbcdb5caff7f5) (Sep 2023) 51 | * [Waterfox](https://www.waterfox.net/docs/releases/G6.0/) | [files](https://github.com/WaterfoxCo/Waterfox/tree/current/waterfox/browser/app/profile) (Sep 2023) 52 | * [Floorp](https://github.com/Floorp-Projects/Floorp#-betterfox) [1](https://github.com/Floorp-Projects/Floorp/issues/233#issuecomment-1543557167) [2](https://blog.ablaze.one/3135/2023-04-01/) | [files](https://github.com/Floorp-Projects/Floorp/blob/ESR115/floorp/browser/components/preferences/userjs.inc.xhtml) (Apr 2023) 53 | * [Pulse](https://github.com/pulse-browser/browser#%EF%B8%8F-credits) | [files](https://github.com/pulse-browser/browser/tree/alpha/src/browser/app/profile) (Dec 2021) 54 | * [Ghostery Private Browser](https://github.com/ghostery/user-agent-desktop#community) [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/) | [files](https://github.com/ghostery/user-agent-desktop/tree/main/brands/ghostery/branding/pref) (Feb 2021) 55 | 56 | ### YouTube 57 | * [A Better Firefox](https://youtu.be/JuHIwCFx34Q?si=1dx39t3HX5kzNVj-&t=133) (Mar 2025) 58 | * [Ditch Chrome for One Of These BETTER BROWSERS!](https://youtu.be/ygkxFc8SZlc?si=m5NQe-b_oFXs5crb&t=230) (Aug 2024) 59 | * [The ULTIMATE Browser Tier List](https://youtu.be/j5r6jFE8gic?t=560) (Mar 2023) 60 | * [I Hate Firefox. But I'm Still Switching Back to It.](https://youtu.be/w0SJFED5xK0?t=220) (Nov 2022) 61 | * [Español] [Optimize and Accelerate Firefox](https://www.youtube.com/watch?v=3XtoONmq5_Q) (Nov 2022) 62 | * [How To Improve Firefox Performance](https://www.youtube.com/watch?v=N8IOJiOFVEk) (Dec 2021) 63 | 64 | ### Podcasts 65 | * [Italian] [Digitalia.fm](https://digitalia.fm/684/) | 1:41:35–1:42:41 (July 2023) 66 | * [GhoSTORIES with Franz & Pete](https://anchor.fm/ghostories/episodes/S2E6-We-Talking-Ghostery-Dawn----Again-er0q02/a-a4o5vmh) | 17:05–18:40 (Feb 2021) 67 | 68 | ### Articles 69 | * [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) 70 | * [Browsers for Daily Use](https://anhkhoakz.neocities.org/blog/browsers-for-daily-using/#firefox-but-hardened) (Jan 2024) 71 | * [Avoiding Manifest V3 – Escaping the Ad-Pocalypse](https://www.xbitlabs.com/avoiding-manifest-v3/) (Dec 2023) 72 | * [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) 73 | * [2023 Browser Showdown: Comparing Chrome, Brave, Firefox, Vivaldi, and Opera](https://www.appdate.lk/technology/2023-browser-showdown/) (Jan 2023) 74 | 75 | ### Guides 76 | * [FMHY Browser Tools: Privacy Tweaks](https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/storage/#wiki_privacy_based_browsers) 77 | * [Firefox-UI-Fix](https://github.com/black7375/Firefox-UI-Fix/wiki/Tips#privacy) 78 | * [Narsil/desktop_user.js](https://git.nixnet.services/Narsil/desktop_user.js#thanks) 79 | * [pyllyukko/user.js](https://github.com/pyllyukko/user.js) [comparator](https://jm42.github.io/compare-user.js/) 80 | 81 | ### Reviews 82 | * “I use this one ... The performance is absolutely amazing. There’s definitely a huge difference when it comes to loading sites.” - [DIRIKtv](https://youtu.be/N8IOJiOFVEk?t=16) 83 | * "BetterFox ... will provide good-enough privacy and help with performance." - [Qdoit12Super](https://old.reddit.com/r/browsers/comments/139h4my/suggestion_for_finding_3_good_privacy_focus/jj3n3qn/?context=2) 84 | * "...drastically changed the experience with Firefox for me. Improved speed, security, smoothness, and removed clutter." - [AppDate](https://www.appdate.lk/technology/2023-browser-showdown/#:~:text=Used%20the%20BetterFox%20user%20config%20settings%20with%20some%20overrides%20which%20drastically%20changed%20the%20experience) 85 | * "Firefox with uBlock Origin extension and tuned with Betterfox is faster than Safari." - [cugeloid](https://elephas.app/blog/best-browsers-mac#what-is-the-best-browser-for-mac-according-to-redditandnbsp) 86 | * "I don't think I could use Firefox without Betterfox." - [Professional_Fun4616](https://old.reddit.com/r/nextdns/comments/15y815f/the_people_behind_betterfox_have_this_awesome/jxb7cir/?context=3) 87 | * "The best collection of tweaks available." - [AuRiMaS](https://old.reddit.com/r/MozillaFirefox/comments/15cc1vk/about_changes_in_aboutconfig/jtyx910/?context=3) 88 | * "FF is now much snappier!" - [whotheff](https://old.reddit.com/r/firefox/comments/z5auzi/firefox_not_properly_usingrecognizing_gpu_poor/iy36hyz/) 89 | * "...the experience is so good now I don’t think I’ll go back to any of the chromium based browsers." - [Mr_Compromise](https://old.reddit.com/r/pcmasterrace/comments/zwioe1/what_browser_will_you_be_using_in_2023_please/j1wmbxo/) 90 | 91 | ## Support 92 | 93 | If you like the project, leave a :star: (top right) and become a [stargazer](https://github.com/yokoffing/Betterfox/stargazers)! 94 | 95 | [![Stargazers repo roster for @yokoffing/Betterfox](https://reporoster.com/stars/dark/yokoffing/Betterfox)](https://github.com/yokoffing/Betterfox/stargazers) 96 | 97 | Buy Me a Coffee at ko-fi.com 98 | 99 | 100 | ## Credit 101 | * 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. 102 | * 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. 103 | * 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. 104 | * A special thanks to [Alex Kontos](https://github.com/MrAlex94) of [Waterfox](https://github.com/WaterfoxCo/Waterfox) for his collaboration in v.116. 105 | * Many thanks to the 2021 [Ghostery](https://github.com/ghostery) team for testing Betterfox at scale in its early days. 106 | 107 |
108 | Free Website Counter
109 | since 23 July 2022
110 | -------------------------------------------------------------------------------- /Smoothfox.js: -------------------------------------------------------------------------------- 1 | 2 | /**************************************************************************************** 3 | * Smoothfox * 4 | * "Faber est suae quisque fortunae" * 5 | * priority: better scrolling * 6 | * version: 137 * 7 | * url: https://github.com/yokoffing/Betterfox * 8 | ***************************************************************************************/ 9 | 10 | // Use only one option at a time! 11 | // Reset prefs if you decide to use different option. 12 | 13 | /**************************************************************************************** 14 | * OPTION: SHARPEN SCROLLING * 15 | ****************************************************************************************/ 16 | // credit: https://github.com/black7375/Firefox-UI-Fix 17 | // only sharpen scrolling 18 | user_pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX 19 | user_pref("general.smoothScroll", true); // DEFAULT 20 | user_pref("mousewheel.min_line_scroll_amount", 10); // adjust this number to your liking; default=5 21 | user_pref("general.smoothScroll.mouseWheel.durationMinMS", 80); // default=50 22 | user_pref("general.smoothScroll.currentVelocityWeighting", "0.15"); // default=.25 23 | user_pref("general.smoothScroll.stopDecelerationWeighting", "0.6"); // default=.4 24 | // Firefox Nightly only: 25 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1846935 26 | user_pref("general.smoothScroll.msdPhysics.enabled", false); // [FF122+ Nightly] 27 | 28 | /**************************************************************************************** 29 | * OPTION: INSTANT SCROLLING (SIMPLE ADJUSTMENT) * 30 | ****************************************************************************************/ 31 | // recommended for 60hz+ displays 32 | user_pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX 33 | user_pref("general.smoothScroll", true); // DEFAULT 34 | user_pref("mousewheel.default.delta_multiplier_y", 275); // 250-400; adjust this number to your liking 35 | // Firefox Nightly only: 36 | // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1846935 37 | user_pref("general.smoothScroll.msdPhysics.enabled", false); // [FF122+ Nightly] 38 | 39 | /**************************************************************************************** 40 | * OPTION: SMOOTH SCROLLING * 41 | ****************************************************************************************/ 42 | // recommended for 90hz+ displays 43 | user_pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX 44 | user_pref("general.smoothScroll", true); // DEFAULT 45 | user_pref("general.smoothScroll.msdPhysics.enabled", true); 46 | user_pref("mousewheel.default.delta_multiplier_y", 300); // 250-400; adjust this number to your liking 47 | 48 | /**************************************************************************************** 49 | * OPTION: NATURAL SMOOTH SCROLLING V3 [MODIFIED] * 50 | ****************************************************************************************/ 51 | // credit: https://github.com/AveYo/fox/blob/cf56d1194f4e5958169f9cf335cd175daa48d349/Natural%20Smooth%20Scrolling%20for%20user.js 52 | // recommended for 120hz+ displays 53 | // largely matches Chrome flags: Windows Scrolling Personality and Smooth Scrolling 54 | user_pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX 55 | user_pref("general.smoothScroll", true); // DEFAULT 56 | user_pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12); 57 | user_pref("general.smoothScroll.msdPhysics.enabled", true); 58 | user_pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600); 59 | user_pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650); 60 | user_pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25); 61 | user_pref("general.smoothScroll.msdPhysics.slowdownMinDeltaRatio", "2"); 62 | user_pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250); 63 | user_pref("general.smoothScroll.currentVelocityWeighting", "1"); 64 | user_pref("general.smoothScroll.stopDecelerationWeighting", "1"); 65 | user_pref("mousewheel.default.delta_multiplier_y", 300); // 250-400; adjust this number to your liking 66 | -------------------------------------------------------------------------------- /install.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from datetime import datetime 4 | from os import name, getenv 5 | from json import loads 6 | from re import compile, IGNORECASE, sub 7 | from pathlib import Path 8 | from configparser import ConfigParser 9 | from argparse import ArgumentParser 10 | from shutil import copytree, ignore_patterns 11 | from urllib.request import urlopen 12 | from subprocess import check_output 13 | from io import BytesIO 14 | from zipfile import ZipFile 15 | 16 | """ 17 | install(-betterfox).py 18 | 19 | Usage: 20 | python install.py 21 | 22 | 23 | When called without arguments, it will: 24 | - Backup your current firefox profile 25 | - Automatically download user.js from the latest Betterfox release compatible with your Firefox version into the profile 26 | - Apply user-overrides in the same directory 27 | 28 | However, you can check out install.py/betterfox-install.exe --help to customise most behaviours! 29 | 30 | Limitations: 31 | - When using a different repositoy as a source, that repository needs to use the same releases workflow 32 | - Over time, the get_releases might not list older releases due to limited page size. This can be expanded down the road, though 33 | 34 | Building into an exe (on Windows): 35 | - pipx install pyinstaller (note: you can try without pipx, but this didn't work for me) 36 | - Run: 37 | - 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` 38 | - BASH: `pyinstaller --onefile --name install-betterfox install.py && && mv dist/install-betterfox.exe . && rm install-betterfox.spec && rm -rf ./build/ && rmdir dist` 39 | (Sorry, didn't want to add a .gitignore solely for the install script) 40 | - Done! 41 | 42 | If there's any problems with the script, feel free to mention @Denperidge on GitHub! 43 | """ 44 | 45 | re_find_version = compile(r"mozilla.org/.*?/firefox/(?P[\d.]*?)/", IGNORECASE) 46 | re_find_overrides = r"(overrides|prefs).*\n(?P\n)" 47 | 48 | INSTALLATIONS_TO_CHECK = [ 49 | # windows 50 | { 51 | "command": [str(Path("C:/Program Files/Mozilla Firefox/firefox"))], 52 | "root": Path(getenv("APPDATA") or "").joinpath("Mozilla/Firefox").resolve(), 53 | }, 54 | # linux 55 | { 56 | "command": ["firefox"], 57 | "root": Path.home().joinpath(".mozilla/firefox").absolute(), 58 | }, 59 | # flatpak 60 | { 61 | "command": ["flatpak", "run", "org.mozilla.firefox"], 62 | "root": Path.home().joinpath(".var/app/org.mozilla.firefox/.mozilla/firefox").absolute(), 63 | }, 64 | ] 65 | 66 | 67 | # command is a list, eg. ["firefox"] or ["flatpak", "run", "org.mozilla.firefox"] 68 | def _get_firefox_version(command): 69 | ver_string = check_output(command + ["--version"], encoding="UTF-8") 70 | return ver_string[ver_string.rindex(" ")+1:].strip() 71 | 72 | def _get_default_firefox_version_and_root(): 73 | print("Searching for Firefox installation...") 74 | for installation in INSTALLATIONS_TO_CHECK: 75 | try: 76 | print(f" '{" ".join(installation["command"])}': ", end="") 77 | version = _get_firefox_version(installation["command"]) 78 | print("YES") 79 | print(f"Root: {installation["root"]}") 80 | return version, installation["root"] 81 | except Exception: 82 | print("no") 83 | continue 84 | 85 | raise Exception("Firefox binary not found. Please ensure Firefox is installed and the path is correct.") 86 | 87 | def _get_default_profile_folder(firefox_root): 88 | config_path = firefox_root.joinpath("profiles.ini") 89 | 90 | print(f"Reading {config_path}...") 91 | 92 | config_parser = ConfigParser(strict=False) 93 | config_parser.read(config_path) 94 | 95 | path = None 96 | for section in config_parser.sections(): 97 | if "Default" in config_parser[section]: 98 | section_default_value = config_parser[section]["Default"] 99 | if section_default_value: 100 | print("Default detected from section: " + section) 101 | # Confirm whether a 0 value is possible, keep fallback until then 102 | if section_default_value == "0": 103 | continue 104 | if section_default_value == "1": 105 | path = config_parser[section]["Path"] 106 | else: 107 | path = section_default_value 108 | break 109 | 110 | if path is not None: 111 | return firefox_root.joinpath(path) 112 | else: 113 | raise Exception("Could not determine default Firefox profile! Exiting...") 114 | 115 | def _get_releases(repository_owner, repository_name): 116 | releases = [] 117 | raw_releases = loads(urlopen(f"https://api.github.com/repos/{repository_owner}/{repository_name}/releases").read()) 118 | for raw_release in raw_releases: 119 | name = raw_release["name"] or raw_release["tag_name"] # or fixes 126.0 not being lodaded 120 | body = raw_release["body"] 121 | 122 | 123 | # Find which firefox releases are supported. Manual overrides for ones that don't have it written in their thing! 124 | if name == "user.js v.122.1": 125 | 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"] 126 | elif name == "user.js 116.1": 127 | supported = ["116.0", "116.0.1", "116.0.2", "116.0.3"] 128 | elif name == "Betterfox v.107": 129 | supported = ["107.0"] 130 | elif "firefox release" in body.lower(): 131 | trim_body = body.lower()[body.lower().index("firefox release"):] 132 | supported = re_find_version.findall(trim_body) 133 | if len(supported) == 0: 134 | print(f"Could not parse release in '{name}'. Please post this error message on https://github.com/{repository_owner}/{repository_name}/issues") 135 | continue 136 | else: 137 | print(f"Could not find firefox release header '{name}'. Please post this error message on https://github.com/{repository_owner}/{repository_name}/issues") 138 | continue 139 | 140 | releases.append({ 141 | "name": name, 142 | "url": raw_release["zipball_url"], 143 | "supported": supported, 144 | }) 145 | return releases 146 | 147 | def _get_latest_compatible_release(releases): 148 | for release in releases: 149 | if firefox_version in release["supported"]: 150 | return release 151 | return None 152 | 153 | def backup_profile(src): 154 | dest = f"{src}-backup-{datetime.today().strftime('%Y-%m-%d-%H-%M-%S')}" 155 | 156 | copytree(src, dest, ignore=ignore_patterns("*lock")) 157 | print("Backed up profile to " + dest) 158 | 159 | 160 | def download_betterfox(url): 161 | data = BytesIO() 162 | data.write(urlopen(url).read()) 163 | return data 164 | 165 | def extract_betterfox(data, profile_folder): 166 | zipfile = ZipFile(data) 167 | userjs_zipinfo = None 168 | for file in zipfile.filelist: 169 | if file.filename.endswith("user.js"): 170 | userjs_zipinfo = file 171 | userjs_zipinfo.filename = Path(userjs_zipinfo.filename).name 172 | 173 | if not userjs_zipinfo: 174 | raise BaseException("Could not find user.js!") 175 | 176 | return zipfile.extract(userjs_zipinfo, profile_folder) 177 | 178 | 179 | def list_releases(releases, only_supported=False, add_index=False): 180 | print() 181 | print(f"Listing {'compatible' if only_supported else 'all'} Betterfox releases:") 182 | if only_supported: 183 | print("Use --list-all to view all available releases") 184 | else: 185 | print(f"Releases marked with '> ' are documented to be compatible with your Firefox version ({firefox_version})") 186 | print() 187 | 188 | i = 0 189 | for release in releases: 190 | supported = firefox_version in release["supported"] 191 | if not only_supported or (only_supported and supported): 192 | print(f"{f'[{i}]' if add_index else ''}{'> ' if supported else ' '}{release['name'].ljust(20)}\t\t\tSupported: {','.join(release['supported'])}") 193 | i+=1 194 | 195 | def _press_enter_to_exit(args): 196 | if not args.no_wait_for_exit: 197 | input("Press ENTER to exit...") 198 | 199 | if __name__ == "__main__": 200 | firefox_version, firefox_root = _get_default_firefox_version_and_root() 201 | 202 | default_profile_folder = _get_default_profile_folder(firefox_root) 203 | 204 | argparser = ArgumentParser( 205 | 206 | ) 207 | 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"))), 208 | 209 | 210 | advanced = argparser.add_argument_group("Advanced") 211 | 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") 212 | 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}") 213 | advanced.add_argument("--repository-owner", "-ro", default="yokoffing", help="owner of the Betterfox repository. Defaults to yokoffing") 214 | advanced.add_argument("--repository-name", "-rn", default="Betterfox", help="name of the Betterfox repository. Defaults to Betterfox") 215 | 216 | disable = argparser.add_argument_group("Disable functionality") 217 | disable.add_argument("--no-backup", "-nb", action="store_true", default=False, help="disable backup of current profile (not recommended)"), 218 | disable.add_argument("--no-install", "-ni", action="store_true", default=False, help="don't install Betterfox"), 219 | 220 | modes = argparser.add_mutually_exclusive_group() 221 | modes.add_argument("--list", action="store_true", default=False, help=f"List all Betterfox releases compatible with your version of Firefox ({firefox_version})") 222 | modes.add_argument("--list-all", action="store_true", default=False, help=f"List all Betterfox releases") 223 | modes.add_argument("--interactive", "-i", action="store_true", default=False, help=f"Interactively select Betterfox version") 224 | 225 | behaviour = argparser.add_argument_group("Script behaviour") 226 | behaviour.add_argument("--no-wait-for-exit", "-nwfe", action="store_true", default=False, help="Disable 'Press ENTER to exit...' and exit immediately"), 227 | 228 | args = argparser.parse_args() 229 | 230 | releases = _get_releases(args.repository_owner, args.repository_name) 231 | selected_release = None 232 | 233 | if args.list or args.list_all: 234 | list_releases(releases, args.list) 235 | _press_enter_to_exit(args) 236 | exit() 237 | 238 | if not args.no_backup: 239 | backup_profile(args.profile_dir) 240 | 241 | if args.betterfox_version: 242 | # If not None AND not string, default value has been used 243 | if not isinstance(args.betterfox_version, str): 244 | selected_release = args.betterfox_version 245 | print(f"Using latest compatible Betterfox version ({selected_release['name']})...") 246 | # If string has been passed 247 | else: 248 | selected_release = next(rel for rel in releases if rel['name'] == args.betterfox_version) 249 | print(f"Using manually selected Betterfox version ({selected_release['name']})") 250 | 251 | if not args.betterfox_version: 252 | selected_release = _get_latest_compatible_release(releases) 253 | 254 | if args.interactive or not selected_release: 255 | if not selected_release: 256 | print("Could not find a compatible Betterfox version for your Firefox installation.") 257 | 258 | list_releases(releases, False, True) 259 | selection = int(input(f"Select Betterfox version, or press enter without typing a number to cancel [0-{len(releases) - 1}]: ")) 260 | 261 | selected_release = releases[selection] 262 | 263 | 264 | 265 | if not args.no_install: 266 | userjs_path = extract_betterfox( 267 | download_betterfox(selected_release["url"]), 268 | args.profile_dir 269 | ) 270 | print(f"Installed user.js to {userjs_path} !") 271 | 272 | 273 | if Path(args.overrides).exists(): 274 | print("Found overrides at " + str(args.overrides)) 275 | 276 | with open(str(args.overrides), "r", encoding="utf-8") as overrides_file: 277 | overrides = overrides_file.read() 278 | with open(userjs_path, "r", encoding="utf-8") as userjs_file: 279 | old_content = userjs_file.read() 280 | new_content = sub(re_find_overrides, "\n" + overrides + "\n", old_content, count=1, flags=IGNORECASE) 281 | with open(userjs_path, "w", encoding="utf-8") as userjs_file: 282 | userjs_file.write(new_content) 283 | else: 284 | print(f"Found no overrides in {args.overrides}") 285 | 286 | _press_enter_to_exit(args) 287 | 288 | -------------------------------------------------------------------------------- /personal/user-overrides.js: -------------------------------------------------------------------------------- 1 | 2 | /**************************************************************************** 3 | * * 4 | * DISCLAIMER * 5 | * * 6 | * This file is NOT INTENDED FOR OFFICIAL USE * 7 | * It is a mix of PERSONAL and TESTING prefs and * 8 | * may cause breakage or contain changes you do not want! * 9 | * DO NOT USE unless you know what you are doing! * 10 | * * 11 | ****************************************************************************/ 12 | 13 | /**************************************************************************** 14 | * START: MY OVERRIDES * 15 | ****************************************************************************/ 16 | 17 | /** SETUP ON FIRST INSTALLATION ***/ 18 | //user_pref("network.trr.uri", "https://dns.nextdns.io/******/Firefox"); // TRR/DoH 19 | 20 | /** FASTFOX ***/ 21 | user_pref("browser.sessionstore.restore_pinned_tabs_on_demand", true); 22 | 23 | // SPECULATIVE LOADING WITHOUT PREDICTOR 24 | user_pref("network.http.speculative-parallel-limit", 20); 25 | //user_pref("network.dns.disablePrefetch", false); 26 | //user_pref("network.dns.disablePrefetchFromHTTPS", false); 27 | //user_pref("dom.prefetch_dns_for_anchor_https_document", true); 28 | user_pref("browser.urlbar.speculativeConnect.enabled", true); 29 | user_pref("browser.places.speculativeConnect.enabled", true); 30 | user_pref("network.prefetch-next", true); 31 | 32 | user_pref("network.http.max-persistent-connections-per-server", 20); // increase download connections 33 | 34 | /** SECUREFOX ***/ 35 | user_pref("signon.rememberSignons", false); // disable password manager 36 | user_pref("extensions.formautofill.addresses.enabled", false); // disable address manager 37 | user_pref("extensions.formautofill.creditCards.enabled", false); // disable credit card manager 38 | user_pref("browser.urlbar.suggest.recentsearches", false); // unselect "Show recent searches" for clean UI 39 | user_pref("browser.urlbar.showSearchSuggestionsFirst", false); // unselect "Show search suggestions ahead of browsing history in address bar results" for clean UI 40 | //user_pref("browser.urlbar.groupLabels.enabled", false); // hide Firefox Suggest label in URL dropdown box 41 | user_pref("signon.management.page.breach-alerts.enabled", false); // extra hardening 42 | user_pref("signon.autofillForms", false); // unselect "Autofill logins and passwords" for clean UI 43 | user_pref("signon.generation.enabled", false); // unselect "Suggest and generate strong passwords" for clean UI 44 | user_pref("signon.firefoxRelay.feature", ""); // unselect suggestions from Firefox Relay for clean UI 45 | user_pref("browser.safebrowsing.downloads.enabled", false); // deny SB to scan downloads to identify suspicious files; local checks only 46 | user_pref("browser.safebrowsing.downloads.remote.url", ""); // enforce no remote checks for downloads by SB 47 | user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false); // clean up UI; not needed in user.js if remote downloads are disabled 48 | user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false); // clean up UI; not needed in user.js if remote downloads are disabled 49 | user_pref("browser.safebrowsing.allowOverride", false); // do not allow user to override SB 50 | user_pref("browser.search.update", false); // do not update opensearch engines 51 | user_pref("network.trr.confirmationNS", "skip"); // skip TRR confirmation request 52 | user_pref("extensions.webextensions.restrictedDomains", ""); // remove Mozilla domains so adblocker works on pages 53 | user_pref("identity.fxaccounts.enabled", false); // disable Firefox Sync 54 | user_pref("browser.firefox-view.feature-tour", "{\"screen\":\"\",\"complete\":true}"); // disable the Firefox View tour from popping up for new profiles 55 | user_pref("accessibility.force_disabled", 1); // disable Accessibility features 56 | user_pref("security.cert_pinning.enforcement_level", 2); // strict public key pinning 57 | 58 | /** PESKYFOX ***/ 59 | user_pref("devtools.accessibility.enabled", false); // removes un-needed "Inspect Accessibility Properties" on right-click 60 | user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // Settings>Home>Firefox Home Content>Recent Activity>Shortcuts>Sponsored shortcuts 61 | user_pref("browser.newtabpage.activity-stream.showSponsored", false); // Settings>Home>Firefox Home Content>Recent Activity>Recommended by Pocket>Sponsored Stories 62 | user_pref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", false); // Settings>Home>Firefox Home Content>Recent Activity>Bookmarks 63 | user_pref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false); // Settings>Home>Firefox Home Content>Recent Activity>Most Recent Download 64 | user_pref("browser.newtabpage.activity-stream.section.highlights.includeVisited", false); // Settings>Home>Firefox Home Content>Recent Activity>Visited Pages 65 | user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); // Settings>Home>Firefox Home Content>Recent Activity>Pages Saved to Pocket 66 | //user_pref("browser.download.useDownloadDir", true); // use direct downloads 67 | //user_pref("browser.download.folderList", 0); // 0=desktop, 1=downloads, 2=last used 68 | user_pref("browser.toolbars.bookmarks.visibility", "never"); // always hide bookmark bar 69 | user_pref("browser.startup.homepage_override.mstone", "ignore"); // What's New page after updates; master switch 70 | user_pref("browser.urlbar.suggest.history", false); // Browsing history; hide URL bar dropdown suggestions 71 | user_pref("browser.urlbar.suggest.bookmark", false); // Bookmarks; hide URL bar dropdown suggestions 72 | user_pref("browser.urlbar.suggest.openpage", false); // Open tabs; hide URL bar dropdown suggestions 73 | user_pref("browser.urlbar.suggest.topsites", false); // Shortcuts; disable dropdown suggestions with empty query 74 | user_pref("browser.urlbar.suggest.engines", false); // Search engines; tab-to-search 75 | user_pref("browser.urlbar.quicksuggest.enabled", false); // hide Firefox Suggest UI in the settings 76 | //user_pref("browser.urlbar.maxRichResults", 1); // minimum suggestion needed for URL bar autofill 77 | user_pref("browser.bookmarks.max_backups", 0); // minimize disk use; manually back-up 78 | user_pref("view_source.wrap_long_lines", true); // wrap source lines 79 | user_pref("devtools.debugger.ui.editor-wrapping", true); // wrap lines in devtools 80 | user_pref("browser.zoom.full", false); // text-only zoom, not all elements on page 81 | //user_pref("pdfjs.sidebarViewOnLoad", 2); // force showing of Table of Contents in sidebar for PDFs (if available) 82 | user_pref("layout.word_select.eat_space_to_next_word", false); // do not select the space next to a word when selecting a word 83 | //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 84 | user_pref("browser.tabs.loadBookmarksInTabs", true); // force bookmarks to open in a new tab, not the current tab 85 | user_pref("ui.key.menuAccessKey", 0); // remove underlined characters from various settings 86 | user_pref("general.autoScroll", false); // disable unintentional behavior for middle click 87 | user_pref("ui.SpellCheckerUnderlineStyle", 1); // [HIDDEN] dots for spell check errors 88 | user_pref("media.videocontrols.picture-in-picture.display-text-tracks.size", "small"); // PiP 89 | user_pref("media.videocontrols.picture-in-picture.urlbar-button.enabled", false); // PiP in address bar 90 | user_pref("reader.parse-on-load.enabled", false); // disable reader mode 91 | //user_pref("reader.color_scheme", "auto"); // match system theme for when reader is enabled 92 | //user_pref("browser.urlbar.openintab", true); // stay on current site and open new tab when typing in URL bar 93 | 94 | /** DELETE IF NOT NIGHTLY ***/ 95 | user_pref("privacy.userContext.enabled", false); // disable Containers functionality 96 | user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // true by default on NIGHTLY 97 | //user_pref("xpinstall.signatures.required", false); // [ESR/DEV/NIGHTLY] 98 | //user_pref("browser.urlbar.suggest.trending", false); // FF119+ disable showing trending searches; unselect for clean UI 99 | //user_pref("browser.urlbar.suggest.quickactions", false); // Quick actions; hide URL bar dropdown suggestions 100 | //user_pref("browser.urlbar.suggest.clipboard", false); // Clipboard; hide URL bar dropdown suggestions 101 | 102 | /** DELETE IF NOT WINDOWS DESKTOP ***/ 103 | user_pref("network.trr.mode", 3); // enable TRR (without System fallback) 104 | //user_pref("browser.startup.preXulSkeletonUI", false); // WINDOWS 105 | user_pref("default-browser-agent.enabled", false); // deny Mozilla monitoring default browser (breaks "Make Default" button) 106 | user_pref("geo.provider.ms-windows-location", false); // [WINDOWS] 107 | user_pref("pdfjs.defaultZoomValue", "125"); // alt=page-width; PDF zoom level 108 | user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5); 109 | user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 100); 110 | user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", ""); 111 | user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); 112 | //user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100); 113 | //user_pref("font.name.serif.x-western", "Roboto Slab"); // serif font 114 | //user_pref("font.name.sans-serif.x-western", "Roboto"); // sans-serif font 115 | //user_pref("font.name.monospace.x-western", "Fira Code"); // monospace font 116 | 117 | /** DELETE IF NOT ENTERPRISE WINDOWS LAPTOP ***/ 118 | user_pref("urlclassifier.trackingSkipURLs", ""); // do not allow embedded tweets, Instagram, Reddit, and Tiktok posts 119 | user_pref("urlclassifier.features.socialtracking.skipURLs", ""); // do not allow embedded tweets, Instagram, Reddit, and Tiktok posts 120 | user_pref("browser.search.suggest.enabled", true); // search suggestions 121 | user_pref("browser.urlbar.showSearchSuggestionsFirst", true); // Show search suggestions ahead of browsing history in address bar results 122 | //user_pref("network.connectivity-service.enabled", true); // public wifi 123 | //user_pref("network.trr.confirmationNS", "example.com"); // TRR confirmation request 124 | //user_pref("network.trr.mode", 2); // enable TRR (without System fallback) 125 | //user_pref("browser.startup.preXulSkeletonUI", false); // WINDOWS 126 | user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5); 127 | user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 100); 128 | user_pref("gfx.font_rendering.cleartype_params.force_gdi_classic_for_families", ""); 129 | user_pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); 130 | user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 100); 131 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", false); // no need for userChrome 132 | //user_pref("browser.urlbar.suggest.history", true); // Browsing history 133 | //user_pref("browser.urlbar.suggest.bookmark", true); // Bookmarks 134 | //user_pref("browser.urlbar.suggest.openpage", true); // Open tabs 135 | //user_pref("browser.urlbar.suggest.topsites", true); // Shortcuts 136 | 137 | /** DELETE IF NOT macOS LAPTOP ***/ 138 | user_pref("network.trr.mode", 2); // enable TRR (with System fallback) 139 | user_pref("network.trr.max-fails", 5); // lower max attempts to use DoH 140 | user_pref("geo.provider.use_corelocation", false); // geolocation [MAC] 141 | user_pref("pdfjs.defaultZoomValue", "page-width"); // PDF zoom level 142 | user_pref("app.update.auto", false); // disable auto-installing Firefox updates [NON-WINDOWS] 143 | //user_pref("font.name.monospace.x-western", "SF Mono"); // monospace font 144 | 145 | /** DELETE IF NOT LINUX LAPTOP ***/ 146 | user_pref("network.trr.mode", 2); // enable TRR (with System fallback) 147 | user_pref("network.trr.max-fails", 5); // lower max attempts to use DoH 148 | user_pref("geo.provider.use_geoclue", false); // [LINUX] 149 | user_pref("pdfjs.defaultZoomValue", "page-width"); // PDF zoom level 150 | -------------------------------------------------------------------------------- /policies.json: -------------------------------------------------------------------------------- 1 | { 2 | "__COMMENT__ More Information": "https://github.com/mozilla/policy-templates/tree/master#readme", 3 | "policies": { 4 | "AppAutoUpdate": true, 5 | "AppAutoUpdate_comment": "Change to false to disable auto-updates.", 6 | "DisableFirefoxStudies": true, 7 | "DisableTelemetry": true, 8 | "DisableFeedbackCommands": true, 9 | "DisablePocket": true, 10 | "DisableSetDesktopBackground": true, 11 | "DisableDeveloperTools": false, 12 | "DontCheckDefaultBrowser": true, 13 | "DNSOverHTTPS": { 14 | "Enabled": false, 15 | "ProviderURL": "", 16 | "Locked": false 17 | }, 18 | "ManualAppUpdateOnly": false, 19 | "ManualAppUpdateOnly_comment": "Change to true to disable auto-updates.", 20 | "NoDefaultBookmarks": true, 21 | "WebsiteFilter": { 22 | "Block": [ 23 | "https://localhost/*" 24 | ] 25 | }, 26 | "Extensions": { 27 | "Install": [ 28 | "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" 29 | ], 30 | "Uninstall": [ 31 | "amazondotcom@search.mozilla.org", 32 | "ebay@search.mozilla.org" 33 | ] 34 | }, 35 | "SearchEngines": { 36 | "PreventInstalls": false, 37 | "Remove": [ 38 | "Amazon.com", 39 | "eBay" 40 | ], 41 | "Default": "DuckDuckGo", 42 | "Add": [ 43 | { 44 | "Name": "DuckDuckGo Lite", 45 | "Description": "Minimal, ad-free version of DuckDuckGo", 46 | "Alias": "", 47 | "Method": "POST", 48 | "URLTemplate": "https://duckduckgo.com/lite/?q={searchTerms}", 49 | "PostData": "q={searchTerms}", 50 | "IconURL": "data:image/x-icon;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVZ4Ss0Wd+PM1nf1Tpd4PM6XeDzM1nf1TRZ3481WeErAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYD/BjRa3pRQcOP9tMLy/83q2f/m9uv//f7+//L0/P+qu+7/UHDj/TRa3pRVgP8GAAAAAAAAAAAAAAAAVYD/BjNZ372Jnuv/9/j9/8nT9v+D0pj/R71m/02+a/9Kr3z/XreM//f4/f+Jnuv/M1nfvVWA/wYAAAAAAAAAADRa3pSJnuv/4Ob6/1h25P+8yPT/ntyv/6zhuv+Fvrj/PpKY/0Cbjf9YduT/4Ob6/4me6/80Wt6UAAAAADVZ4StQcOP99/j9/1h25P8zWN7/5+z7////////////Z4Lm/zNY3v8zWd3/M1je/1h25P/3+P3/UHDj/TVZ4Ss0Wd+PrLvx/5ut7v8zWN7/Rmfh/////////////////0Jo4P8neuf/IY/s/yZ85/8yXN//m63u/6y78f80Wd+PM1nf1ert+/9ObuL/M1je/3CK5////////////9j4//8RyPv/J3vn/ytx5P8lg+n/KHjm/05u4v/p7fv/M1nf1Tpd4PP4+f3/M1je/zNY3v+bre7////////////X+P//JNL8/yDJ+v8Utvb/II/t/y9j4P8zWN7/+Pn9/zpd4PM6XeDz+Pn9/zNY3v8zWN7/w871///////////////////////k+v//T5zt/xyc7/8UtPX/L2Ph//j5/f86XeDzM1nf1ert+/9ObuL/M1je/9vi+f//////oXZf////////////oXZf/2N/5f8zWN7/M1je/05u4v/q7fv/M1nf1TRZ34+su/H/m63u/zNY3v/H0fX//////////////////////+js+/83W97/M1je/zNY3v+bre7/rLvx/zRZ3481WeErUHDj/ff4/f9YduT/X3zl//Hz/P////////////j5/f9yi+j/M1je/zNY3v9YduT/9/j9/1Bw4/01WeErAAAAADRa3pSJnuv/4Ob6/1h25P9MbOL/2N/4/73J9P9DZeD/M1je/zNY3v9YduT/4Ob6/4me6/80Wt6UAAAAAAAAAABVgP8GM1nfvYme6//3+P3/m63u/05u4v8zWN7/M1je/05u4v+bre7/9/j9/4me6/8zWd+9VYD/BgAAAAAAAAAAAAAAAFWA/wY0Wt6UUHDj/ay78f/p7fv/+Pn9//j5/f/p7fv/rLvx/1Bw4/00Wt6UVYD/BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVZ4Ss0Wd+PM1nf1Tpd4PM6XeDzM1nf1TRZ3481WeErAAAAAAAAAAAAAAAAAAAAAPAPAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAPAPAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWA/wY2Wt9HM1nelTRY3780WN7ZM1je8zNY3vM0WN7ZNFjfvzNZ3pU2Wt9HVYD/BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xgzWN+WNFne8TNY3v9ceuT/iJ7r/52v7/+ywPL/ssDy/52v7/+Inuv/XHrk/zNY3v80Wd7xM1jfljVg3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElt/wczWOCCM1nf9Ets4v+ouPH/6e37/+vv+//a4Pj/2eD4/9zi+f/c4vn/2eD4/9rg+P/m6vv/6e37/6i48f9LbOL/M1nf9DNY4IJJbf8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1YN8YM1jfxz9i4P+js/D/8fP8/6Cx7/+7x/P/5fbp/1zEd/+o4Lb/9vz4////////////3+T5/zVZ3v9Xed3/obPu//Hz/P+js/D/P2Hf/zNY38c1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN1njLjRZ3uNTcuP/4eb6/7PB8v9IaeH/M1je/9rg+f/H69D/Rrxl/0a8Zf9NtV//RrRa/063Yv9fpqf/QqWA/0a8Zf87gqv/SGnh/7TC8v/h5vr/U3Lj/zRZ3uMzW+MtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xg0Wd7jZ4Pm/+/x/P+Emuv/M1je/zNY3v87Xt///P3+/7rmxv9GvGX/Rrxl/0azWv9GvGX/Rrxl/0a8ZP9GvGX/Rrxl/zyIo/8zWN7/M1je/4Sa6//v8fz/Z4Lm/zRZ3uM1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAABJbf8HM1jfx1Ny4//v8fz/aoXm/zNY3v8zWN7/M1je/2N/5f//////tOTB/0a8Zf9HvWb/c8mH/1W+bv9IuWj/Qqp7/0a8Zf9GvGX/PIWo/zNY3v8zWN7/M1je/2qF5v/v8fz/U3Lj/zNY38dJbf8HAAAAAAAAAAAAAAAAAAAAADNY4II/YuD/4eb6/4Sa6/8zWN7/M1je/zNY3v8zWN7/j6Ps///////W8d3/pt+1/+X26v//////8/X9/zhc3v80Wdz/PIek/0a4av85d7j/M1je/zNY3v8zWN7/M1je/4Sa6//h5vr/P2Hf/zNY4IIAAAAAAAAAAAAAAAA1YN8YM1nf9KOz8P+0wvL/M1je/zNY3v8zWN7/M1je/zNY3v+6xvP///////////////////////////+zwfL/M1je/zNY3v8zWN7/NFzY/zNZ3f8zWN7/M1je/zNY3v8zWN7/M1je/7TC8v+js/D/M1nf9DVg3xgAAAAAAAAAADNY35ZLbOL/8fP8/0hp4f8zWN7/M1je/zNY3v8zWN7/M1je/+Xq+v///////////////////////////32U6v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/SGnh//Hz/P9LbOL/M1jflgAAAABVgP8GNFne8ai48f+hsu//M1je/zNY3v8zWN7/M1je/zNY3v9DZeD/////////////////////////////////V3bj/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/obLv/6i48f80Wd7xVYD/BjZa30czWN7/6e37/1Z04/8zWN7/M1je/zNY3v8zWN7/M1je/2+J5/////////////////////////////////9RcOL/Lmfi/yKN7P8XrPP/EML5/w3K+/8Suvf/HZnu/y5n4v8zWN7/M1je/zNY3v9WdOP/6e37/zNY3v82Wt9HM1nelVx65P/j6Pr/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/mavu////////////////////////////7/z//yK79v8K0v3/Fq/0/yKN7P8iiev/IY7s/xqh8P8Suff/Dcr7/y5o4v8zWN7/M1je/zNY3v/j6Pr/XHrk/zNZ3pU0WN+/iJ7r/6++8v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v/DzvX///////////////////////////9k4/7/CtL9/xK59/8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/6++8v+Inuv/NFjfvzRY3tmdr+//mqzu/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/+7x/P///////////////////////////2Xj/v8K0v3/C9D9/xmm8f8YqfP/Gafy/yKN7P8vZuH/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/mqzu/52v7/80WN7ZM1je87LA8v+Fm+v/M1je/zNY3v8zWN7/M1je/zNY3v9La+H/////////////////////////////////+P7//3Pm/v8P0/3/CtL9/wrS/f8K0v3/CtL9/wrR/f8VsvX/JYPp/zNb3v8zWN7/M1je/zNY3v+Fm+v/ssDy/zRZ3vIzWN7zssDy/4Wb6/8zWN7/M1je/zNY3v8zWN7/M1je/3SN6P////////////////////////////////////////////b+///T9///vPP//1q/9v8WrfT/DMv8/wrS/f8K0v3/DsX6/yl25v8zWN7/M1je/4Wb6/+ywPL/M1je8zRY3tmdr+//mqzu/zNY3v8zWN7/M1je/zNY3v8zWN7/m63u////////////0LWn/7qTfv/////////////////////////////+/v//////s8Dy/zNY3v8zWt7/KXbm/x2b7v8bn/D/KnPl/zNY3v8zWN7/mqzu/52v7/80WN7ZNFjfv4me6/+vvvL/M1je/zNY3v8zWN7/M1je/zNY3v+zwPL///////////+sfWT/om5R//v59///////////////////////pHFV/8Cdiv+ruvH/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v+vvvL/iJ7r/zRY378zWd6VXHrk/+Po+v8zWN7/M1je/zNY3v8zWN7/M1je/7/K9P////////////z6+f/38u/////////////////////////////NsKH/4dDH/3uT6f8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/+Po+v9ceuT/M1nelTZa30czWN7/6e37/1Z04/8zWN7/M1je/zNY3v8zWN7/p7fw///////k1c3////////////////////////////////////////////3+f3/Q2Xg/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v9WdOP/6e37/zNY3v82Wt9HVYD/BjRZ3vGouPH/oLHv/zNY3v8zWN7/M1je/zNY3v92j+j//////+7l3//gz8b/+/j2///////////////////////p3db/2MK2/6mz5P8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/6Gy7/+ouPH/NFne8VWA/wYAAAAAM1jflkts4v/x8/z/SGnh/zNY3v8zWN7/M1je/zNY3v/U3Pj////////////////////////////////////////////s7/z/RWfg/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v9IaeH/8fP8/0ts4v8zWN+WAAAAAAAAAAA1YN8YM1nf9KOz8P+zwfL/M1je/zNY3v8zWN7/M1je/0Fj4P/DzvX/////////////////////////////////8PP8/2WB5v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/7TC8v+js/D/M1nf9DVg3xgAAAAAAAAAAAAAAAAzWOCCP2Lg/+Hm+v+Emuv/M1je/zNY3v8zWN7/R2jh/0do4f97k+n/1dz4////////////7/L8/4Oa6/9CZOD/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v+Fm+v/4eb6/z9i4P8zWOCCAAAAAAAAAAAAAAAAAAAAAElt/wczWN/HU3Lj/+/x/P9qheb/M1je/zNY3v+Xqe7/7vH8/////////////////87X9/9TcuP/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/aoXm/+/x/P9TcuP/M1jfx0lt/wcAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xg0Wd7jZ4Lm/+/x/P+Emuv/M1je/2J+5f+puPH/rrzx/5Kl7f9PbuL/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/4Sa6//v8fz/Z4Lm/zRZ3uM1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdZ4y40Wd7jU3Lj/+Hm+v+0wvL/SGnh/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/0hp4f+0wvL/4eb6/1Ny4/80Wd7jM1vjLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xgzWN/HP2Lg/6Oz8P/x8/z/obLv/1Z04/8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/1Z04/+hsu//8fP8/6Oz8P8/Yd//M1jfxzVg3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElt/wczWOCCM1nf9Ets4v+ouPH/6e37/+Po+v+vvvL/mqzu/4Wb6/+Fm+v/mqzu/6++8v/j6Pr/6e37/6i48f9LbOL/M1nf9DNY4IJJbf8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1YN8YM1jfljRZ3vEzWN7/XHrk/4ie6/+dr+//ssDy/7LA8v+dr+//iJ7r/1x65P8zWN7/NFne8TNY35Y1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYD/BjZa30czWd6VNFjfvzRY3tkzWN7zM1je8zRY3tk0WN+/M1nelTZa30dVgP8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AA///AAD//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPAAAAD4AAAB/AAAA/4AAAf/AAAP/8AAP//wAP/" 51 | }, 52 | { 53 | "Name": "SearXNG", 54 | "Description": "A privacy-respecting, hackable metasearch engine", 55 | "Alias": "", 56 | "Method": "POST", 57 | "URLTemplate": "https://searx.be/?q={searchTerms}", 58 | "PostData": "q={searchTerms}&time_range=&language=en-US&category_general=on", 59 | "IconURL": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InN2ZzgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkyIDkyIiBoZWlnaHQ9IjkybW0iIHdpZHRoPSI5Mm1tIj4KICA8ZGVmcyBpZD0iZGVmczIiLz4KICA8bWV0YWRhdGEgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiLz4KICAgICAgICA8ZGM6dGl0bGUvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDAuOTIxMzAzLC0xNy40MTY1MjYpIiBpZD0ibGF5ZXIxIj4KICAgIDxjaXJjbGUgcj0iMCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgY3k9IjkyIiBjeD0iNzUiIGlkPSJwYXRoMzcxMyIvPgogICAgPGNpcmNsZSByPSIzMCIgY3k9IjUzLjkwMjU1NyIgY3g9Ijc1LjkyMTMwMyIgaWQ9InBhdGg4MzQiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMzMDUwZmY7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz4KICAgIDxwYXRoIGQ9Im0gNjcuNTE0ODQ5LDM3LjkxNTI0IGEgMTgsMTggMCAwIDEgMjEuMDUxNDc1LDMuMzEyNDA3IDE4LDE4IDAgMCAxIDMuMTM3MzEyLDIxLjA3ODI4MiIgaWQ9InBhdGg4NTIiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMzMDUwZmY7c3Ryb2tlLXdpZHRoOjU7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIvPgogICAgPHJlY3QgdHJhbnNmb3JtPSJyb3RhdGUoLTQ2LjIzNDcwOSkiIHJ5PSIxLjg2NjkxMDVlLTEzIiB5PSIxMjIuMDg5OTUiIHg9IjMuNzA2MzUyOSIgaGVpZ2h0PSIzOS45NjMzMDMiIHdpZHRoPSIxOC44NDYzMzEiIGlkPSJyZWN0OTEyIiBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6IzMwNTBmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6ODtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+CiAgPC9nPgo8L3N2Zz4=" 60 | }, 61 | { 62 | "Name": "MetaGer", 63 | "Description": "MetaGer: Privacy Protected Search & Find", 64 | "Alias": "", 65 | "Method": "GET", 66 | "URLTemplate": "https://metager.org/meta/meta.ger3?eingabe={searchTerms}", 67 | "IconURL": "data:image/x-icon;base64,AAABAAEAQEAAAAEACAAoFgAAFgAAACgAAABAAAAAgAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP4AAYD+AACA/wADgf4ABIH+AAWC/gAGgv4ACYT+AAuF/gAMhf4ADYb+AA6G/gAPh/4AEIf+ABGI/gATif4AFIn+ABWK/gAWiv4AF4v+ABmM/gAajP4AG43+AByN/gAejv4AIZD+ACSR/gAmkv4AJ5L+ACmU/gAqlP4ALJX+AC2W/gAulv4AMpj+ADSZ/gA5m/4AO5z+AD6e/gA/n/4AQJ/+AEKg/gBDof4ARKH+AEWi/gBGov4ASKP+AEyl/gBPpv4AU6j+AFWq/gBXq/4AWKv+AFut/gBcrf4AX6/+AGGw/gBksf4AZ7L+AGq0/gBvtv4Acbf+AHO4/gB0uf4Adrr+AHe6/gB4u/4Afr7+AIC//gCBwP4Ah8P+AIjD/gCJxP4AisT+AIvF/gCNxv4AkMf+AJHI/gCSyP4Ak8n+AJTJ/gCVyv4Alsr+AJjL/gCazP4AnM3+AJ7O/gCgz/4AodD+AKLQ/gCk0f4AptL+AKjT/gCq1P4ArdX+AK7W/gCv1v4AsNf+ALXZ/gC22v4At9r+ALjb/gC52/4AvN3+AMPg/gDE4f4AxuL+AMrk/gDM5f4Azub+AM/m/gDQ5/4A0ef+ANLo/gDU6f4A1ur+ANnr/gDb7P4A3+7+AOHv/gDk8f4A5fH+AOby/gDn8v4A6PP+AOnz/gDq9P4A6/T+AO31/gDv9v4A8/j+APX5/gD2+v4A9/r+APj7/gD5+/4A+vz+APv8/gD8/f4A/f3+AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnyMjIyMHgICAgICAgICAgICAgIDhYyMjIwSAgICAgICAgIEMlVxfoiEfXJeRSYDAgICAgICAgICAgICAgICAgJmjIyMjDQCAgICAgICAgICAgICAm2MjIyMKwICAgICAgIzeIyMjIyMjIyMjIyMgU8dAgICAgICAgICAgICAgICSoyMjIxGAgICAgICAgICAgICAgJXjIyMjD4CAgICAgJMjIyMjIyMjIyMjIyMjIyMhQUCAgICAgICAgICAgICAjaMjIyMYwICAgICAgICAgICAgICPYyMjIxYAgICAgJAjIyMjIyMjIyMjIyMjIyMjIwjAgICAgICAgICAgICAgIhjIyMjHkCAgICAjtoaGIIAgICAiqMjIyMbwICAgIWg4yMjIyMXCoOAQMPJWmMjIyMOwICAgICAgICAgICAgICBYeMjIyMEAICAgJtjIyMUgICAgIQjIyMjIYEAgICQ4yMjIyMOAICAgICAgJCjIyMjFcCAgICAgICAgICAgICAgJwjIyMjCkCAgIVjIyMjIwrAgICAnqMjIyMIAICAmqMjIyMWgICAgICAgICKoyMjIxzAgICAgICAgICAgICAgICWYyMjIw9AgICOYyMjIyMdwsCAgJljIyMjDUCAgJ9jIyMjCcCAgICAgICAgyLjIyMiwoCAgICAgICAgICAgICAj+MjIyMVwICAmCMjIyMjIxWAgICSYyMjIxJAgICh4yMjIwMAgICAgJkjIyMjIyMjIwpAgICAgICAgICAgICAgIsjIyMjG4CAgaCjIyMjIyMjC8CAjWMjIyMZQICAn+MjIyMBAICAgICRoyMjIyMjIyMQgICAgICAgICAgICAgICEoyMjIyGBAIsjIyMjGiMjIx6DgIgjIyMjHsCAgJzjIyMjBMCAgICAjOMjIyMjIyMjF8CAgICAgICAgICAgICAgJ8jIyMjB8CTIyMjHYNeIyMjFsCBIeMjIyMEgICXYyMjIwnAgICAgIcjIyMjIyMjIx4AgICAgICAgICAgICAgICZoyMjIw1AnWMjIxQAi6MjIyMMQJvjIyMjCsCAjqMjIyMRwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkqMjIyMSRuMjIyMLgICVIyMjH4RWYyMjIw+AgIXiIyMjH8KAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2jIyMjGY9jIyMggYCAgl2jIyMXj+MjIyMWAICAlmMjIyMUQICAgICAgICAgICAgICAgICAgICAgICAgICAgICIYyMjIx8Z4yMjGECAgICKIuMjIxZjIyMjG8CAgIchYyMjIw8AgICAgICAgICAgICAgICAgICAgICAgICAgICAgWHjIyMjImMjIw5AgICAgJOjIyMiYyMjIyGBAICAjyMjIyMjFMMAgICAgICAgIBMGwYAgICAgICAgICAgICAgICcIyMjIyMjIyLFAICAgICB3SMjIyMjIyMjCACAgICXYyMjIyMgUstFgYJGTFNeYyMMwICAgICAgICAgICAgICAlmMjIyMjIyMbAICAgICAgIkioyMjIyMjIw1AgICAgRdjIyMjIyMjIyMjIyMjIyMjE0CAgICAgICAgICAgICAgI/jIyMjIyMjEQCAgICAgICAkiMjIyMjIyMSQICAgICAEGFjIyMjIyMjIyMjIyMjIxrAgICAgICAgICAgICAgICLIyMjIyMjIwjAgICAgICAgIGcoyMjIyMjGUCAgICAgICGliHjIyMjIyMjIyMjIx/TAICAgICAgICAgICAgICAhKMjIyMjIx6AAICAgICAgICAiKIjIyMjIx7AgICAgICAgICDjdWa32FiIBzYEMmBAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 68 | }, 69 | { 70 | "Name": "StartPage", 71 | "Description": "The world's most private search engine", 72 | "Alias": "", 73 | "Method": "GET", 74 | "URLTemplate": "https://www.startpage.com/sp/search?query={searchTerms}", 75 | "IconURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADb0lEQVRYhb2VXWgUVxiGv2gtWHrXBqExO2d2z5leWC80ilRKDTHunAPWhEi0gYY2mZkorYm7Z260oCiiFaQ3/RNqG/CvqAheKLSUUgpWqBdCKdbc+XMji4mhmk2MXTdvL9r4U+dsZtasH3x3877v852/IapUuzDHz6HF0/jU1/g10CgEIUq+xoMgxLAf4qIX4ksvj3c6O/FiRa8k1dyMF4IQm/0QV4MQiNkFP4+P+/rw0jOFewN4I9D4PUHwk61xrSePVVWF9+agAo2xqsMfdcnLwU8U7ufQHGhMzkL4dJe9EN3xwrdiga9xq4LZXV/jkK+xsTePZT05LPXzaPvvcBZMOj/EvQ/yWDwzgMZRo4nG0a4+vGrSduYxP9DYF4QoG/QXKoa/349M8O+1ippgb6wlJCIvh25fY8rgs6bS9LuiRJ7GT0SoiwtARORpfG5YhWNGURDifJSoR2NlknAiop5+1Psh7kdczYJR5IcYiRAMJw1/OJDGL1EDdYWGc7R9LyY/+QzlLwYxdfgkcPoscO5H/FYtwMQ9HBmfAMaKwOhfwPBt4GYBuH4ddqQAQBFP1+VqAQCcifADgAaT4HLExyXAfPXM1TSvvTNX6NiQH29bPzC2tr2/uLZ9y/i6joERAHMjJVeGrn79/Q/ncejb09i95yA2fbQHbeu3YsmKjTuTxltc9dqOwv+bOfJno6iRq2ykSKiJVCbbFDc8lWpNM0eORHlZXH5YSVtnO+oPA/mIlVEtMSZfYgt1I8rDFvJWfX3zy5UNMqqFCVU2rESZCXU8lZZvEdHj+1hncXcpE+qg7ci/I8MdBYu78f6KjLv7TSaPYOQ4E3KICfWnLdSdGb935KlY4dMTMaEGZzJN0kzI74hoTiIIW7g7bEeVZg/C/SoJABERNablcsbdC7MFYXEV+6/6JIjIvs2EGmRCFcz7rEYZd0+kuHyPOfKmESLjhlVBTJdlZe1GvibLHPkuE7LLymTVa7Z8nR7b44Xp1sXMUaOG8zBl8WzvM0HEAuXyTebIomElSpaQHTWHaOTStR113wAxmUq7rTWHSHF3AxPqQTSEHGMiu6LmECwjNzEhpwyP1O0UdxfVHoLLbRUeqks1ByAisoQ8YNiK0nMBICKyufzmqbdByHPPDYCI5jIu99lCDTNHFhl3TzQ0rH7lHy2g5RVQKFbLAAAAAElFTkSuQmCC" 76 | } 77 | ] 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /user.js: -------------------------------------------------------------------------------- 1 | // 2 | /* You may copy+paste this file and use it as it is. 3 | * 4 | * If you make changes to your about:config while the program is running, the 5 | * changes will be overwritten by the user.js when the application restarts. 6 | * 7 | * To make lasting changes to preferences, you will have to edit the user.js. 8 | */ 9 | 10 | /**************************************************************************** 11 | * Betterfox * 12 | * "Ad meliora" * 13 | * version: 138 * 14 | * url: https://github.com/yokoffing/Betterfox * 15 | ****************************************************************************/ 16 | 17 | /**************************************************************************** 18 | * SECTION: FASTFOX * 19 | ****************************************************************************/ 20 | /** GENERAL ***/ 21 | user_pref("content.notify.interval", 100000); 22 | 23 | /** GFX ***/ 24 | user_pref("gfx.canvas.accelerated.cache-size", 512); 25 | user_pref("gfx.content.skia-font-cache-size", 20); 26 | 27 | /** DISK CACHE ***/ 28 | user_pref("browser.cache.disk.enable", false); 29 | 30 | /** MEMORY CACHE ***/ 31 | user_pref("browser.sessionhistory.max_total_viewers", 4); 32 | 33 | /** MEDIA CACHE ***/ 34 | user_pref("media.memory_cache_max_size", 65536); 35 | user_pref("media.cache_readahead_limit", 7200); 36 | user_pref("media.cache_resume_threshold", 3600); 37 | 38 | /** IMAGE CACHE ***/ 39 | user_pref("image.mem.decode_bytes_at_a_time", 32768); 40 | 41 | /** NETWORK ***/ 42 | user_pref("network.http.max-connections", 1800); 43 | user_pref("network.http.max-persistent-connections-per-server", 10); 44 | user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5); 45 | user_pref("network.http.pacing.requests.enabled", false); 46 | user_pref("network.dnsCacheExpiration", 3600); 47 | user_pref("network.ssl_tokens_cache_capacity", 10240); 48 | 49 | /** SPECULATIVE LOADING ***/ 50 | user_pref("network.http.speculative-parallel-limit", 0); 51 | user_pref("network.dns.disablePrefetch", true); 52 | user_pref("network.dns.disablePrefetchFromHTTPS", true); 53 | user_pref("browser.urlbar.speculativeConnect.enabled", false); 54 | user_pref("browser.places.speculativeConnect.enabled", false); 55 | user_pref("network.prefetch-next", false); 56 | user_pref("network.predictor.enabled", false); 57 | user_pref("network.predictor.enable-prefetch", false); 58 | 59 | /** EXPERIMENTAL ***/ 60 | user_pref("layout.css.grid-template-masonry-value.enabled", true); 61 | 62 | /**************************************************************************** 63 | * SECTION: SECUREFOX * 64 | ****************************************************************************/ 65 | /** TRACKING PROTECTION ***/ 66 | user_pref("browser.contentblocking.category", "strict"); 67 | user_pref("browser.download.start_downloads_in_tmp_dir", true); 68 | user_pref("browser.helperApps.deleteTempFileOnExit", true); 69 | user_pref("browser.uitour.enabled", false); 70 | user_pref("privacy.globalprivacycontrol.enabled", true); 71 | 72 | /** OCSP & CERTS / HPKP ***/ 73 | user_pref("security.OCSP.enabled", 0); 74 | user_pref("security.pki.crlite_mode", 2); 75 | 76 | /** SSL / TLS ***/ 77 | user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); 78 | user_pref("browser.xul.error_pages.expert_bad_cert", true); 79 | user_pref("security.tls.enable_0rtt_data", false); 80 | 81 | /** DISK AVOIDANCE ***/ 82 | user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); 83 | user_pref("browser.sessionstore.interval", 60000); 84 | 85 | /** SHUTDOWN & SANITIZING ***/ 86 | user_pref("browser.privatebrowsing.resetPBM.enabled", true); 87 | user_pref("privacy.history.custom", true); 88 | 89 | /** SEARCH / URL BAR ***/ 90 | user_pref("browser.urlbar.trimHttps", true); 91 | user_pref("browser.urlbar.untrimOnUserInteraction.featureGate", true); 92 | user_pref("browser.search.separatePrivateDefault.ui.enabled", true); 93 | user_pref("browser.urlbar.update2.engineAliasRefresh", true); 94 | user_pref("browser.search.suggest.enabled", false); 95 | user_pref("browser.urlbar.quicksuggest.enabled", false); 96 | user_pref("browser.urlbar.groupLabels.enabled", false); 97 | user_pref("browser.formfill.enable", false); 98 | user_pref("network.IDN_show_punycode", true); 99 | 100 | /** PASSWORDS ***/ 101 | user_pref("signon.formlessCapture.enabled", false); 102 | user_pref("signon.privateBrowsingCapture.enabled", false); 103 | user_pref("network.auth.subresource-http-auth-allow", 1); 104 | user_pref("editor.truncate_user_pastes", false); 105 | 106 | /** MIXED CONTENT + CROSS-SITE ***/ 107 | user_pref("security.mixed_content.block_display_content", true); 108 | user_pref("pdfjs.enableScripting", false); 109 | 110 | /** EXTENSIONS ***/ 111 | user_pref("extensions.enabledScopes", 5); 112 | 113 | /** HEADERS / REFERERS ***/ 114 | user_pref("network.http.referer.XOriginTrimmingPolicy", 2); 115 | 116 | /** CONTAINERS ***/ 117 | user_pref("privacy.userContext.ui.enabled", true); 118 | 119 | /** SAFE BROWSING ***/ 120 | user_pref("browser.safebrowsing.downloads.remote.enabled", false); 121 | 122 | /** MOZILLA ***/ 123 | user_pref("permissions.default.desktop-notification", 2); 124 | user_pref("permissions.default.geo", 2); 125 | user_pref("geo.provider.network.url", "https://beacondb.net/v1/geolocate"); 126 | user_pref("browser.search.update", false); 127 | user_pref("permissions.manager.defaultsUrl", ""); 128 | user_pref("extensions.getAddons.cache.enabled", false); 129 | 130 | /** TELEMETRY ***/ 131 | user_pref("datareporting.policy.dataSubmissionEnabled", false); 132 | user_pref("datareporting.healthreport.uploadEnabled", false); 133 | user_pref("toolkit.telemetry.unified", false); 134 | user_pref("toolkit.telemetry.enabled", false); 135 | user_pref("toolkit.telemetry.server", "data:,"); 136 | user_pref("toolkit.telemetry.archive.enabled", false); 137 | user_pref("toolkit.telemetry.newProfilePing.enabled", false); 138 | user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); 139 | user_pref("toolkit.telemetry.updatePing.enabled", false); 140 | user_pref("toolkit.telemetry.bhrPing.enabled", false); 141 | user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); 142 | user_pref("toolkit.telemetry.coverage.opt-out", true); 143 | user_pref("toolkit.coverage.opt-out", true); 144 | user_pref("toolkit.coverage.endpoint.base", ""); 145 | user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); 146 | user_pref("browser.newtabpage.activity-stream.telemetry", false); 147 | user_pref("datareporting.usage.uploadEnabled", false); 148 | 149 | /** EXPERIMENTS ***/ 150 | user_pref("app.shield.optoutstudies.enabled", false); 151 | user_pref("app.normandy.enabled", false); 152 | user_pref("app.normandy.api_url", ""); 153 | 154 | /** CRASH REPORTS ***/ 155 | user_pref("breakpad.reportURL", ""); 156 | user_pref("browser.tabs.crashReporting.sendReport", false); 157 | 158 | /**************************************************************************** 159 | * SECTION: PESKYFOX * 160 | ****************************************************************************/ 161 | /** MOZILLA UI ***/ 162 | user_pref("browser.privatebrowsing.vpnpromourl", ""); 163 | user_pref("extensions.getAddons.showPane", false); 164 | user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); 165 | user_pref("browser.discovery.enabled", false); 166 | user_pref("browser.shell.checkDefaultBrowser", false); 167 | user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); 168 | user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); 169 | user_pref("browser.preferences.moreFromMozilla", false); 170 | user_pref("browser.aboutConfig.showWarning", false); 171 | user_pref("browser.aboutwelcome.enabled", false); 172 | user_pref("browser.profiles.enabled", true); 173 | 174 | /** THEME ADJUSTMENTS ***/ 175 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); 176 | user_pref("browser.compactmode.show", true); 177 | user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS 178 | 179 | /** FULLSCREEN NOTICE ***/ 180 | user_pref("full-screen-api.transition-duration.enter", "0 0"); 181 | user_pref("full-screen-api.transition-duration.leave", "0 0"); 182 | user_pref("full-screen-api.warning.timeout", 0); 183 | 184 | /** URL BAR ***/ 185 | user_pref("browser.urlbar.unitConversion.enabled", true); 186 | user_pref("browser.urlbar.trending.featureGate", false); 187 | user_pref("dom.text_fragments.create_text_fragment.enabled", true); 188 | 189 | /** NEW TAB PAGE ***/ 190 | user_pref("browser.newtabpage.activity-stream.default.sites", ""); 191 | user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); 192 | user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); 193 | user_pref("browser.newtabpage.activity-stream.showSponsored", false); 194 | 195 | /** POCKET ***/ 196 | user_pref("extensions.pocket.enabled", false); 197 | 198 | /** DOWNLOADS ***/ 199 | user_pref("browser.download.manager.addToRecentDocs", false); 200 | 201 | /** PDF ***/ 202 | user_pref("browser.download.open_pdf_attachments_inline", true); 203 | 204 | /** TAB BEHAVIOR ***/ 205 | user_pref("browser.bookmarks.openInTabClosesMenu", false); 206 | user_pref("browser.menu.showViewImageInfo", true); 207 | user_pref("findbar.highlightAll", true); 208 | user_pref("layout.word_select.eat_space_to_next_word", false); 209 | 210 | /**************************************************************************** 211 | * START: MY OVERRIDES * 212 | ****************************************************************************/ 213 | // visit https://github.com/yokoffing/Betterfox/wiki/Common-Overrides 214 | // visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening 215 | // Enter your personal overrides below this line: 216 | 217 | 218 | 219 | /**************************************************************************** 220 | * SECTION: SMOOTHFOX * 221 | ****************************************************************************/ 222 | // visit https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js 223 | // Enter your scrolling overrides below this line: 224 | 225 | 226 | 227 | /**************************************************************************** 228 | * END: BETTERFOX * 229 | ****************************************************************************/ 230 | -------------------------------------------------------------------------------- /zen/user.js: -------------------------------------------------------------------------------- 1 | // 2 | /* You may copy+paste this file and use it as it is. 3 | * 4 | * If you make changes to your about:config while the program is running, the 5 | * changes will be overwritten by the user.js when the application restarts. 6 | * 7 | * To make lasting changes to preferences, you will have to edit the user.js. 8 | */ 9 | 10 | /**************************************************************************** 11 | * BetterZen * 12 | * "Ex nihilo nihil fit" * 13 | * version: 138 * 14 | * url: https://github.com/yokoffing/Betterfox * 15 | ****************************************************************************/ 16 | 17 | /**************************************************************************** 18 | * SECTION: FASTFOX * 19 | ****************************************************************************/ 20 | /** GFX ***/ 21 | user_pref("gfx.canvas.accelerated.cache-size", 512); 22 | 23 | /** DISK CACHE ***/ 24 | user_pref("browser.cache.disk.enable", false); 25 | 26 | /** NETWORK ***/ 27 | user_pref("network.http.pacing.requests.enabled", false); 28 | 29 | /** SPECULATIVE LOADING ***/ 30 | user_pref("network.dns.disablePrefetch", true); 31 | user_pref("network.dns.disablePrefetchFromHTTPS", true); 32 | user_pref("network.prefetch-next", false); 33 | user_pref("network.predictor.enabled", false); 34 | user_pref("network.predictor.enable-prefetch", false); 35 | 36 | /**************************************************************************** 37 | * SECTION: SECUREFOX * 38 | ****************************************************************************/ 39 | /** TRACKING PROTECTION ***/ 40 | user_pref("browser.contentblocking.category", "strict"); 41 | user_pref("browser.download.start_downloads_in_tmp_dir", true); 42 | 43 | /** OCSP & CERTS / HPKP ***/ 44 | user_pref("security.OCSP.enabled", 0); 45 | user_pref("security.pki.crlite_mode", 2); 46 | 47 | /** DISK AVOIDANCE ***/ 48 | user_pref("browser.sessionstore.interval", 60000); 49 | 50 | /** SHUTDOWN & SANITIZING ***/ 51 | user_pref("browser.privatebrowsing.resetPBM.enabled", true); 52 | user_pref("privacy.history.custom", true); 53 | 54 | /** SEARCH / URL BAR ***/ 55 | user_pref("browser.urlbar.quicksuggest.enabled", false); 56 | 57 | /** PASSWORDS ***/ 58 | user_pref("signon.formlessCapture.enabled", false); 59 | user_pref("signon.privateBrowsingCapture.enabled", false); 60 | user_pref("network.auth.subresource-http-auth-allow", 1); 61 | user_pref("editor.truncate_user_pastes", false); 62 | 63 | /** HEADERS / REFERERS ***/ 64 | user_pref("network.http.referer.XOriginTrimmingPolicy", 2); 65 | 66 | /** SAFE BROWSING ***/ 67 | user_pref("browser.safebrowsing.downloads.remote.enabled", false); 68 | 69 | /** MOZILLA ***/ 70 | user_pref("permissions.default.desktop-notification", 2); 71 | user_pref("permissions.default.geo", 2); 72 | user_pref("geo.provider.network.url", "https://beacondb.net/v1/geolocate"); 73 | user_pref("browser.search.update", false); 74 | user_pref("permissions.manager.defaultsUrl", ""); 75 | 76 | /**************************************************************************** 77 | * SECTION: PESKYFOX * 78 | ****************************************************************************/ 79 | /** MOZILLA UI ***/ 80 | user_pref("browser.shell.checkDefaultBrowser", false); 81 | 82 | /** NEW TAB PAGE ***/ 83 | user_pref("browser.newtabpage.activity-stream.default.sites", ""); 84 | 85 | /** URL BAR ***/ 86 | user_pref("dom.text_fragments.create_text_fragment.enabled", true); 87 | 88 | /**************************************************************************** 89 | * START: ZEN-SPECIFIC OVERRIDES * 90 | ****************************************************************************/ 91 | // Remove the slashes to enable the prefs 92 | 93 | // PREF: reduce CPU and GPU use until bug is fixed 94 | // [1] https://github.com/zen-browser/desktop/issues/6302 95 | user_pref("zen.view.experimental-rounded-view", false); 96 | 97 | // PREF: re-enable Windows efficiency mode 98 | //user_pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", true); 99 | 100 | // PREF: disable new tab preload since they are off by default 101 | //user_pref("browser.newtab.preload", false); 102 | 103 | // PREF: show Enhance Tracking Protection shield in URL bar 104 | // Currently bugged if you click to view what's blocked 105 | //user_pref("zen.urlbar.show-protections-icon", true); 106 | 107 | // PREF: Disable the Picture in picture pop-out when changing tabs 108 | //user_pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false); 109 | 110 | /**************************************************************************** 111 | * START: MY OVERRIDES * 112 | ****************************************************************************/ 113 | // visit https://github.com/yokoffing/Betterfox/wiki/Common-Overrides 114 | // visit https://github.com/yokoffing/Betterfox/wiki/Optional-Hardening 115 | // Enter your personal overrides below this line: 116 | 117 | 118 | /**************************************************************************** 119 | * SECTION: SMOOTHFOX * 120 | ****************************************************************************/ 121 | // Reset Zen's custom scrolling prefs to their Firefox defaults before making changes! 122 | // [1] Zen changes: https://github.com/zen-browser/desktop/blob/3932ec21f5661440c4b20796f90341a6ac725818/src/browser/app/profile/zen-browser.js#L297-L312 123 | // [2] Firefox defaults: https://searchfox.org/mozilla-release/source/modules/libpref/init/StaticPrefList.yaml 124 | // Then apply an example from Smoothfox 125 | // [3] https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js 126 | // Enter your scrolling overrides below this line: 127 | 128 | 129 | /**************************************************************************** 130 | * END: BETTERFOX * 131 | ****************************************************************************/ 132 | --------------------------------------------------------------------------------