├── .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 | [](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 | [](https://github.com/yokoffing/Betterfox/stargazers)
96 |
97 |
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 |
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 |
--------------------------------------------------------------------------------