Compare commits

...

198 Commits

Author SHA1 Message Date
dd29583735 Update .gitattributes 2017-12-30 19:33:25 +01:00
e3ad7055dd prefsCleaner 1.2
- Search string made case-sensitive, because Firefox preferences are.
- The script now uses regex, which allows it to understand `user.js` files formatted using single quotes, spaces and/or tabs in `user_pref` lines.

Trade-off: it can no longer reset preferences that include some special characters in their names. Not an issue for now, just something to remember.

See full discussion [here](https://github.com/ghacksuserjs/ghacks-user.js/pull/321).
2017-12-30 19:25:57 +01:00
c1c368bce9 1.2
- Search string made case-sensitive, because Firefox preferences are.
- The script now uses regex, which allows it to understand user.js files formatted using single quotes, spaces, or tabs.

Trade-off: it can no longer reset preferences that include some special characters in their names. Not an issue for now, just something to remember.
2017-12-29 20:14:08 +00:00
73f03c449f Merge pull request #322 from ghacksuserjs/2700-renumber
2700's section revamp #235
2017-12-27 16:49:00 +01:00
31ec621d3f typos 2017-12-27 20:23:27 +13:00
8f02a5bc40 2720->2730 reference 2017-12-27 20:21:54 +13:00
73811e49be 2700's section revamp #235 2017-12-27 20:13:41 +13:00
d7ab2f83e4 updates to prefsCleaner + updater.bat
Daily round of tweaks
2017-12-27 05:01:21 +01:00
c0f9e6ab2b Update prefsCleaner.bat 2017-12-27 04:59:24 +01:00
7cd2c650cb fix for previous commit
Take it or leave it. Up to you, as always.
2017-12-27 03:32:58 +00:00
a1f10513ea 1.2 2017-12-26 20:06:41 +00:00
74f18db85a 1.1 2017-12-26 20:04:57 +00:00
2ad3fbdbd3 Update updater.bat 2017-12-26 19:37:39 +00:00
68a44bcbb4 cosmetic fix
for calls to :message before the script begins logging (with -log)
2017-12-26 17:29:11 +00:00
1f15e287fb Updater for Windows 4.1 2017-12-26 00:30:49 +01:00
65b64f44b6 Update updater.bat 2017-12-26 00:16:27 +01:00
643206a3da autoparrot - second try 2017-12-25 15:30:09 +00:00
05ac6dd0ec autoparrot 2017-12-25 08:18:41 +00:00
daff5f6fa6 cosmetic fix + formatting
the fix in question just removes the extra space in the version + date output (line 91)
2017-12-25 03:48:39 +00:00
018fb2a321 cosmetic stuff 2017-12-25 03:33:36 +00:00
4f22afac7f rewording 2017-12-25 00:51:56 +00:00
94bbb6bab4 minor change 2017-12-24 16:55:17 +00:00
b9266bba1d 4.1
- added missing -unattended switch to the list of switches
- other minor changes
2017-12-24 16:49:33 +00:00
68efac4cc8 url change 2017-12-24 16:30:53 +13:00
db5706d949 url change 2017-12-24 16:29:36 +13:00
3ffdd67904 url change 2017-12-24 16:29:18 +13:00
83de87b18d url change 2017-12-24 16:28:58 +13:00
99016960fa url change 2017-12-24 16:28:33 +13:00
52efb2af7a url change 2017-12-24 16:27:47 +13:00
dbe0056c95 4500: canvas site permissions 2017-12-23 03:32:02 +13:00
987c996cce Update README.md 2017-12-22 02:04:37 +13:00
a1cae1ae74 Update README.md 2017-12-22 02:03:42 +13:00
0938d7bab2 add license 2017-12-22 02:02:57 +13:00
490d81657f Update README.md 2017-12-19 18:37:24 +01:00
4170529e39 Add files via upload 2017-12-19 17:31:49 +01:00
ffae671b27 Delete prefsCleaner.bat 2017-12-19 17:29:36 +01:00
48861e57e1 Add files via upload 2017-12-19 17:26:58 +01:00
b74b79f11c Delete prefsCleaner.bat 2017-12-19 17:26:39 +01:00
13534e33bc Add files via upload 2017-12-19 17:25:14 +01:00
148daa94cf Delete updater2.bat 2017-12-19 17:24:36 +01:00
88b08d4ac5 Delete updater.bat 2017-12-19 17:24:19 +01:00
ea76ea91af Add files via upload 2017-12-19 17:22:32 +01:00
8af0d4fa7a Update .gitattributes 2017-12-18 17:27:51 +01:00
877d6a5af2 Delete test.bat 2017-12-18 16:58:02 +01:00
e0cd64391c Create test.bat 2017-12-18 16:56:28 +01:00
464ffcd7e6 Update .gitattributes 2017-12-18 16:54:38 +01:00
16e8d6ca7a Update updater.bat 2017-12-18 16:48:15 +01:00
21b21d2adb Update .gitattributes 2017-12-18 16:44:36 +01:00
6973bb459c FIND instead of MORE
to keep TABS intact
2017-12-18 16:33:21 +01:00
1571e067e7 convert to CRLF on the fly
MORE also converts TABs to spaces, by default to 8 but I changed it to 4
2017-12-18 16:01:46 +01:00
1789fd902b Delete test.bat 2017-12-18 15:39:01 +01:00
8f4ab83301 Create test.bat 2017-12-18 15:38:18 +01:00
eeef37154d Update updater.bat 2017-12-18 15:10:35 +01:00
be563241d6 Update updater.bat 2017-12-18 15:10:18 +01:00
002780df8c Convert BAT line-endings to CRLF 2017-12-18 15:07:20 +01:00
901670fffc Convert BAT line-endings to CRLF
LF is messing with calls to :message in the updater, at least on my end.
2017-12-18 12:26:03 +00:00
3a403cd120 Updater for Windows v4.0
Fixes:
	- Merge function:
		*no longer has the potential to truncate super long lines. (8KB per line still IS the max!)
		*no more issues with exclamation marks in user_pref lines.

Improvements:
	- Overall better performance due to ECHO syntax changes.
	- Merge function on steroids! Faster than ever

Changes, Additions, Substractions:
	- Leading spaces are no longer ignored by the merge function. Lines to be merged must begin with user_pref.
	- Added header with name, author, version.
	- Added help sub-menu.
	- Added special message when no override files are found when using -multiOverrides.
	- Formatting changes.
2017-12-17 17:13:18 +01:00
25321e7262 4.0? 2017-12-17 15:59:55 +00:00
ca947c6ae4 4.0b3 - ignore the previous commit lol 2017-12-17 15:02:52 +00:00
c9f62822a6 4.0b3
- Fix for empty lines.
- Went back to using FIND in the main loop for the good reasons stated by @earthing
2017-12-17 15:01:06 +00:00
240bcbfbee 4.0b2
Not all issues fixed yet.
2017-12-17 13:46:39 +00:00
1262edee61 tiny issues
space instead of TAB, missing quotation marks and suppressing the error message when no *.js files are found in the OR-folder
2017-12-17 13:02:34 +01:00
2f5ae9b294 v4.0b
Fixes:
	- Merge function:
		*no longer has the potential to truncate super long lines.
		*no more issues with exclamation marks in user_pref lines.

Improvements:
	- Overall better performance due to ECHO syntax changes.
	- Merge function on steroids! Faster than ever, and no longer generates temporary files at all. As it always should have been.

Changes, Additions, Substractions:
	- Leading spaces are no longer ignored by the merge function. Lines to be merged must begin with user_pref.
	- Added header with name, author, version.
	- Added help sub-menu.
	- Added special message when no override files are found when using -multiOverrides.
	- Formatting changes.
2017-12-16 17:55:08 +00:00
fbd9f344af prefs.js cleaner for Windows v1.0
thanks @claustromaniac!
2017-12-15 21:11:53 +01:00
323da46204 4500: RFP warn if language set to non en-US
fixes #304
2017-12-16 05:21:08 +13:00
28f06b41e3 Merge pull request #309 from claustromaniac/master
Updater for Windows 3.2
2017-12-10 15:55:15 +01:00
77ca6af2d9 I said 3.2.
I'm not me if I don't miss something.
2017-12-10 01:20:39 +00:00
e663b8a968 3.2
Prevent issues handling the script when the name includes spaces.

+ Formatting.
2017-12-09 16:49:42 +00:00
f8ec9cebdd fix url 2017-12-09 10:31:09 +13:00
24df3274f1 fix url 2017-12-09 10:29:29 +13:00
f5a4ec0cbd fix url 2017-12-09 10:28:58 +13:00
abbbf8ef0e fix url 2017-12-09 10:28:28 +13:00
b9c8329778 fix url 2017-12-09 10:27:58 +13:00
8f68ee3e9e fix url 2017-12-09 10:27:21 +13:00
4d2c26790f wiki link changes 2017-12-09 07:51:35 +13:00
ab492c58c3 0850a: remove cruff 2017-12-09 07:05:15 +13:00
4fc7490405 comment out three items see #308 2017-12-09 06:20:16 +13:00
11b0b779b8 fixes #308 2017-12-09 06:13:40 +13:00
4ae5967e09 Update ghacks-clear-all-up-to-57-[the-rest-inactive].js 2017-12-09 02:02:04 +13:00
ebd233bf6e Create ghacks-clear-all-up-to-57-[the-rest-active].js 2017-12-09 02:00:56 +13:00
f2ed64c576 Update ghacks-clear-all-up-to-57-[the-rest-inactive].js 2017-12-09 01:58:27 +13:00
f09c860d96 clear inactive: move parrot to end 2017-12-09 01:33:38 +13:00
753c4695a6 oophs 2017-12-09 01:28:50 +13:00
7655648174 clear removed: move parrot to end 2017-12-09 01:28:16 +13:00
f8472fe501 clear deprecated: move parrot to end 2017-12-09 01:27:05 +13:00
d82475a7c3 clear RFP-alts: move parrot to end 2017-12-09 01:25:14 +13:00
008257283b 2508: hardware acceleration #244
I guess we can revisit this when Tor ESR59 lands or even later when WebRender is fully implemented. For now, users can override it if they wish
2017-12-09 00:56:53 +13:00
d9e935de3c syntax fix 2017-12-08 12:47:31 +01:00
e73eeefa64 Update ghacks-clear-all-up-to-57-[the-rest-inactive].js 2017-12-08 21:01:28 +13:00
744944a9ab Create ghacks-clear-all-up-to-57-[the-rest-inactive].js 2017-12-08 20:26:49 +13:00
5631fadd4a Update ghacks-clear-all-up-to-57-[RFP-alternatives].js 2017-12-08 19:38:08 +13:00
ea54827582 Create ghacks-clear-all-up-to-57-[RFP-alternatives].js 2017-12-08 19:24:32 +13:00
28ba2a705a Create ghacks-clear-all-up-to-57-[deprecated].js 2017-12-08 19:14:53 +13:00
a9def5992f Create ghacks-clear-all-up-to-57-[removed].js 2017-12-08 19:13:45 +13:00
9aa9752dc4 Update README.md 2017-12-08 00:07:18 +13:00
eb2a9b2493 Update README.md 2017-12-07 23:35:58 +13:00
60cfacadb3 Update README.md 2017-12-07 23:20:11 +13:00
85e633dc60 Update README.md 2017-12-07 23:18:15 +13:00
61aeaa4714 Update README.md 2017-12-07 23:10:21 +13:00
b802ecb18f Update README.md 2017-12-07 23:09:19 +13:00
9b5d4521d1 Update README.md 2017-12-07 23:01:40 +13:00
8f34f8e0ff Update user.js 2017-12-07 17:12:13 +13:00
f683383ba3 Update user.js 2017-12-07 17:10:31 +13:00
83aa56e353 Update README.md 2017-12-07 16:52:51 +13:00
467b3d8602 1273: FF59+ show HTTP with negative indicator #305 2017-12-07 14:08:23 +13:00
183a62448f 1110: updated URL 2017-12-03 19:01:24 +01:00
ac751a74f2 Updater for Windows 3.1
more polishing and some changes to prevent potential issues when the user closes the console window too soon.
2017-12-03 16:17:24 +01:00
457ef9ec2f 3.1 tidy up 2017-12-03 15:07:15 +00:00
a6c93b3982 Revert "3.1"
This reverts commit ccaf06973b.
2017-12-03 15:04:41 +00:00
ccaf06973b 3.1
Minor change suggested by earthing.
2017-12-03 15:01:45 +00:00
ce3c077d06 3.1 2017-12-03 13:35:41 +00:00
edec5cc366 Update README.md 2017-12-03 06:35:08 +13:00
8a99bb350c 3.1a2 2017-12-01 01:05:24 -03:00
fc47792df2 3.1a1 2017-11-30 22:17:58 +00:00
e5d00be8f0 Revert "3.1a1"
This reverts commit ac7ad78d1d.
2017-11-30 22:11:42 +00:00
ac7ad78d1d 3.1a1
Just added a few lines to make batch updates more visible - which helps with testing.
2017-11-30 18:22:18 +00:00
cf6f614f5b 2706: Storage API => active, disabled #281 2017-11-30 14:12:53 +13:00
00e17281dc Updater 3.1a
-updatebatch now will (or at least should):
*Download new batch and name it [updater]*.bat
*Open that script in a new CMD window.
*Exit

The [updated]*.bat script should:
*Copy itself overwriting the original batch (without renaming).
*Start that script in a new CMD instance.
*Exit.

The new script, with the original name, should:
*Delete the [updated]*.bat script
*Begin the normal script routine.

@earthing do you think I should still rename the scripts to .old or something before overwriting/deleting?
2017-11-30 00:10:01 +00:00
9a4982ec0e updater.bat v3.0 FINAL
THE REAL FUCKING DEAL this time - finally! THANKS @claustromaniac !!
2017-11-29 23:23:57 +01:00
0a97660506 updater.bat v3.0 FINAL
THE REAL FUCKING DEAL this time - finally! THANKS @claustromaniac !!
2017-11-29 23:20:00 +01:00
3737b65f53 Fixed issue with commented-out user_pref lines
It ended up being a mixture of the previous commit and the fix. It writes a temporary file on the go that only holds preferences, and generates the target file at once at the end. It's slower than before, but it works.
2017-11-29 16:15:20 +00:00
635cacfe54 Replace PING with TIMEOUT
Otherwise earthing's nosy firewall bitches about it.
2017-11-29 15:49:21 +00:00
a126a32109 Revert "2nd merge optimisation"
This reverts commit c9e7f1ccfa.
2017-11-29 15:18:23 +00:00
c9e7f1ccfa 2nd merge optimisation
While I figure out a fix for the missing characters...

Enclosing the whole merging loop in parentheses and replacing the source file with the entire output at once is more efficient than appending individual lines with >>%~2. The script doesn't have to wait for the HD to continue processing.
2017-11-29 12:08:15 +00:00
ff9370b714 fix for hiding powershell output
Everything in a line after a powershell call is considered as being called from PowerShell.

>nul didn't work because of that. Enclosing the line in brackets should fix it.
2017-11-29 04:56:33 +00:00
b1fd2ba48b minor fix
What would we want a warning that we can't get to read for?
2017-11-29 04:50:01 +00:00
bdf69cd198 misc
To account for the possibility of the user running the script silently in the background. PAUSE would leave an instance in memory doing nothing indefinitely.

I was going to use TIMEOUT but PING performs better.
2017-11-29 04:33:02 +00:00
22695f464b 2303->2700s serviceWorker cache #235 2017-11-29 16:21:17 +13:00
44e129ea3d 1830: ref for DRM / EME 2017-11-29 13:32:48 +13:00
6ff3d1eb36 Fix for the self-update feature and misc
Also minor but significant improvement to the merge function: it no longer writes temp files to the disk while processing data.
2017-11-28 21:53:20 +00:00
a389572243 loops forever - fuck it 2017-11-28 18:33:31 +01:00
51d98fac09 last attempt
if this doesn't work I'll remove the damn -updatebatch part for good
2017-11-28 18:27:55 +01:00
d71321027b updater.bat v3.0 the real deal
updater auto-update part - let's give this a shot - volunteers?
2017-11-28 18:17:47 +01:00
ed4c9202b9 updater.bat v3.0 the real deal
hopefully :fingers_crossed:
2017-11-28 18:15:14 +01:00
5b931b06e8 updater.bat auto-update part 2017-11-28 17:34:14 +01:00
d3eda589bb Update updater.bat 2017-11-28 17:32:32 +01:00
0be33e2408 4700: UA Spoof fix ref link 2017-11-28 13:53:15 +13:00
eba3470a81 2700: header fiddling 2017-11-28 13:32:49 +13:00
1c997693ff merging improvements
- keeps all user.js.parrot lines intact
- keeps empty lines intact
- fix for keeping `!` and `^` in non-"user_pref" lines intact

+ some other minor changes + streamlining
2017-11-27 14:02:12 +01:00
76b24fa6aa 2700: header formatting 2017-11-27 10:22:55 +13:00
3b95e04b56 2700: header info 2017-11-27 10:14:55 +13:00
3ec7dae496 Update updater.bat
merge functionality and some cleanup
2017-11-26 21:47:30 +01:00
a269e53f88 Update updater.bat
- multioverrides support
- formatting changes
2017-11-26 15:57:32 +01:00
1789fea4f1 updater.sh - next attempt
... at fixing the script path detection. should hopefully fix #264 (comment)
2017-11-25 18:58:10 +01:00
679ca59233 Update updater.sh 2017-11-25 18:56:49 +01:00
82d20c328d 4000: PSA on FPI #281 2017-11-26 03:23:35 +13:00
41a55ad5f2 Update updater.sh 2017-11-25 14:37:25 +01:00
2c1e4ae542 updater.sh - next attempt
... at fixing the script path detection. should hopefully fix https://github.com/ghacksuserjs/ghacks-user.js/issues/264#issuecomment-346891526
2017-11-25 14:31:17 +01:00
910d4e2e59 2700s: numbers fixup
stop overworking me guys! crssi - thanks!
2017-11-25 23:35:14 +13:00
2bf9e6a773 0103: fixup lets try that again 2017-11-25 22:14:28 +13:00
d279839ba6 0103: fixup - thanks Forsaked 2017-11-25 22:11:49 +13:00
98bb8ad203 Update ghacks-clear-57-[changes-only].js 2017-11-25 17:33:32 +13:00
a281090cdc Delete test.js 2017-11-25 17:30:53 +13:00
44316934f3 release date & version fixup
You had it right the first time earthlng. Eg Start commits for 55-beta date shown is 9-July. 55-alpha release is dated 18-Aug and we drop the "-beta" part (look inside the release downloads). Start commits for 56-beta date shown is 12-Sept. 56-alpha release is dated 2-Oct and we drop the "-beta" part. And because you created the 57-alpha release before you reversed the date+version, that too is all good.
2017-11-25 16:47:12 +13:00
18048832da various => 2700 section #235
section 2700 will get a revamp, so not worried about numbering for now. Slight header tweak until we revamp
2017-11-25 16:12:29 +13:00
497f6ed58c 0103: home page #277 2017-11-25 15:33:07 +13:00
63b924f101 Create ghacks-clear-57-[changes-only].js
https://github.com/ghacksuserjs/ghacks-user.js/issues/276
https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.6-Bulk-Pref-Resetting-%5BScratchpad%5D
2017-11-20 15:35:52 +01:00
e1e40847e0 ooops, that's not how Pants usually does it
nobody saw that, right?
2017-11-20 14:01:57 +01:00
5743fe303c 57 release 2017-11-20 13:55:02 +01:00
89e0aed652 4600: redundant prefs due to RFP 2017-11-20 13:49:19 +01:00
59ae0b1028 2706: *.storageManager.enabled;false => inactive
Controls the visibility of the "Options>Privacy & Security>Site Data" section.
I'd prefer to remove this completely because it only adds to the confusion about all the different storage types.
This is just an extension for localStorage (2705) with 3 methods: estimate(), persist() and persisted(). A site can ask for permission (?) to persist data which when granted basically just means that "Storage will not be cleared except by explicit user action" whereas otherwise when not persisted "Storage may be cleared by the UA under storage pressure." - I don't see a problem with that.
We'll keep 2706 inactive for now but might remove it in a future commit.
2017-11-20 13:11:55 +01:00
69c278c3ba 2630: accessibility.force_disabled => 1
Prevent accessibility services from accessing your browser
2017-11-20 11:26:03 +01:00
4290b4e882 Merge pull request #275 from claustromaniac/claustromaniac-patch-1
Just some polishing
2017-11-19 22:32:06 +01:00
efcaa3de8a Just some polishing 2017-11-19 17:41:19 +00:00
cdeb0abe79 update to v2.0
https://github.com/ghacksuserjs/ghacks-user.js/issues/264#issuecomment-345462158

- It can now handle read-only files.
- it is somewhat more explicit regarding what it's doing in some circumstances. For example, it now informs the user when no changes are made.
- It now accepts two parameters: `-unattended` and `-log`
- Minor improvements here and there.
2017-11-19 08:58:47 +01:00
450adab519 2706: Storage API => active false #273
Sorry, but AFAIK, with this enabled it clears web extension storage when clear "offsite website data" is checked on close or manually (which we do in the user.js). Note also that even with this enabled, the UI settings are disabled, and the data-on-disk calculation never finishes, so at this point, its a bit useless to enable it until we figure that out. Will be back in 7 days
2017-11-19 08:21:18 +13:00
500c129d48 fix for profile detection
this should now work no matter how the script is called (including symlinks) on both Mac and Linux.
+ Storing and restoring the original working directory to prevent problems in certain circumstances.
2017-11-18 13:39:29 +01:00
7ae034a23c 2706: Storage API => inactive 2017-11-18 18:01:01 +13:00
754ec610d1 typo 2017-11-17 15:48:39 +01:00
fe752c8be3 Create updater.bat
thanks @claustromaniac
2017-11-17 15:45:16 +01:00
da3ba2a97f Create updater.sh
thanks @overdodactyl !!
2017-11-17 15:26:27 +01:00
22e51e2a08 0506: disable PingCenter telemetry 2017-11-17 04:06:04 +13:00
c6d55296fb typo
used to be 2021 not 2012, see 908a8d66f4
2017-11-16 06:46:35 +01:00
f89bb3f1c2 9999: deprecated FF57 2017-11-16 17:03:08 +13:00
64a6eb794a 0850f: disable local search history in locationbar
kinda moot considering 0860 disables all search history :) Added for completeness so users can tweak their awesomebar to their little hearts content
2017-11-16 16:27:54 +13:00
fe46ea79ce 4500: RFP MediaDevices API FF59+ 2017-11-15 16:03:42 +13:00
d256908a5f 0330: telemetry changes 58+ #271 2017-11-15 13:51:20 +13:00
dedfbf04b6 5008: syntax fixup 2017-11-14 10:00:31 +13:00
e080becba5 2610: permissions.manager.defaultsUrl #259
FYI: https://bugzilla.mozilla.org/show_bug.cgi?id=506446 - FF35
2017-11-12 00:14:36 +13:00
76bc2bce25 5008: open bookmarks in a new tab 2017-11-11 23:04:30 +13:00
7f4a671b09 fixup spacing 2017-11-09 12:15:02 +13:00
b373fe2a58 5014: download button visibility 2017-11-09 10:54:52 +13:00
95f1d6ecf6 0514: activity stream fixup
`browser.newtabpage.activity-stream.aboutHome.enabled` is not needed, as it is controlled by `browser.newtabpage.activity-stream.enabled`
2017-11-09 10:31:08 +13:00
3028a7a61a 5025: another media type 2017-11-09 07:58:21 +13:00
06d9d61558 0514: more activity stream 2017-11-09 07:05:08 +13:00
1dd683c81f 0330: more telemetry pings 2017-11-09 03:13:42 +13:00
2c56d90a6f Create test.js 2017-11-01 02:28:23 +13:00
df01fb87ce 2300: *workers info fixup
"Push and web notifications require service workers, which in turn require workers." - this is clearly not (or no longer) true. See #256 where workers are disabled, but service workers enabled, and service workers create IDB entries on Youtube
2017-10-31 20:17:26 +13:00
ce66da10a4 start 57 commits 2017-10-31 16:51:44 +13:00
e1034faf1f readme: extension cookie exceptions 2017-10-31 16:29:46 +13:00
d4cfd1e885 4500: canvas extraction 967895 2017-10-29 05:11:43 +13:00
6cdfd1a443 Add files via upload 2017-10-09 17:24:42 +13:00
ca16792723 4600s: add ref to old numbers 2017-10-06 21:44:19 +13:00
6e2479dc0f 0210 tweak 2017-10-04 07:53:12 +13:00
bbb29237cc 4609 + 02xx cleanup
Only `geo.enabled` is covered by RFP, keep the other prefs under 0200 and do some cleanup

- 0202: the /en-US/ in link [2] is necessary for the anchor to work!
- `browser.search.geoip.timeout;1` is unnecessary when `browser.search.geoip.url` is empty string:
https://dxr.mozilla.org/mozilla-central/source/toolkit/components/search/nsSearchService.js#576
2017-10-03 17:37:50 +02:00
fec0c99287 4608 - remove media.webspeech.recognition.enable
the 2nd part of the Web Speech API, SpeechRecognition, is not yet implemented on Desktop Firefox:

https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition#Browser_compatibility

> * [2] Can be enabled via the `media.webspeech.recognition.enable` flag in about:config **on mobile**. **Not implemented at all on Desktop Firefox** — see [bug 1248897](https://bugzilla.mozilla.org/show_bug.cgi?id=1248897).
2017-10-03 17:00:11 +02:00
258e8ff805 4700 fixup
remove mention of ESR, fix current TBB platform as 32bit - not that it matters, it's all inactive
2017-10-02 17:53:24 +13:00
a74170e2b0 5005: clipboard.autocopy #109
this is a linux only pref, does nothing in Windows or Mac, as per tagging convention => [LINUX]. Here's a 15 year old ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=160200 .. enjoy! PS: Trying to find an autocopy text (excluding form fields) that auto trims, auto removes multi-spaces, auto trims, and auto removes double blank lines .. I had one, but its legacy. Best I can find is https://addons.mozilla.org/en-US/firefox/addon/autocopy-webextension/ - a wee timer in options lets you control when you copy (that's ok), but it gives a notification every time which is annoying as f - anyone got any ideas
2017-10-02 11:46:34 +13:00
15 changed files with 1554 additions and 138 deletions

16
.gitattributes vendored
View File

@ -1,8 +1,14 @@
* text=auto
## * text=auto
*.js text
*.md text
*.yml text
*.txt text
*.js text=auto
*.md text=auto
*.yml text=auto
*.txt text=auto
*.sh text=auto
*.bat eol=crlf
*.png binary
.gitattributes export-ignore
*.yml export-ignore
wikipiki export-ignore

View File

@ -2,36 +2,20 @@
A `user.js` is a configuration file that can control hundreds of Firefox settings. For a more technical breakdown and explanation, you can read more on the [overview](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.1-Overview) wiki page.
### ![](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/wikipiki/bullet01.png) ghacks user.js
The [ghacks user.js](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/user.js) is a template, which, as provided, aims (![](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/wikipiki/exclamation.png) with [extensions](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-B:-Extensions) <sup>1</sup> ) to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
The `ghacks user.js` is a **template**, which, as provided, aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
We aim to INFORM and give you CHOICES. No one size fits all, so customize it! And not all sites have the same requirements, so use [profiles](https://github.com/ghacksuserjs/ghacks-user.js/wiki/2.3-Concurrent-Profiles) with custom versions. We won't set you wrong.
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `ghacks user.js` settings.
INFORMATION IS POWER. So you can make informed decisions to better protect yourself online, we aim to be:
* Accessible (provide information and simpler, less-technical descriptions if possible)
* Accountable (provide reputable references/sources, [test sites](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-C:-Test-Sites), dispel bad advice)
* Change trackable (yay! we're on github now, with commits)
* Compatible (including a [deprecated section](https://github.com/ghacksuserjs/ghacks-user.js/issues/123), [releases](https://github.com/ghacksuserjs/ghacks-user.js/releases))
* Comprehensive (including enforcing defaults and future-proofing)
* Current and up-to-date with stable (including [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/search?q=label%3Achangelog&type=Issues&utf8=%E2%9C%93))
* Detailed (preference versioning, hidden preference information, explanations, and more)
* Easy to use and discuss (sections, sub-sections, numbering)
* Helpful (including a [wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki) with features such as [extensions](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-B:-Extensions), [user scripts](https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-User-Scripts), [references](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-D:-References) and more)
* Innovative (formatting, special tags, and future plans such as branches)
### ![](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/wikipiki/bullet01.png) usage
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few default settings we use. The rest of the [wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki) is helpful as well.
Sitemap: [Releases](https://github.com/ghacksuserjs/ghacks-user.js/releases), [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Achangelog), [Wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki), [stickies](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22)
### ![](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/wikipiki/bullet01.png) acknowledgments
Literally thousands of sources, references and suggestions. That said...
* Martin Brinkmann at [ghacks](https://www.ghacks.net/) <sup>2</sup>
* 100% genuine super-nice all-around good guy
* Martin Brinkmann at [ghacks](https://www.ghacks.net/) <sup>1</sup>
* The ghacks community and commentators
* Special mentions to [earthlng](https://github.com/earthlng), Tom Hawack, Just me, Conker, Rockin Jerry, Ainatar, Parker Lewis
* [12bytes](http://12bytes.org/articles/tech/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs)
* [12bytes](http://12bytes.org/tech/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs)
* The 12bytes article now uses this user.js and supplements it with an additonal JS hosted right [here](https://github.com/atomGit/Firefox-user.js) at github
<sup>1</sup> ![](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/wikipiki/exclamation.png) Important: We HIGHLY recommend using uBlock Origin, uMatrix and a cookie extension. Section 0400, if modified, allows Tracking Protection and Safe Browsing to be disabled. Do this at your own risk. See the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page for more.
<sup>1</sup> The ghacks user.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. With Martin Brinkmann's blessing, it will keep the ghacks name.
<sup>2</sup> The ghacks user.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. It was kept up-to-date and expanded by the original author with three major updates and articles. With Martin Brinkmann's blessing, it will keep the ghacks name.
### ![](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/wikipiki/bullet01.png) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

113
prefsCleaner.bat Normal file
View File

@ -0,0 +1,113 @@
@ECHO OFF
TITLE prefs.js cleaner
REM ### prefs.js cleaner for Windows
REM ## author: @claustromaniac
REM ## version: 1.2
SETLOCAL EnableDelayedExpansion
:begin
ECHO:
ECHO:
ECHO ########################################
ECHO #### prefs.js cleaner for Windows ####
ECHO #### by claustromaniac ####
ECHO #### v1.2 ####
ECHO ########################################
ECHO:
CALL :message "This script should be run from your Firefox profile directory."
ECHO It will remove any entries from prefs.js that also exist in user.js.
CALL :message "This will allow inactive preferences to be reset to their default values."
ECHO This Firefox profile shouldn't be in use during the process.
CALL :message ""
TIMEOUT 1 /nobreak >nul
CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]"
CLS
IF ERRORLEVEL 3 (EXIT /B)
IF ERRORLEVEL 2 (GOTO :showhelp)
IF NOT EXIST "user.js" (CALL :abort "user.js not found in the current directory." 30)
IF NOT EXIST "prefs.js" (CALL :abort "prefs.js not found in the current directory." 30)
CALL :FFcheck
CALL :message "Backing up prefs.js..."
COPY /B /V /Y prefs.js "prefs-backup-!date:/=-!_!time::=.!.js"
CALL :message "Cleaning prefs.js..."
CALL :cleanup
CLS
CALL :message "All done^!"
TIMEOUT 5 >nul
EXIT /B
REM ########## Abort Function ###########
:abort
CALL :message %1
TIMEOUT %~2 >nul
EXIT
REM ########## Message Function #########
:message
SETLOCAL DisableDelayedExpansion
ECHO:
ECHO: %~1
ECHO:
ENDLOCAL
GOTO :EOF
REM ####### Firefox Check Function ######
:FFcheck
TASKLIST /FI "IMAGENAME eq firefox.exe" 2>NUL | FIND /I /N "firefox.exe">NUL
IF NOT ERRORLEVEL 1 (
CLS
CALL :message "Firefox is still running."
ECHO If you're not currently using this profile you can continue, otherwise
CALL :message "close Firefox first^!"
ECHO:
PAUSE
CLS
CALL :message "Resuming..."
TIMEOUT 5 /nobreak >nul
)
GOTO :EOF
REM ######### Cleanup Function ##########
:cleanup
SETLOCAL DisableDelayedExpansion
(
FOR /F "tokens=1,* delims=:" %%G IN ('FINDSTR /N "^" prefs.js') DO (
SET "_line=%%H"
SETLOCAL EnableDelayedExpansion
IF /I "user_pref"=="!_line:~0,9!" (
FOR /F tokens^=2^ delims^=^" %%I IN ("!_line:.=\.!") DO (
FINDSTR /R /C:"user_pref[ ]*\([ ]*[\"']%%I[\"'][ ]*," user.js >nul
IF ERRORLEVEL 1 (ECHO:!_line!)
)
) ELSE (
ECHO:!_line!
)
ENDLOCAL
)
)>tempcleanedprefs
ENDLOCAL
MOVE /Y tempcleanedprefs prefs.js
GOTO :EOF
REM ############### Help ##################
:showhelp
MODE 80,34
CLS
CALL :message "This script creates a backup of your prefs.js file before doing anything."
ECHO It should be safe, but you can follow these steps if something goes wrong:
ECHO:
CALL :message " 1. Make sure Firefox is closed."
ECHO 2. Delete prefs.js in your profile folder.
CALL :message " 3. Delete Invalidprefs.js if you have one in the same folder."
ECHO 4. Rename or copy your latest backup to prefs.js.
CALL :message " 5. Run Firefox and see if you notice anything wrong with it."
ECHO 6. If you do notice something wrong, especially with your extensions,
CALL :message " and/or with the UI, go to about:support, and restart Firefox with"
ECHO add-ons disabled. Then, restart it again normally, and see if the
CALL :message " problems were solved."
ECHO:
CALL :message "If you are able to identify the cause of your issues, please bring it up"
ECHO on ghacks-user.js GitHub repository.
ECHO:
ECHO:
PAUSE
CLS
GOTO :begin
REM #####################################

View File

@ -0,0 +1,61 @@
/***
For instructions see:
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
***/
(function() {
let ops = [
/* --- 57-alpha --- */
/* commented out */
'browser.storageManager.enabled',
'dom.storageManager.enabled',
/* removed from the user.js */
'browser.search.geoip.timeout',
'geo.wifi.xhr.timeout',
'gfx.layerscope.enabled',
'media.webspeech.recognition.enable',
/* moved to RFP ALTERNATIVES */
'dom.w3c_touch_events.enabled',
'media.video_stats.enabled',
/* moved to DEPRECATED/REMOVED */
'browser.bookmarks.showRecentlyBookmarked',
'browser.casting.enabled',
'devtools.webide.autoinstallFxdtAdapters',
'media.eme.chromium-api.enabled',
'social.directories',
'social.enabled',
'social.remote-install.enabled',
'social.share.activationPanelEnabled',
'social.shareDirectory',
'social.toast-notifications.enabled',
'social.whitelist',
/* reset parrot: check your open about:config after running the script */
'_user.js.parrot'
]
if("undefined" === typeof(Services)) {
alert("about:config needs to be the active tab!");
return;
}
let c = 0;
for (let i = 0, len = ops.length; i < len; i++) {
if (Services.prefs.prefHasUserValue(ops[i])) {
Services.prefs.clearUserPref(ops[i]);
if (!Services.prefs.prefHasUserValue(ops[i])) {
console.log("reset", ops[i]);
c++;
} else { console.log("failed to reset", ops[i]); }
}
}
focus();
let d = (c==1) ? " pref" : " prefs";
if (c > 0) {
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
} else { alert("nothing to reset"); }
})();

View File

@ -0,0 +1,60 @@
/***
This will reset the preferences that are under sections 4600 & 4700 in the ghacks user.js
up to and including release 57-alpha. These are the prefs that are no longer necessary,
or they conlfict with, privacy.resistFingerprinting if you have that enabled.
For instructions see:
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
***/
(function() {
let ops = [
/* section 4600 */
'dom.maxHardwareConcurrency',
'dom.enable_resource_timing',
'dom.enable_performance',
'device.sensors.enabled',
'browser.zoom.siteSpecific',
'dom.gamepad.enabled',
'dom.netinfo.enabled',
'media.webspeech.synth.enabled',
'geo.enabled',
'media.video_stats.enabled',
'dom.w3c_touch_events.enabled',
/* section 4700 */
'general.useragent.override',
'general.buildID.override',
'general.appname.override',
'general.appversion.override',
'general.platform.override',
'general.oscpu.override',
/* reset parrot: check your open about:config after running the script */
'_user.js.parrot'
]
if("undefined" === typeof(Services)) {
alert("about:config needs to be the active tab!");
return;
}
let c = 0;
for (let i = 0, len = ops.length; i < len; i++) {
if (Services.prefs.prefHasUserValue(ops[i])) {
Services.prefs.clearUserPref(ops[i]);
if (!Services.prefs.prefHasUserValue(ops[i])) {
console.log("reset", ops[i]);
c++;
} else { console.log("failed to reset", ops[i]); }
}
}
focus();
let d = (c==1) ? " pref" : " prefs";
if (c > 0) {
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
} else { alert("nothing to reset"); }
})();

View File

@ -0,0 +1,167 @@
/***
This will reset the preferences that have been deprecated by Mozilla
and used in the ghacks user.js up to and including release 57-alpha
It is in reverse order, so feel free to remove sections that do not apply
For instructions see:
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
***/
(function() {
let ops = [
/* deprecated */
/* ESR52.x users can remove sections 53-57 but it is not
crucial as your user.js will reinstate them */
/* 57 */
'social.whitelist',
'social.toast-notifications.enabled',
'social.shareDirectory',
'social.remote-install.enabled',
'social.directories',
'social.share.activationPanelEnabled',
'social.enabled',
'media.eme.chromium-api.enabled',
'devtools.webide.autoinstallFxdtAdapters',
'browser.casting.enabled',
'browser.bookmarks.showRecentlyBookmarked',
/* 56 */
'extensions.screenshots.system-disabled',
'extensions.formautofill.experimental',
/* 55 */
'geo.security.allowinsecure',
'browser.selfsupport.enabled',
'browser.selfsupport.url',
'browser.newtabpage.directory.ping',
'browser.formfill.saveHttpsForms',
'browser.formautofill.enabled',
'dom.enable_user_timing',
'dom.keyboardevent.code.enabled',
'browser.tabs.animate',
'browser.fullscreen.animate',
/* 54 */
'browser.safebrowsing.reportMalwareMistakeURL',
'browser.safebrowsing.reportPhishMistakeURL',
'media.eme.apiVisible',
'dom.archivereader.enabled',
/* 53 */
'security.tls.unrestricted_rc4_fallback',
'plugin.scan.Acrobat',
'plugin.scan.Quicktime',
'plugin.scan.WindowsMediaPlayer',
'media.getusermedia.screensharing.allow_on_old_platforms',
'dom.beforeAfterKeyboardEvent.enabled',
/* End of ESR52.x section */
/* 52 */
'network.http.sendSecureXSiteReferrer',
'media.gmp-eme-adobe.enabled',
'media.gmp-eme-adobe.visible',
'media.gmp-eme-adobe.autoupdate',
'dom.telephony.enabled',
'dom.battery.enabled',
/* 51 */
'media.block-play-until-visible',
'dom.vr.oculus050.enabled',
'network.http.spdy.enabled.v3-1',
/* 50 */
'browser.usedOnWindows10.introURL',
'plugins.update.notifyUser',
'browser.safebrowsing.enabled',
'security.ssl3.ecdhe_ecdsa_rc4_128_sha',
'security.ssl3.ecdhe_rsa_rc4_128_sha',
'security.ssl3.rsa_rc4_128_md5',
'security.ssl3.rsa_rc4_128_sha',
'plugins.update.url',
/* 49 */
'loop.enabled',
'loop.server',
'loop.feedback.formURL',
'loop.feedback.manualFormURL',
'loop.facebook.appId',
'loop.facebook.enabled',
'loop.facebook.fallbackUrl',
'loop.facebook.shareUrl',
'loop.logDomains',
'dom.disable_window_open_feature.scrollbars',
'dom.push.udp.wakeupEnabled',
/* 48 */
'browser.urlbar.unifiedcomplete',
/* 47 */
'toolkit.telemetry.unifiedIsOptIn',
'datareporting.healthreport.about.reportUrlUnified',
'browser.history.allowPopState',
'browser.history.allowPushState',
'browser.history.allowReplaceState',
/* 46 */
'datareporting.healthreport.service.enabled',
'datareporting.healthreport.documentServerURI',
'datareporting.policy.dataSubmissionEnabled.v2',
'browser.safebrowsing.appRepURL',
'browser.polaris.enabled',
'browser.pocket.enabled',
'browser.pocket.api',
'browser.pocket.site',
'browser.pocket.oAuthConsumerKey',
/* 45 */
'browser.sessionstore.privacy_level_deferred',
/* 44 */
'browser.safebrowsing.provider.google.appRepURL',
'security.tls.insecure_fallback_hosts.use_static_list',
'dom.workers.sharedWorkers.enabled',
'dom.disable_image_src_set',
/* 43 */
'browser.safebrowsing.gethashURL',
'browser.safebrowsing.updateURL',
'browser.safebrowsing.malware.reportURL',
'browser.trackingprotection.gethashURL',
'browser.trackingprotection.updateURL',
'pfs.datasource.url',
'browser.search.showOneOffButtons',
/* 42 and earlier */
'privacy.clearOnShutdown.passwords', // 42
'full-screen-api.approval-required', // 42
'browser.safebrowsing.reportErrorURL', // 41
'browser.safebrowsing.reportGenericURL', // 41
'browser.safebrowsing.reportMalwareErrorURL', // 41
'browser.safebrowsing.reportMalwareURL', // 41
'browser.safebrowsing.reportURL', // 41
'plugins.enumerable_names', // 41
'network.http.spdy.enabled.http2draft', // 41
'camera.control.autofocus_moving_callback.enabled', // 37
'privacy.donottrackheader.value', // 36
'network.websocket.enabled', // 35
'dom.network.enabled', // 31
'pageThumbs.enabled', // 25
/* reset parrot: check your open about:config after running the script */
'_user.js.parrot'
]
if("undefined" === typeof(Services)) {
alert("about:config needs to be the active tab!");
return;
}
let c = 0;
for (let i = 0, len = ops.length; i < len; i++) {
if (Services.prefs.prefHasUserValue(ops[i])) {
Services.prefs.clearUserPref(ops[i]);
if (!Services.prefs.prefHasUserValue(ops[i])) {
console.log("reset", ops[i]);
c++;
} else { console.log("failed to reset", ops[i]); }
}
}
focus();
let d = (c==1) ? " pref" : " prefs";
if (c > 0) {
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
} else { alert("nothing to reset"); }
})();

View File

@ -0,0 +1,63 @@
/***
This will reset the preferences that have been removed completely
from the ghacks user.js up to and including release 57-alpha
For instructions see:
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
***/
(function() {
let ops = [
/* removed in ghacks user.js v52-57 */
/* 52-alpha */
'browser.search.reset.enabled',
'browser.search.reset.whitelist',
/* 54-alpha */
'browser.migrate.automigrate.enabled',
'services.sync.enabled',
'webextensions.storage.sync.enabled',
'webextensions.storage.sync.serverURL',
/* 55-alpha */
'dom.keyboardevent.dispatch_during_composition', // default is false anyway
'dom.vr.oculus.enabled', // covered by dom.vr.enabled
'dom.vr.openvr.enabled', // ditto
'dom.vr.osvr.enabled', // ditto
'extensions.pocket.api', // covered by extensions.pocket.enabled
'extensions.pocket.oAuthConsumerKey', // ditto
'extensions.pocket.site', // ditto
/* 56-alpha: none */
/* 57-alpha */
'geo.wifi.xhr.timeout', // covered by geo.enabled
'browser.search.geoip.timeout', // ditto
'media.webspeech.recognition.enable', // default is false anyway
'gfx.layerscope.enabled', // default is false anyway
/* reset parrot: check your open about:config after running the script */
'_user.js.parrot'
]
if("undefined" === typeof(Services)) {
alert("about:config needs to be the active tab!");
return;
}
let c = 0;
for (let i = 0, len = ops.length; i < len; i++) {
if (Services.prefs.prefHasUserValue(ops[i])) {
Services.prefs.clearUserPref(ops[i]);
if (!Services.prefs.prefHasUserValue(ops[i])) {
console.log("reset", ops[i]);
c++;
} else { console.log("failed to reset", ops[i]); }
}
}
focus();
let d = (c==1) ? " pref" : " prefs";
if (c > 0) {
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
} else { alert("nothing to reset"); }
})();

View File

@ -0,0 +1,409 @@
/***
This will reset EVERYTHING that is ACTIVE in the ghacks user.js
release 57-alpha master, but excludes the following:
- prefs removed since publishing on github
- e10s section 1100
- privacy.resistFingerprinting alternatives sections 4600 & 4700
- deprecated section 9999
It does not matter if you clear everything, as a restart will reapply your user.js
Total 477 prefs from 57-alpha master: 118 inactive, 359 active
These have been broken into two scripts for convenience
For instructions see:
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
***/
(function() {
let ops = [
/* 359 ACTIVE prefs in 57-alpha master */
'accessibility.force_disabled',
'alerts.showFavicons',
'app.update.auto',
'app.update.service.enabled',
'app.update.silent',
'app.update.staging.enabled',
'beacon.enabled',
'breakpad.reportURL',
'browser.aboutHomeSnippets.updateUrl',
'browser.backspace_action',
'browser.bookmarks.max_backups',
'browser.cache.disk.capacity',
'browser.cache.disk.enable',
'browser.cache.disk.smart_size.enabled',
'browser.cache.disk.smart_size.first_run',
'browser.cache.disk_cache_ssl',
'browser.cache.frecency_experiment',
'browser.cache.offline.enable',
'browser.crashReports.unsubmittedCheck.autoSubmit',
'browser.crashReports.unsubmittedCheck.enabled',
'browser.ctrlTab.previews',
'browser.display.use_document_fonts',
'browser.download.folderList',
'browser.download.forbid_open_with',
'browser.download.hide_plugins_without_extensions',
'browser.download.manager.addToRecentDocs',
'browser.download.useDownloadDir',
'browser.eme.ui.enabled',
'browser.fixup.alternate.enabled',
'browser.fixup.hide_user_pass',
'browser.formfill.enable',
'browser.helperApps.deleteTempFileOnExit',
'browser.laterrun.enabled',
'browser.library.activity-stream.enabled',
'browser.link.open_newwindow',
'browser.link.open_newwindow.restriction',
'browser.newtab.preload',
'browser.newtabpage.activity-stream.enabled',
'browser.newtabpage.directory.source',
'browser.newtabpage.enabled',
'browser.newtabpage.enhanced',
'browser.newtabpage.introShown',
'browser.offline-apps.notify',
'browser.onboarding.enabled',
'browser.pagethumbnails.capturing_disabled',
'browser.ping-centre.telemetry',
'browser.rights.3.shown',
'browser.safebrowsing.downloads.remote.enabled',
'browser.safebrowsing.downloads.remote.url',
'browser.safebrowsing.provider.google.reportMalwareMistakeURL',
'browser.safebrowsing.provider.google.reportPhishMistakeURL',
'browser.safebrowsing.provider.google.reportURL',
'browser.safebrowsing.provider.google4.reportMalwareMistakeURL',
'browser.safebrowsing.provider.google4.reportPhishMistakeURL',
'browser.safebrowsing.provider.google4.reportURL',
'browser.safebrowsing.reportPhishURL',
'browser.search.countryCode',
'browser.search.geoip.url',
'browser.search.geoSpecificDefaults',
'browser.search.geoSpecificDefaults.url',
'browser.search.region',
'browser.search.suggest.enabled',
'browser.search.update',
'browser.send_pings',
'browser.send_pings.require_same_host',
'browser.sessionhistory.max_entries',
'browser.sessionstore.interval',
'browser.sessionstore.max_tabs_undo',
'browser.sessionstore.max_windows_undo',
'browser.sessionstore.privacy_level',
'browser.sessionstore.resume_from_crash',
'browser.shell.checkDefaultBrowser',
'browser.shell.shortcutFavicons',
'browser.slowStartup.maxSamples',
'browser.slowStartup.notificationDisabled',
'browser.slowStartup.samples',
'browser.ssl_override_behavior',
'browser.startup.homepage_override.mstone',
'browser.tabs.closeWindowWithLastTab',
'browser.tabs.crashReporting.sendReport',
'browser.tabs.insertRelatedAfterCurrent',
'browser.tabs.loadDivertedInBackground',
'browser.tabs.loadInBackground',
'browser.tabs.selectOwnerOnClose',
'browser.tabs.warnOnClose',
'browser.tabs.warnOnCloseOtherTabs',
'browser.tabs.warnOnOpen',
'browser.taskbar.lists.enabled',
'browser.taskbar.lists.frequent.enabled',
'browser.taskbar.lists.recent.enabled',
'browser.taskbar.lists.tasks.enabled',
'browser.taskbar.previews.enable',
'browser.uitour.enabled',
'browser.uitour.url',
'browser.urlbar.autoFill',
'browser.urlbar.autoFill.typed',
'browser.urlbar.clickSelectsAll',
'browser.urlbar.decodeURLsOnCopy',
'browser.urlbar.doubleClickSelectsAll',
'browser.urlbar.filter.javascript',
'browser.urlbar.maxHistoricalSearchSuggestions',
'browser.urlbar.oneOffSearches',
'browser.urlbar.speculativeConnect.enabled',
// 'browser.urlbar.suggest.bookmark', // this may not get reset by your user.js - see issue #308
// 'browser.urlbar.suggest.history', // ditto
// 'browser.urlbar.suggest.openpage', // ditto
'browser.urlbar.suggest.searches',
'browser.urlbar.trimURLs',
'browser.urlbar.usepreloadedtopurls.enabled',
'browser.urlbar.userMadeSearchSuggestionsChoice',
'browser.xul.error_pages.expert_bad_cert',
'camera.control.face_detection.enabled',
'canvas.capturestream.enabled',
'captivedetect.canonicalURL',
'datareporting.healthreport.about.reportUrl',
'datareporting.healthreport.uploadEnabled',
'datareporting.policy.dataSubmissionEnabled',
'device.storage.enabled',
'devtools.chrome.enabled',
'devtools.debugger.remote-enabled',
'devtools.webide.autoinstallADBHelper',
'devtools.webide.enabled',
'dom.allow_cut_copy',
'dom.allow_scripts_to_close_windows',
'dom.caches.enabled',
'dom.disable_beforeunload',
'dom.disable_window_flip',
'dom.disable_window_move_resize',
'dom.disable_window_open_feature.close',
'dom.disable_window_open_feature.location',
'dom.disable_window_open_feature.menubar',
'dom.disable_window_open_feature.minimizable',
'dom.disable_window_open_feature.personalbar',
'dom.disable_window_open_feature.resizable',
'dom.disable_window_open_feature.status',
'dom.disable_window_open_feature.titlebar',
'dom.disable_window_open_feature.toolbar',
'dom.disable_window_status_change',
'dom.event.clipboardevents.enabled',
'dom.flyweb.enabled',
'dom.idle-observers-api.enabled',
'dom.imagecapture.enabled',
'dom.IntersectionObserver.enabled',
'dom.ipc.plugins.flash.subprocess.crashreporter.enabled',
'dom.ipc.plugins.reportCrashURL',
'dom.popup_allowed_events',
'dom.popup_maximum',
'dom.push.connection.enabled',
'dom.push.enabled',
'dom.push.serverURL',
'dom.push.userAgentID',
'dom.serviceWorkers.enabled',
'dom.vibrator.enabled',
'dom.webaudio.enabled',
'dom.webnotifications.enabled',
'dom.webnotifications.serviceworker.enabled',
'dom.workers.enabled',
'experiments.activeExperiment',
'experiments.enabled',
'experiments.manifest.uri',
'experiments.supported',
'extensions.autoDisableScopes',
'extensions.blocklist.enabled',
'extensions.blocklist.url',
'extensions.enabledScopes',
'extensions.formautofill.addresses.enabled',
'extensions.formautofill.available',
'extensions.formautofill.creditCards.enabled',
'extensions.formautofill.heuristics.enabled',
'extensions.getAddons.cache.enabled',
'extensions.getAddons.showPane',
'extensions.pocket.enabled',
'extensions.shield-recipe-client.api_url',
'extensions.shield-recipe-client.enabled',
'extensions.update.autoUpdateDefault',
'extensions.webcompat-reporter.enabled',
'extensions.webextensions.keepStorageOnUninstall',
'extensions.webextensions.keepUuidOnUninstall',
'extensions.webservice.discoverURL',
'font.blacklist.underline_offset',
'full-screen-api.enabled',
'general.useragent.compatMode.firefox',
'general.useragent.locale',
'general.warnOnAboutConfig',
'geo.wifi.uri',
'gfx.downloadable_fonts.enabled',
'gfx.downloadable_fonts.woff2.enabled',
'gfx.font_rendering.graphite.enabled',
'gfx.font_rendering.opentype_svg.enabled',
'gfx.offscreencanvas.enabled',
'intl.accept_languages',
'intl.locale.matchOS',
'intl.regional_prefs.use_os_locales',
'javascript.options.asmjs',
'javascript.options.wasm',
'javascript.use_us_english_locale',
'keyword.enabled',
'layers.acceleration.disabled',
'layout.css.font-loading-api.enabled',
'layout.css.visited_links_enabled',
'layout.spellcheckDefault',
'lightweightThemes.update.enabled',
'mathml.disabled',
'media.autoplay.enabled',
'media.block-autoplay-until-in-foreground',
'media.eme.enabled',
'media.getusermedia.audiocapture.enabled',
'media.getusermedia.browser.enabled',
'media.getusermedia.screensharing.allowed_domains',
'media.getusermedia.screensharing.enabled',
'media.gmp-gmpopenh264.autoupdate',
'media.gmp-gmpopenh264.enabled',
'media.gmp-manager.updateEnabled',
'media.gmp-manager.url',
'media.gmp-manager.url.override',
'media.gmp-provider.enabled',
'media.gmp-widevinecdm.autoupdate',
'media.gmp-widevinecdm.enabled',
'media.gmp-widevinecdm.visible',
'media.gmp.trial-create.enabled',
'media.navigator.enabled',
'media.navigator.video.enabled',
'media.ondevicechange.enabled',
'media.peerconnection.enabled',
'media.peerconnection.ice.default_address_only',
'media.peerconnection.ice.no_host',
'media.peerconnection.ice.tcp',
'media.peerconnection.identity.enabled',
'media.peerconnection.identity.timeout',
'media.peerconnection.turn.disable',
'media.peerconnection.use_document_iceservers',
'media.peerconnection.video.enabled',
'middlemouse.contentLoadURL',
'network.allow-experiments',
'network.auth.subresource-img-cross-origin-http-auth-allow',
'network.captive-portal-service.enabled',
'network.cookie.cookieBehavior',
'network.cookie.leave-secure-alone',
'network.cookie.thirdparty.sessionOnly',
'network.dns.blockDotOnion',
'network.dns.disablePrefetch',
'network.dns.disablePrefetchFromHTTPS',
'network.http.altsvc.enabled',
'network.http.altsvc.oe',
'network.http.redirection-limit',
'network.http.referer.hideOnionSource',
'network.http.referer.spoofSource',
'network.http.referer.trimmingPolicy',
'network.http.referer.userControlPolicy',
'network.http.referer.XOriginPolicy',
'network.http.referer.XOriginTrimmingPolicy',
'network.http.sendRefererHeader',
'network.http.spdy.enabled',
'network.http.spdy.enabled.deps',
'network.http.spdy.enabled.http2',
'network.http.speculative-parallel-limit',
'network.IDN_show_punycode',
'network.jar.block-remote-files',
'network.jar.open-unsafe-types',
'network.manage-offline-status',
'network.predictor.enable-prefetch',
'network.predictor.enabled',
'network.prefetch-next',
'network.protocol-handler.external.ms-windows-store',
'network.proxy.autoconfig_url.include_path',
'network.proxy.socks_remote_dns',
'network.stricttransportsecurity.preloadlist',
'offline-apps.allow_by_default',
'pdfjs.disabled',
'pdfjs.enableWebGL',
'permissions.manager.defaultsUrl',
'plugin.default.state',
'plugin.defaultXpi.state',
'plugin.scan.plid.all',
'plugin.sessionPermissionNow.intervalInMinutes',
'plugins.click_to_play',
'privacy.clearOnShutdown.cache',
'privacy.clearOnShutdown.cookies',
'privacy.clearOnShutdown.downloads',
'privacy.clearOnShutdown.formdata',
'privacy.clearOnShutdown.history',
'privacy.clearOnShutdown.offlineApps',
'privacy.clearOnShutdown.sessions',
'privacy.clearOnShutdown.siteSettings',
'privacy.cpd.cache',
'privacy.cpd.cookies',
'privacy.cpd.formdata',
'privacy.cpd.history',
'privacy.cpd.offlineApps',
'privacy.cpd.passwords',
'privacy.cpd.sessions',
'privacy.cpd.siteSettings',
'privacy.donottrackheader.enabled',
'privacy.firstparty.isolate',
'privacy.firstparty.isolate.restrict_opener_access',
'privacy.resistFingerprinting',
'privacy.sanitize.sanitizeOnShutdown',
'privacy.sanitize.timeSpan',
'privacy.trackingprotection.ui.enabled',
'security.ask_for_password',
'security.block_script_with_wrong_mime',
'security.cert_pinning.enforcement_level',
'security.csp.enable',
'security.csp.experimentalEnabled',
'security.data_uri.block_toplevel_data_uri_navigations',
'security.dialog_enable_delay',
'security.family_safety.mode',
'security.fileuri.strict_origin_policy',
'security.insecure_field_warning.contextual.enabled',
'security.insecure_password.ui.enabled',
'security.mixed_content.block_active_content',
'security.mixed_content.send_hsts_priming',
'security.mixed_content.use_hsts',
'security.OCSP.enabled',
'security.OCSP.require',
'security.password_lifetime',
'security.pki.sha1_enforcement_level',
'security.sri.enable',
'security.ssl.disable_session_identifiers',
'security.ssl.enable_ocsp_stapling',
'security.ssl.errorReporting.automatic',
'security.ssl.errorReporting.enabled',
'security.ssl.errorReporting.url',
'security.ssl.treat_unsafe_negotiation_as_broken',
'security.tls.enable_0rtt_data',
'security.tls.version.fallback-limit',
'security.tls.version.max',
'security.tls.version.min',
'security.xpconnect.plugin.unrestricted',
'services.blocklist.signing.enforced',
'services.blocklist.update_enabled',
'signon.autofillForms',
'signon.autofillForms.http',
'signon.formlessCapture.enabled',
'signon.storeWhenAutocompleteOff',
'startup.homepage_override_url',
'startup.homepage_welcome_url',
'startup.homepage_welcome_url.additional',
'toolkit.telemetry.archive.enabled',
'toolkit.telemetry.bhrPing.enabled',
'toolkit.telemetry.cachedClientID',
'toolkit.telemetry.enabled',
'toolkit.telemetry.firstShutdownPing.enabled',
'toolkit.telemetry.newProfilePing.enabled',
'toolkit.telemetry.server',
'toolkit.telemetry.shutdownPingSender.enabled',
'toolkit.telemetry.unified',
'toolkit.telemetry.updatePing.enabled',
'ui.submenuDelay',
'ui.use_standins_for_native_colors',
'view_source.tab',
'webchannel.allowObject.urlWhitelist',
'webgl.disable-extensions',
'webgl.disable-fail-if-major-performance-caveat',
'webgl.disabled',
'webgl.dxgl.enabled',
'webgl.enable-debug-renderer-info',
'webgl.enable-webgl2',
'webgl.min_capability_mode',
/* reset parrot: check your open about:config after running the script */
'_user.js.parrot'
]
if("undefined" === typeof(Services)) {
alert("about:config needs to be the active tab!");
return;
}
let c = 0;
for (let i = 0, len = ops.length; i < len; i++) {
if (Services.prefs.prefHasUserValue(ops[i])) {
Services.prefs.clearUserPref(ops[i]);
if (!Services.prefs.prefHasUserValue(ops[i])) {
console.log("reset", ops[i]);
c++;
} else { console.log("failed to reset", ops[i]); }
}
}
focus();
let d = (c==1) ? " pref" : " prefs";
if (c > 0) {
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
} else { alert("nothing to reset"); }
})();

View File

@ -0,0 +1,167 @@
/***
This will reset EVERYTHING that is INACTIVE in the ghacks user.js
release 57-alpha master, but excludes the following:
- prefs removed since publishing on github
- e10s section 1100
- privacy.resistFingerprinting alternatives sections 4600 & 4700
- deprecated section 9999
It does not matter if you clear everything, as a restart will reapply your user.js
Total 477 prefs from 57-alpha master: 118 inactive, 359 active
These have been broken into two scripts for convenience
For instructions see:
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
***/
(function() {
let ops = [
/* 118 INACTIVE prefs in 57-alpha master */
'accessibility.typeaheadfind',
'app.update.enabled',
'browser.cache.memory.capacity',
'browser.cache.memory.enable',
'browser.chrome.favicons',
'browser.chrome.site_icons',
'browser.download.autohideButton',
'browser.privatebrowsing.autostart',
'browser.safebrowsing.allowOverride',
'browser.safebrowsing.blockedURIs.enabled',
'browser.safebrowsing.downloads.enabled',
'browser.safebrowsing.downloads.remote.block_dangerous',
'browser.safebrowsing.downloads.remote.block_dangerous_host',
'browser.safebrowsing.downloads.remote.block_potentially_unwanted',
'browser.safebrowsing.downloads.remote.block_uncommon',
'browser.safebrowsing.malware.enabled',
'browser.safebrowsing.phishing.enabled',
'browser.safebrowsing.provider.google.gethashURL',
'browser.safebrowsing.provider.google.updateURL',
'browser.safebrowsing.provider.google4.gethashURL',
'browser.safebrowsing.provider.google4.updateURL',
'browser.safebrowsing.provider.mozilla.gethashURL',
'browser.safebrowsing.provider.mozilla.updateURL',
'browser.sessionhistory.max_total_viewers',
'browser.startup.page',
'browser.stopReloadAnimation.enabled',
'browser.storageManager.enabled',
'browser.tabs.loadBookmarksInTabs',
'browser.urlbar.autocomplete.enabled',
'browser.urlbar.maxRichResults',
'clipboard.autocopy',
'dom.event.contextmenu.enabled',
'dom.indexedDB.enabled',
'dom.presentation.controller.enabled',
'dom.presentation.discoverable',
'dom.presentation.discovery.enabled',
'dom.presentation.enabled',
'dom.presentation.receiver.enabled',
'dom.presentation.session_transport.data_channel.enable',
'dom.storage.enabled',
'dom.storageManager.enabled',
'dom.vr.enabled',
'extensions.screenshots.disabled',
'extensions.systemAddon.update.url',
'extensions.update.enabled',
'font.name.monospace.x-unicode',
'font.name.monospace.x-western',
'font.name.sans-serif.x-unicode',
'font.name.sans-serif.x-western',
'font.name.serif.x-unicode',
'font.name.serif.x-western',
'font.system.whitelist',
'full-screen-api.warning.delay',
'full-screen-api.warning.timeout',
'general.autoScroll',
'geo.wifi.logging.enabled',
'gfx.direct2d.disabled',
'javascript.options.baselinejit',
'javascript.options.ion',
'media.flac.enabled',
'media.mediasource.enabled',
'media.mediasource.mp4.enabled',
'media.mediasource.webm.audio.enabled',
'media.mediasource.webm.enabled',
'media.mp4.enabled',
'media.ogg.enabled',
'media.ogg.flac.enabled',
'media.opus.enabled',
'media.raw.enabled',
'media.wave.enabled',
'media.webm.enabled',
'media.wmf.amd.vp9.enabled',
'media.wmf.enabled',
'media.wmf.vp9.enabled',
'network.cookie.lifetime.days',
'network.cookie.lifetimePolicy',
'network.dns.disableIPv6',
'network.dnsCacheEntries',
'network.dnsCacheExpiration',
'network.http.fast-fallback-to-IPv4',
'offline-apps.quota.warn',
'permissions.memory_only',
'places.history.enabled',
'plugin.state.flash',
'privacy.clearOnShutdown.openWindows',
'privacy.cpd.downloads',
'privacy.cpd.openWindows',
'privacy.resistFingerprinting.block_mozAddonManager',
'privacy.trackingprotection.annotate_channels',
'privacy.trackingprotection.enabled',
'privacy.trackingprotection.lower_network_priority',
'privacy.trackingprotection.pbmode.enabled',
'privacy.usercontext.about_newtab_segregation.enabled',
'privacy.userContext.enabled',
'privacy.userContext.longPressBehavior',
'privacy.userContext.ui.enabled',
'privacy.window.maxInnerHeight',
'privacy.window.maxInnerWidth',
'reader.parse-on-load.enabled',
'security.mixed_content.block_display_content',
'security.nocertdb',
'security.ssl.require_safe_negotiation',
'security.ssl3.dhe_rsa_aes_128_sha',
'security.ssl3.dhe_rsa_aes_256_sha',
'security.ssl3.ecdhe_ecdsa_aes_128_sha',
'security.ssl3.ecdhe_rsa_aes_128_sha',
'security.ssl3.rsa_aes_128_sha',
'security.ssl3.rsa_aes_256_sha',
'security.ssl3.rsa_des_ede3_sha',
'services.blocklist.addons.collection',
'services.blocklist.gfx.collection',
'services.blocklist.onecrl.collection',
'services.blocklist.plugins.collection',
'signon.rememberSignons',
'svg.disabled',
'toolkit.cosmeticAnimations.enabled',
'urlclassifier.trackingTable',
'xpinstall.signatures.required',
/* reset parrot: check your open about:config after running the script */
'_user.js.parrot'
]
if("undefined" === typeof(Services)) {
alert("about:config needs to be the active tab!");
return;
}
let c = 0;
for (let i = 0, len = ops.length; i < len; i++) {
if (Services.prefs.prefHasUserValue(ops[i])) {
Services.prefs.clearUserPref(ops[i]);
if (!Services.prefs.prefHasUserValue(ops[i])) {
console.log("reset", ops[i]);
c++;
} else { console.log("failed to reset", ops[i]); }
}
}
focus();
let d = (c==1) ? " pref" : " prefs";
if (c > 0) {
alert("successfully reset " + c + d + "\n\nfor details check the Browser Console (Ctrl+Shift+J)");
} else { alert("nothing to reset"); }
})();

264
updater.bat Normal file
View File

@ -0,0 +1,264 @@
@ECHO OFF & SETLOCAL EnableDelayedExpansion
TITLE ghacks user.js updater
REM ## ghacks-user.js updater for Windows
REM ## author: @claustromaniac
REM ## version: 4.2
REM ## instructions: https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts
SET _myname=%~n0
SET _myparams=%*
:parse
IF "%~1"=="" (GOTO endparse)
IF /I "%~1"=="-unattended" (SET _ua=1)
IF /I "%~1"=="-log" (SET _log=1)
IF /I "%~1"=="-logp" (SET _log=1 & SET _logp=1)
IF /I "%~1"=="-multioverrides" (SET _multi=1)
IF /I "%~1"=="-merge" (SET _merge=1)
IF /I "%~1"=="-updatebatch" (SET _updateb=1)
SHIFT
GOTO parse
:endparse
IF DEFINED _updateb (
REM The normal flow here goes from phase 1 to phase 2 and then phase 3.
IF NOT "!_myname:~0,9!"=="[updated]" (
IF EXIST "[updated]!_myname!.bat" (
REM ## Phase 3 ##: The new script, with the original name, will:
REM * Delete the [updated]*.bat script
REM * Begin the normal routine
REN "[updated]!_myname!.bat" "[updated]!_myname!.bat.old"
DEL /F "[updated]!_myname!.bat.old"
CALL :message "Script updated^!"
TIMEOUT 3 >nul
CLS
GOTO begin
)
REM ## Phase 1 ##
REM * Download new batch and name it [updated]*.bat
REM * Start that script in a new CMD window
REM * Exit
CALL :message "Updating script..."
REM Uncomment the next line and comment the powershell call for testing.
REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
(
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/ghacksuserjs/ghacks-user.js/raw/master/updater.bat', '[updated]!_myname!.bat')"
) >nul 2>&1
IF EXIST "[updated]!_myname!.bat" (
START /min CMD /C "[updated]!_myname!.bat" !_myparams!
EXIT /B
) ELSE (
CALL :message "Failed. Make sure PowerShell is allowed internet access."
TIMEOUT 120 >nul
EXIT /B
)
) ELSE (
IF "!_myname!"=="[updated]" (
CALL :message "The [updated] label is reserved. Rename this script and try again."
TIMEOUT 300 >nul
) ELSE (
REM ## Phase 2 ##: The [updated]*.bat script will:
REM * Copy itself overwriting the original batch
REM * Start that script in a new CMD instance
REM * Exit
IF EXIST "!_myname:~9!.bat" (
REN "!_myname:~9!.bat" "!_myname:~9!.bat.old"
DEL /F "!_myname:~9!.bat.old"
)
COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat"
START CMD /C "!_myname:~9!.bat" !_myparams!
)
EXIT /B
)
)
:begin
ECHO:
ECHO:
ECHO: ########################################
ECHO: #### user.js Updater for Windows ####
ECHO: #### by claustromaniac ####
ECHO: #### v4.2 ####
ECHO: ########################################
ECHO:
SET /A "_line=0"
IF NOT EXIST user.js (
CALL :message "user.js not detected in the current directory."
) ELSE (
FOR /F "skip=1 tokens=1,2 delims=:" %%G IN (user.js) DO (
SET /A "_line+=1"
IF !_line! GEQ 4 (GOTO exitloop)
IF !_line! EQU 1 (SET _name=%%H)
IF !_line! EQU 2 (SET _date=%%H)
IF !_line! EQU 3 (SET _version=%%G)
)
:exitloop
IF !_line! GEQ 4 (
IF /I NOT "!_name!"=="!_name:ghacks=!" (
CALL :message "ghacks user.js !_version:~2!,!_date!"
) ELSE (
CALL :message "Current user.js version not recognised."
)
) ELSE (
CALL :message "Current user.js version not recognised."
)
)
ECHO:
IF NOT DEFINED _ua (
CALL :message "This batch should be run from your Firefox profile directory."
ECHO: It will download the latest version of ghacks user.js from github and then
CALL :message "append any of your own changes from user-overrides.js to it."
CALL :message "Visit the wiki for more detailed information."
ECHO:
TIMEOUT 1 /nobreak >nul
CHOICE /C SHE /N /M "Start [S] Help [H] Exit [E]"
CLS
IF ERRORLEVEL 3 (EXIT /B)
IF ERRORLEVEL 2 (GOTO :showhelp)
)
IF DEFINED _log (
CALL :log >>user.js-update-log.txt 2>&1
IF DEFINED _logp (START user.js-update-log.txt)
EXIT /B
:log
SET _log=2
ECHO:##################################################################
CALL :message "%date%, %time%"
)
IF EXIST user.js.old.bak (DEL /F user.js.old.bak)
IF EXIST user.js (
IF EXIST user.js.bak (REN user.js.bak user.js.old.bak)
REN user.js user.js.bak
CALL :message "Current user.js file backed up."
)
CALL :message "Retrieving latest user.js file from github repository..."
(
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://github.com/ghacksuserjs/ghacks-user.js/raw/master/user.js', 'user.js')"
) >nul 2>&1
IF EXIST user.js (
IF DEFINED _multi (
FORFILES /P user.js-overrides /M *.js >nul 2>&1
IF NOT ERRORLEVEL 1 (
IF DEFINED _merge (
CALL :message "Merging..."
COPY /B /V /Y user.js-overrides\*.js user-overrides-merged.js
CALL :merge user-overrides-merged.js
COPY /B /V /Y user.js+user-overrides-merged.js user.js
CALL :merge user.js
) ELSE (
CALL :message "Appending..."
COPY /B /V /Y user.js+"user.js-overrides\*.js" user.js
)
) ELSE (CALL :message "No override files found.")
ECHO:
) ELSE (
IF EXIST "user-overrides.js" (
COPY /B /V /Y user.js+"user-overrides.js" "user.js"
IF DEFINED _merge (
CALL :message "Merging user-overrides.js..."
CALL :merge user.js
) ELSE (
CALL :message "user-overrides.js appended."
)
) ELSE (CALL :message "user-overrides.js not found.")
ECHO:
)
CALL :message "Handling backups..."
SET "changed="
IF EXIST user.js.bak (
FC user.js.bak user.js >nul && SET "changed=false" || SET "changed=true"
)
IF "!changed!"=="true" (
IF EXIST user.js.old.bak DEL /F user.js.old.bak
CALL :message "Update complete."
) ELSE (
IF "!changed!"=="false" (
DEL /F user.js.bak
IF EXIST user.js.old.bak REN user.js.old.bak user.js.bak
CALL :message "Update completed without changes."
) ELSE (CALL :message "Update complete.")
)
ECHO:
) ELSE (
IF EXIST user.js.bak (REN user.js.bak user.js)
IF EXIST user.js.old.bak (REN user.js.old.bak user.js.bak)
CALL :message "Update failed. Make sure PowerShell is allowed internet access."
ECHO: No changes were made.
)
IF NOT DEFINED _log (
IF NOT DEFINED _ua (PAUSE)
)
EXIT /B
REM ########### Message Function ###########
:message
SETLOCAL DisableDelayedExpansion
IF NOT "2"=="%_log%" (ECHO:)
ECHO: %~1
IF NOT "2"=="%_log%" (ECHO:)
ENDLOCAL
GOTO :EOF
REM ############ Merge function ############
:merge
SETLOCAL DisableDelayedExpansion
(
FOR /F "tokens=1,* delims=," %%G IN ('FINDSTR /B /I /C:"user_pref" "%~1"') DO (SET "%%G=%%H")
FOR /F "tokens=1,* delims=:" %%I IN ('FINDSTR /N "^" "%~1"') DO (
IF ""=="%%J" (
ECHO:
) ELSE (
FOR /F "delims=," %%K IN ("%%J") DO (
IF NOT [user_pref("_user.js.parrot"]==[%%K] (
IF DEFINED %%K (
SETLOCAL EnableDelayedExpansion
FOR /F "delims=" %%L IN ("!%%K!") DO (
ENDLOCAL
IF NOT "%%L"=="ALREADY MERGED" (
ECHO:%%K,%%L
SET "%%K=ALREADY MERGED"
)
)
) ELSE (
ECHO:%%J
)
) ELSE (
ECHO:%%J
)
)
)
)
)>updatertempfile
MOVE /Y updatertempfile "%~1" >nul
ENDLOCAL
GOTO :EOF
REM ############### Help ##################
:showhelp
MODE 80,43
CLS
CALL :message "Available arguments (case-insensitive):"
CALL :message " -log"
ECHO: Write the console output to a logfile (user.js-update-log.txt)
CALL :message " -logP"
ECHO: Like -log, but also open the logfile after updating.
CALL :message " -merge"
ECHO: Merge overrides instead of appending them. One-line comments and
ECHO: _user.js.parrot lines are appended normally. Overrides for inactive
ECHO: user.js prefs will be appended. When -Merge and -MultiOverrides are used
ECHO: together, a user-overrides-merged.js file is also generated in the root
ECHO: directory for quick reference. It contains only the merged data from
ECHO: override files and can be safely discarded after updating, or used as the
ECHO: new user-overrides.js. When there are conflicting records for the same
ECHO: pref, the value of the last one declared will be used. Visit the wiki
ECHO: for usage examples and more detailed information.
CALL :message " -multiOverrides"
ECHO: Use any and all .js files in a user.js-overrides sub-folder as overrides
ECHO: instead of the default user-overrides.js file. Files are appended in
ECHO: alphabetical order.
CALL :message " -unattended"
ECHO: Run without user input.
CALL :message " -updatebatch"
ECHO: Update the script itself on execution, before the normal routine.
CALL :message ""
PAUSE
CLS
MODE 80,25
GOTO :begin
REM #####################################

58
updater.sh Normal file
View File

@ -0,0 +1,58 @@
#!/bin/bash
### ghacks-user.js updater for Mac/Linux
## author: @overdodactyl
## version: 1.2
ghacksjs="https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js"
echo -e "\nThis script should be run from your Firefox profile directory.\n"
currdir=$(pwd)
## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
## fallback for Macs without coreutils
if [ -z "$sfp" ]; then sfp=${BASH_SOURCE[0]}; fi
## change directory to the Firefox profile directory
cd "$(dirname "${sfp}")"
echo -e "Updating the user.js for Firefox profile:\n$(pwd)\n"
if [ -e user.js ]; then
echo "Your current user.js file for this profile will be backed up and the latest ghacks version from github will take its place."
echo -e "\nIf currently using the ghacks user.js, please compare versions:"
echo " Available online: $(curl -s ${ghacksjs} | sed -n '4p')"
echo " Currently using: $(sed -n '4p' user.js)"
else
echo "A user.js file does not exist in this profile. If you continue, the latest ghacks version from github will be downloaded."
fi
echo -e "\nIf a user-overrides.js file exists in this profile, it will be appended to the user.js.\n"
read -p "Continue Y/N? " -n 1 -r
echo -e "\n\n"
if [[ $REPLY =~ ^[Yy]$ ]]; then
if [ -e user.js ]; then
# backup current user.js
bakfile="user.js.backup.$(date +"%Y-%m-%d_%H%M")"
mv user.js "${bakfile}" && echo "Your previous user.js file was backed up: ${bakfile}"
fi
# download latest ghacks user.js
echo "downloading latest ghacks user.js file"
curl -O ${ghacksjs} && echo "ghacks user.js has been downloaded"
if [ -e user-overrides.js ]; then
echo "user-overrides.js file found"
cat user-overrides.js >> user.js && echo "user-overrides.js has been appended to user.js"
fi
else
echo "Process aborted"
fi
## change directory back to the original working directory
cd "${currdir}"

284
user.js
View File

@ -1,8 +1,8 @@
/******
* name: ghacks user.js
* date: 2 October 2017
* version 56: You're So Pants
* "You're so pants, you probably think this song is about you. Don't you? Don't You?"
* date: 20 November 2017
* version 57: I Love Rock 'n' Pants
* "Singing, I love rock and pants. So put another dime in the jukebox, baby"
* authors: v52+ github | v51- www.ghacks.net
* url: https://github.com/ghacksuserjs/ghacks-user.js
@ -19,7 +19,9 @@
3. If you skipped steps 1 and 2 above (shame on you), then here is the absolute minimum
* Auto-installing updates for Firefox and extensions are disabled (section 0302's)
* Some user data is erased on close (section 2800), namely history (browsing, form, download)
* Cookies (and thus logins) are denied by default (2701). Use site exceptions or an extension
* Cookies are denied by default (2701), we use site exceptions. This breaks extensions
that use IndexedDB, so you need to allow exceptions for those as well: see [1] below
[1] https://github.com/ghacksuserjs/ghacks-user.js/wiki/4.1.1-Setting-Extension-Permission-Exceptions
* EACH RELEASE check:
- 4600s: reset prefs made redundant due to privacy.resistFingerprinting (RPF)
or enable them as an alternative to RFP or for ESR users
@ -32,7 +34,7 @@
before using to avoid unexpected surprises
- Search this file for the "[WARNING]" tag to troubleshoot or prevent SOME common issues
4. BACKUP your profile folder before implementing (and/or test in a new/cloned profile)
5. KEEP UP TO DATE: https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.5-Keeping-Up-To-Date
5. KEEP UP TO DATE: https://github.com/ghacksuserjs/ghacks-user.js/wiki#small_orange_diamond-maintenance
******/
@ -71,20 +73,20 @@ user_pref("startup.homepage_override_url", ""); // what's new page after updates
user_pref("browser.laterrun.enabled", false);
user_pref("browser.shell.checkDefaultBrowser", false);
/* 0102: set start page (0=blank, 1=home, 2=last visited page, 3=resume previous session)
* home = browser.startup.homepage preference.
* [SETTING] Options>General>Startup>When Firefox starts ***/
// user_pref("browser.startup.page", 0);
/* 0103: set your "home" page (see 0102) ***/
// user_pref("browser.startup.homepage", "https://www.example.com/");
/*** 0200: GEOLOCATION ***/
user_pref("_user.js.parrot", "0200 syntax error: the parrot's definitely deceased!");
/* 0201: disable location-aware search ***/
user_pref("browser.search.geoip.url", "");
user_pref("browser.search.geoip.timeout", 1);
/* 0202: disable GeoIP-based search results
* [NOTE] May not be hidden if Firefox has changed your settings due to your locale
* [1] https://trac.torproject.org/projects/tor/ticket/16254 ***/
* [1] https://trac.torproject.org/projects/tor/ticket/16254
* [2] https://support.mozilla.org/en-US/kb/how-stop-firefox-making-automatic-connections#w_geolocation-for-default-search-engine ***/
user_pref("browser.search.countryCode", "US"); // (hidden pref)
user_pref("browser.search.region", "US"); // (hidden pref)
user_pref("browser.search.geoip.url", "");
/* 0203: disable using OS locale, force APP locale ***/
user_pref("intl.locale.matchOS", false);
/* 0204: set APP locale ***/
@ -101,6 +103,10 @@ user_pref("javascript.use_us_english_locale", true); // (hidden pref)
/* 0209: use APP locale over OS locale in regional preferences (FF56+)
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1379420 [also 1364789] ***/
user_pref("intl.regional_prefs.use_os_locales", false);
/* 0210: use Mozilla geolocation service instead of Google when geolocation is enabled
* Optionally enable logging to the console (defaults to false) ***/
user_pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
// user_pref("geo.wifi.logging.enabled", true); // (hidden pref)
/*** 0300: QUIET FOX
We choose to not disable auto-CHECKs (0301's) but to disable auto-INSTALLs (0302's).
@ -154,15 +160,20 @@ user_pref("extensions.webservice.discoverURL", "");
* IF unified=false then .enabled controls the telemetry module
* IF unified=true then .enabled ONLY controls whether to record extended data
* so make sure to have both set as false
* [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html ***/
* [NOTE] FF58+ `toolkit.telemetry.enabled` is now LOCKED to reflect prerelease
* or release builds (true and false respectively), see [2]
* [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html
* [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.enabled", false); // see [NOTE] above FF58+
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.cachedClientID", "");
user_pref("toolkit.telemetry.newProfilePing.enabled", false); // (FF55+)
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // (FF55+)
user_pref("toolkit.telemetry.updatePing.enabled", false); // (FF56+)
user_pref("toolkit.telemetry.bhrPing.enabled", false); // (FF57+) Background Hang Reporter
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // (FF57+)
/* 0333a: disable health report ***/
user_pref("datareporting.healthreport.uploadEnabled", false);
/* 0333b: disable about:healthreport page (which connects to Mozilla for locale/css+js+json)
@ -189,15 +200,6 @@ user_pref("browser.newtabpage.introShown", true);
* MUST use HTTPS - arbitrary content injected into this page via http opens up MiTM attacks
* [1] https://wiki.mozilla.org/Firefox/Projects/Firefox_Start/Snippet_Service ***/
user_pref("browser.aboutHomeSnippets.updateUrl", "https://127.0.0.1");
/* 0374: disable "social" integration
* [1] https://developer.mozilla.org/docs/Mozilla/Projects/Social_API ***/
user_pref("social.whitelist", "");
user_pref("social.toast-notifications.enabled", false);
user_pref("social.shareDirectory", "");
user_pref("social.remote-install.enabled", false);
user_pref("social.directories", "");
user_pref("social.share.activationPanelEnabled", false);
user_pref("social.enabled", false); // (hidden pref)
/*** 0400: BLOCKLISTS / SAFE BROWSING / TRACKING PROTECTION
This section has security & tracking protection implications vs privacy concerns vs effectiveness
@ -332,6 +334,9 @@ user_pref("network.allow-experiments", false);
/* 0505: block URL used for system extension updates (FF44+)
* [NOTE] You will not get any system extension updates except when you update Firefox ***/
// user_pref("extensions.systemAddon.update.url", "");
/* 0506: disable PingCentre telemetry (used in several system extensions) (FF57+)
* Currently blocked by 'datareporting.healthreport.uploadEnabled' (see 0333) ***/
user_pref("browser.ping-centre.telemetry", false);
/* 0510: disable Pocket (FF39+)
* Pocket is a third party (now owned by Mozilla) "save for later" cloud service
* [1] https://en.wikipedia.org/wiki/Pocket_(application)
@ -358,6 +363,7 @@ user_pref("extensions.shield-recipe-client.api_url", "");
* [1] https://wiki.mozilla.org/Firefox/Activity_Stream
* [2] https://www.ghacks.net/2016/02/15/firefox-mockups-show-activity-stream-new-tab-page-and-share-updates/ ***/
user_pref("browser.newtabpage.activity-stream.enabled", false);
user_pref("browser.library.activity-stream.enabled", false); // (FF57+)
/* 0515: disable Screenshots (FF55+)
* [1] https://github.com/mozilla-services/screenshots
* [2] https://www.ghacks.net/2017/05/28/firefox-screenshots-integrated-in-firefox-nightly/ ***/
@ -470,14 +476,14 @@ user_pref("browser.urlbar.usepreloadedtopurls.enabled", false);
/* 0810: disable location bar making speculative connections (FF56+)
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1348275 ***/
user_pref("browser.urlbar.speculativeConnect.enabled", false);
/* 0850a: disable location bar autocomplete [controlled by 0850b] ***/
// user_pref("browser.urlbar.autocomplete.enabled", false);
/* 0850b: disable location bar suggestion types [controls 0850a]
/* 0850a: disable location bar autocomplete and suggestion types
* If you enforce any of the suggestion types, you MUST enforce 'autocomplete'
* - If *ALL* of the suggestion types are false, 'autocomplete' must also be false
* - If *ANY* of the suggestion types are true, 'autocomplete' must also be true
* [SETTING-56+] Options>Privacy & Security>Address Bar>When using the address bar, suggest
* [SETTING-ESR] Options>Privacy>Location Bar>When using the location bar, suggest
* [NOTE] If any of these are true, 0850a will be FORCED to true
* and if all three are false, 0850a will be FORCED to false
* [WARNING] If all three are false, search engine keywords are disabled ***/
* [WARNING] If all three suggestion types are false, search engine keywords are disabled ***/
user_pref("browser.urlbar.autocomplete.enabled", false);
user_pref("browser.urlbar.suggest.history", false);
user_pref("browser.urlbar.suggest.bookmark", false);
user_pref("browser.urlbar.suggest.openpage", false);
@ -487,7 +493,7 @@ user_pref("browser.urlbar.suggest.openpage", false);
* be displayed (no we do not know how these are calculated or what the threshold is),
* and this does not affect the search by search engine suggestion (see 0808)
* [USAGE] This setting is only useful if you want to enable search engine keywords
* (i.e. at least one of 0850b must be true) but you want to *limit* suggestions shown ***/
* (i.e. at least one of 0850a suggestion types must be true) but you want to *limit* suggestions shown ***/
// user_pref("browser.urlbar.maxRichResults", 0);
/* 0850d: disable location bar autofill
* [1] http://kb.mozillazine.org/Inline_autocomplete ***/
@ -496,6 +502,9 @@ user_pref("browser.urlbar.autoFill.typed", false);
/* 0850e: disable location bar one-off searches (FF51+)
* [1] https://www.ghacks.net/2016/08/09/firefox-one-off-searches-address-bar/ ***/
user_pref("browser.urlbar.oneOffSearches", false);
/* 0850f: disable location bar suggesting local search history (FF57+)
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1181644 ***/
user_pref("browser.urlbar.maxHistoricalSearchSuggestions", 0); // max. number of search suggestions
/* 0860: disable search and form history
* [SETTING-56+] Options>Privacy & Security>History>Custom Settings>Remember search and form history
* [SETTING-ESR] Options>Privacy>History>Custom Settings>Remember search and form history
@ -575,8 +584,6 @@ user_pref("browser.cache.disk_cache_ssl", false);
* [NOTE] Not recommended due to performance issues ***/
// user_pref("browser.cache.memory.enable", false);
// user_pref("browser.cache.memory.capacity", 0); // (hidden pref)
/* 1004: disable offline cache ***/
user_pref("browser.cache.offline.enable", false);
/* 1005: disable fastback cache
* To improve performance when pressing back/forward Firefox stores visited pages
* so they don't have to be re-parsed. This is not the same as memory cache.
@ -666,7 +673,7 @@ user_pref("dom.ipc.shims.enabledWarnings", true);
user_pref("browser.tabs.remote.allowLinkedWebInFileUriProcess", false);
/* 1110: set sandbox level. DO NOT MEDDLE WITH THESE. They are included to inform you NOT to play
* with them. The values are integers, but the code below deliberately contains a data mismatch
* [1] https://wiki.mozilla.org/Sandbox
* [1] https://wiki.mozilla.org/Security/Sandbox
* [2] https://www.ghacks.net/2017/01/23/how-to-change-firefoxs-sandbox-security-level/#comment-4105173 ***/
// user_pref("security.sandbox.content.level", "donotuse");
// user_pref("dom.ipc.plugins.sandbox-level.default", "donotuse");
@ -819,6 +826,9 @@ user_pref("browser.ssl_override_behavior", 1);
* i.e. it doesn't work for HSTS discrepancies (https://subdomain.preloaded-hsts.badssl.com/)
* [TEST] https://expired.badssl.com/ ***/
user_pref("browser.xul.error_pages.expert_bad_cert", true);
/* 1273: display HTTP sites as insecure (FF59+) ***/
user_pref("security.insecure_connection_icon.enabled", true); // all windows
// user_pref("security.insecure_connection_icon.pbmode.enabled", true); // private windows only
/*** 1400: FONTS ***/
user_pref("_user.js.parrot", "1400 syntax error: the parrot's bereft of life!");
@ -979,10 +989,10 @@ user_pref("media.gmp-manager.updateEnabled", false); // disable local fallback (
user_pref("media.gmp-widevinecdm.visible", false);
user_pref("media.gmp-widevinecdm.enabled", false);
user_pref("media.gmp-widevinecdm.autoupdate", false);
/* 1830: disable all DRM content (EME: Encryption Media Extension) [SETUP] ***/
/* 1830: disable all DRM content (EME: Encryption Media Extension) [SETUP]
* [1] https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next ***/
user_pref("media.eme.enabled", false); // Options>Content>Play DRM Content
user_pref("browser.eme.ui.enabled", false); // hides "Play DRM Content" checkbox, restart required
user_pref("media.eme.chromium-api.enabled", false); // (FF55+)
/* 1840: disable the OpenH264 Video Codec by Cisco to "Never Activate"
* This is the bundled codec used for video chat in WebRTC ***/
user_pref("media.gmp-gmpopenh264.enabled", false); // (hidden pref)
@ -1081,9 +1091,8 @@ user_pref("dom.disable_beforeunload", true);
/*** 2300: WEB WORKERS [SETUP]
A worker is a JS "background task" running in a global context, i.e. it is different from
the current window. Workers can spawn new workers (must be the same origin & scheme),
including service and shared workers. Shared workers can be utilized by multiple scripts
and communicate between browsing contexts (windows/tabs/iframes) and can even control your
cache. Push and web notifications require service workers, which in turn require workers.
including service and shared workers. Shared workers can be utilized by multiple scripts and
communicate between browsing contexts (windows/tabs/iframes) and can even control your cache.
[WARNING] Disabling workers *will* break sites (e.g. Google Street View, Twitter).
It is recommended that you use a separate profile for these sorts of sites.
@ -1106,8 +1115,6 @@ user_pref("dom.workers.enabled", false);
* [NOTE] Service worker APIs are hidden (in Firefox) and cannot be used when in PB mode.
* [NOTE] Service workers only run over HTTPS. Service Workers have no DOM access. ***/
user_pref("dom.serviceWorkers.enabled", false);
/* 2303: disable service workers' cache and cache storage ***/
user_pref("dom.caches.enabled", false);
/* 2304: disable web notifications
* [NOTE] You can still override individual domains under site permissions (FF44+)
* [1] https://developer.mozilla.org/docs/Web/API/Notifications_API ***/
@ -1134,11 +1141,6 @@ user_pref("dom.event.clipboardevents.enabled", false);
* this disables document.execCommand("cut"/"copy") to protect your clipboard
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1170911 ***/
user_pref("dom.allow_cut_copy", false); // (hidden pref)
/* 2404: disable JS storing data permanently [SETUP]
* [WARNING] This BREAKS uBlock Origin [1.14.0+] and uMatrix extensions
* [1] https://github.com/gorhill/uBlock/releases/tag/1.14.0
* [WARNING] This *will* break other extensions including legacy, and *will* break some sites ***/
// user_pref("dom.indexedDB.enabled", false);
/* 2414: disable shaking the screen ***/
user_pref("dom.vibrator.enabled", false);
/* 2415: set max popups from a single non-click event - default is 20! ***/
@ -1173,18 +1175,6 @@ user_pref("javascript.options.wasm", false);
* [2] https://w3c.github.io/IntersectionObserver/
* [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1243846 ***/
user_pref("dom.IntersectionObserver.enabled", false);
/* 2450a: enforce websites to ask to store data for offline use
* [1] https://support.mozilla.org/questions/1098540
* [2] https://bugzilla.mozilla.org/show_bug.cgi?id=959985 ***/
user_pref("offline-apps.allow_by_default", false);
/* 2450b: display a notification when websites ask to store data for offline use
* [SETTING-56+] Options>Privacy & Security>Offline Web Content and User Data>Tell you when a website asks...
* [SETTING-ESR] Options>Advanced>Network>Tell me when a website asks to store data for offline use ***/
user_pref("browser.offline-apps.notify", true);
/* 2450c: set size of warning quota for offline cache (default 51200)
* Offline cache is only used in rare cases to store data locally. FF will store small amounts
* (default <50MB) of data in the offline (application) cache without asking for permission. ***/
// user_pref("offline-apps.quota.warn", 51200);
/*** 2500: HARDWARE FINGERPRINTING ***/
user_pref("_user.js.parrot", "2500 syntax error: the parrot's shuffled off 'is mortal coil!");
@ -1197,23 +1187,13 @@ user_pref("_user.js.parrot", "2500 syntax error: the parrot's shuffled off 'is m
* [1] https://wiki.mozilla.org/Media/getUserMedia
* [2] https://developer.mozilla.org/docs/Web/API/MediaDevices/enumerateDevices ***/
user_pref("media.navigator.enabled", false);
/* 2506: disable video statistics - JS performance fingerprinting (FF25+)
* [1] https://trac.torproject.org/projects/tor/ticket/15757
* [2] https://bugzilla.mozilla.org/show_bug.cgi?id=654550 ***/
user_pref("media.video_stats.enabled", false);
/* 2508: disable hardware acceleration to reduce graphics fingerprinting
* [SETTING] Options>General>Performance>Custom>Use hardware acceleration when available
* [WARNING] [SETUP] Affects text rendering (fonts will look different) and impacts video performance
* [WARNING] [SETUP] Affects text rendering (fonts will look different), impacts video performance,
* and parts of Quantum that utilize the GPU will also be affected as they are rolled out
* [1] https://wiki.mozilla.org/Platform/GFX/HardwareAcceleration ***/
// user_pref("gfx.direct2d.disabled", true); // [WINDOWS]
user_pref("layers.acceleration.disabled", true);
/* 2509: disable touch events
* fingerprinting attack vector - leaks screen res & actual screen coordinates
* 0=disabled, 1=enabled, 2=autodetect
* [WARNING] [SETUP] Optional protection depending on your device
* [1] https://developer.mozilla.org/docs/Web/API/Touch_events
* [2] https://trac.torproject.org/projects/tor/ticket/10286 ***/
// user_pref("dom.w3c_touch_events.enabled", 0);
/* 2510: disable Web Audio API (FF51+)
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1288359 ***/
user_pref("dom.webaudio.enabled", false);
@ -1259,16 +1239,14 @@ user_pref("network.jar.open-unsafe-types", false);
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=232227
* [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1330876 ***/
user_pref("ui.use_standins_for_native_colors", true); // (hidden pref)
/* 2610: remove special permissions for certain mozilla domains (FF35+)
* [1] resource://app/defaults/permissions ***/
user_pref("permissions.manager.defaultsUrl", "");
/* 2611: disable WebIDE to prevent remote debugging and extension downloads
* [1] https://trac.torproject.org/projects/tor/ticket/16222 ***/
user_pref("devtools.webide.autoinstallADBHelper", false);
user_pref("devtools.webide.autoinstallFxdtAdapters", false);
user_pref("devtools.debugger.remote-enabled", false);
user_pref("devtools.webide.enabled", false);
/* 2612: disable SimpleServiceDiscovery - which can bypass proxy settings - e.g. Roku
* [1] https://trac.torproject.org/projects/tor/ticket/16222 ***/
user_pref("browser.casting.enabled", false);
user_pref("gfx.layerscope.enabled", false);
/* 2614: disable HTTP2 (which was based on SPDY which is now deprecated)
* HTTP2 raises concerns with "multiplexing" and "server push", does nothing to enhance
* privacy, and in fact opens up a number of server-side fingerprinting opportunities
@ -1343,6 +1321,10 @@ user_pref("browser.uitour.url", "");
/* 2629: disable remote JAR files being opened, regardless of content type (FF42+)
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1173171 ***/
user_pref("network.jar.block-remote-files", true);
/* 2630: prevent accessibility services from accessing your browser
* [SETTING] Options>Privacy & Security>Permissions>Prevent accessibility services from accessing your browser
* [1] https://support.mozilla.org/kb/accessibility-services ***/
user_pref("accessibility.force_disabled", 1);
/* 2662: disable "open with" in download dialog (FF50+)
* This is very useful to enable when the browser is sandboxed (e.g. via AppArmor)
* in such a way that it is forbidden to run external applications.
@ -1408,7 +1390,14 @@ user_pref("security.csp.experimentalEnabled", true);
* [3] https://www.fxsitecompat.com/en-CA/docs/2017/data-url-navigations-on-top-level-window-will-be-blocked/ ***/
user_pref("security.data_uri.block_toplevel_data_uri_navigations", true);
/*** 2700: COOKIES & DOM STORAGE ***/
/*** 2700: PERSISTENT STORAGE
Data SET by websites including
cookies : profile\cookies.sqlite
localStorage : profile\webappsstore.sqlite
indexedDB : profile\storage\default
appCache : profile\OfflineCache
serviceWorkers :
***/
user_pref("_user.js.parrot", "2700 syntax error: the parrot's joined the bleedin' choir invisible!");
/* 2701: disable cookies on all sites [SETUP]
* You can set exceptions under site permissions or use an extension
@ -1429,28 +1418,52 @@ user_pref("network.cookie.thirdparty.sessionOnly", true);
// user_pref("network.cookie.lifetimePolicy", 0);
/* 2704: set cookie lifetime in days (see above pref) - default is 90 days ***/
// user_pref("network.cookie.lifetime.days", 90);
/* 2705: disable DOM (Document Object Model) Storage
/* 2705: disable HTTP sites setting cookies with the "secure" directive (default: true) (FF52+)
* [1] https://developer.mozilla.org/Firefox/Releases/52#HTTP ***/
user_pref("network.cookie.leave-secure-alone", true);
/* 2710: disable DOM (Document Object Model) Storage
* [WARNING] This will break a LOT of sites' functionality.
* You are better off using an extension for more granular control ***/
// user_pref("dom.storage.enabled", false);
/* 2706: disable Storage API
* The API gives sites the ability to find out how much space they can use, how much
* they are already using, and even control whether or not they need to be alerted
* before the user agent disposes of site data in order to make room for other things.
* [1] https://developer.mozilla.org/docs/Web/API/StorageManager
* [2] https://developer.mozilla.org/docs/Web/API/Storage_API
* [3] https://blog.mozilla.org/l10n/2017/03/07/firefox-l10n-report-aurora-54/ ***/
user_pref("dom.storageManager.enabled", false); // (FF51+)
user_pref("browser.storageManager.enabled", false); // (FF53+)
/* 2707: clear localStorage and UUID when an extension is uninstalled
/* 2711: clear localStorage and UUID when an extension is uninstalled
* [NOTE] Both preferences must be the same
* [1] https://developer.mozilla.org/Add-ons/WebExtensions/API/storage/local
* [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1213990 ***/
user_pref("extensions.webextensions.keepStorageOnUninstall", false);
user_pref("extensions.webextensions.keepUuidOnUninstall", false);
/* 2708: disable HTTP sites setting cookies with the "secure" directive (default: true) (FF52+)
* [1] https://developer.mozilla.org/Firefox/Releases/52#HTTP ***/
user_pref("network.cookie.leave-secure-alone", true);
/* 2720: disable JS storing data permanently [SETUP]
* [WARNING] This BREAKS uBlock Origin [1.14.0+] and other extensions that require IndexedDB
* [1] https://github.com/gorhill/uBlock/releases/tag/1.14.0
* [WARNING] This *will* break other extensions including legacy, and *will* break some sites ***/
// user_pref("dom.indexedDB.enabled", false);
/* 2730: disable offline cache ***/
user_pref("browser.cache.offline.enable", false);
/* 2731: enforce websites to ask to store data for offline use
* [1] https://support.mozilla.org/questions/1098540
* [2] https://bugzilla.mozilla.org/show_bug.cgi?id=959985 ***/
user_pref("offline-apps.allow_by_default", false);
/* 2732: display a notification when websites ask to store data for offline use
* [SETTING-56+] Options>Privacy & Security>Offline Web Content and User Data>Tell you when a website asks...
* [SETTING-ESR] Options>Advanced>Network>Tell me when a website asks to store data for offline use ***/
user_pref("browser.offline-apps.notify", true);
/* 2733: set size of warning quota for offline cache (default 51200)
* Offline cache is only used in rare cases to store data locally. FF will store small amounts
* (default <50MB) of data in the offline (application) cache without asking for permission. ***/
// user_pref("offline-apps.quota.warn", 51200);
/* 2740: disable service workers cache and cache storage
* [1] https://w3c.github.io/ServiceWorker/#privacy ***/
user_pref("dom.caches.enabled", false);
/* 2750: disable Storage API
* The API gives sites the ability to find out how much space they can use, how much
* they are already using, and even control whether or not they need to be alerted
* before the user agent disposes of site data in order to make room for other things.
* [NOTE] This also controls the visibility of the "Options>Privacy & Security>Site Data"
* section, which also requires Offline Cache (2730) enabled to function
* [1] https://developer.mozilla.org/docs/Web/API/StorageManager
* [2] https://developer.mozilla.org/docs/Web/API/Storage_API
* [3] https://blog.mozilla.org/l10n/2017/03/07/firefox-l10n-report-aurora-54/ ***/
user_pref("dom.storageManager.enabled", false); // (FF51+)
user_pref("browser.storageManager.enabled", false); // (FF53+)
/*** 2800: SHUTDOWN [SETUP]
You should set the values to what suits you best. Be aware that the settings below clear
@ -1517,6 +1530,11 @@ user_pref("privacy.sanitize.timeSpan", 0);
** 1337893 - isolate DNS cache (FF55+)
** 1344170 - isolate blob: URI (FF55+)
** 1300671 - isolate data:, about: URLs (FF55+)
NOTE: FPI has some unresolved issues
** 1381197 - extensions cannot control cookies with FPI Origin Attributes
** 1418931 - IndexedDB (Offline Website Data) with FPI Origin Attributes
are not removed with "Clear All/Recent History" or "On Close"
***/
user_pref("_user.js.parrot", "4000 syntax error: the parrot's pegged out");
/* 4001: enable First Party Isolation (FF51+)
@ -1560,13 +1578,17 @@ user_pref("privacy.firstparty.isolate.restrict_opener_access", true);
** 1372072 - spoof network information API as "unknown" (see 4607) (FF56+)
** 1333641 - reduce fingerprinting in WebSpeech API (see 4608) (FF56+)
** 1372069 & 1403813 - block geolocation requests (same as if you deny a site permission) (see 4609) (FF56+)
** 1369309 - spoof media statistics (see 2506) (FF57+)
** 1382499 - reduce screen co-ordinate fingerprinting in Touch API (see 2509) (FF57+)
** 1369309 - spoof media statistics (see 4610) (FF57+)
** 1382499 - reduce screen co-ordinate fingerprinting in Touch API (see 4611) (FF57+)
** 1217290 - enable fingerprinting resistance for WebGL (see 2010-12) (FF57+)
** 1382545 - reduce fingerprinting in Animation API (FF57+)
** 1354633 - limit MediaError.message to a whitelist (FF57+)
** 1382533 - enable fingerprinting resistance for Presentation API (see 2513) (FF57+)
This blocks exposure of local IP Addresses via mDNS (Multicast DNS)
** 967895 - enable site permission prompt before allowing canvas data extraction (FF58+)
In FF59+ this is controllable via the site permissions panel, see 1413780 (FF59+)
** 1372073 - spoof/block fingerprinting in MediaDevices API (FF59+)
** 1039069 - warn when language prefs are set to non en-US (see 0207, 0208) (FF59+)
***/
user_pref("_user.js.parrot", "4500 syntax error: the parrot's popped 'is clogs");
/* 4501: enable privacy.resistFingerprinting (FF41+)
@ -1592,7 +1614,7 @@ user_pref("privacy.resistFingerprinting", true); // (hidden pref) (not hidden FF
user_pref("_user.js.parrot", "4600 syntax error: the parrot's crossed the Jordan");
/* [NOTE] ESR52.x and non-RFP users replace the * with a slash on this line to enable these
// FF55+
// 4601: spoof (or limit?) number of CPU cores (FF48+)
// 4601: [2514] spoof (or limit?) number of CPU cores (FF48+)
// [WARNING] *may* affect core chrome/Firefox performance, will affect content.
// [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1008453
// [2] https://trac.torproject.org/projects/tor/ticket/21675
@ -1601,45 +1623,54 @@ user_pref("_user.js.parrot", "4600 syntax error: the parrot's crossed the Jordan
// user_pref("dom.maxHardwareConcurrency", 2);
// * * * /
// FF56+
// 4602: disable resource/navigation timing
// 4602: [2411] disable resource/navigation timing
user_pref("dom.enable_resource_timing", false);
// 4603: disable timing attacks
// 4603: [2412] disable timing attacks
// [1] https://wiki.mozilla.org/Security/Reviews/Firefox/NavigationTimingAPI
user_pref("dom.enable_performance", false);
// 4604: disable device sensor API
// 4604: [2512] disable device sensor API
// [WARNING] [SETUP] Optional protection depending on your device
// [1] https://trac.torproject.org/projects/tor/ticket/15758
// [2] https://blog.lukaszolejnik.com/stealing-sensitive-browser-data-with-the-w3c-ambient-light-sensor-api/
// [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1357733
// [4] https://bugzilla.mozilla.org/show_bug.cgi?id=1292751
// user_pref("device.sensors.enabled", false);
// 4605: disable site specific zoom
// 4605: [2515] disable site specific zoom
// Zoom levels affect screen res and are highly fingerprintable. This does not stop you using
// zoom, it will just not use/remember any site specific settings. Zoom levels on new tabs
// and new windows are reset to default and only the current tab retains the current zoom
user_pref("browser.zoom.siteSpecific", false);
// 4606: disable gamepad API - USB device ID enumeration
// 4606: [2501] disable gamepad API - USB device ID enumeration
// [WARNING] [SETUP] Optional protection depending on your connected devices
// [1] https://trac.torproject.org/projects/tor/ticket/13023
// user_pref("dom.gamepad.enabled", false);
// 4607: disable giving away network info (FF31+)
// 4607: [2503] disable giving away network info (FF31+)
// e.g. bluetooth, cellular, ethernet, wifi, wimax, other, mixed, unknown, none
// [1] https://developer.mozilla.org/docs/Web/API/Network_Information_API
// [2] https://wicg.github.io/netinfo/
// [3] https://bugzilla.mozilla.org/show_bug.cgi?id=960426
user_pref("dom.netinfo.enabled", false);
// 4608: disable speech recognition
// [1] https://developer.mozilla.org/docs/Web/API/SpeechRecognition
// 4608: [2021] disable the SpeechSynthesis (Text-to-Speech) part of the Web Speech API
// [1] https://developer.mozilla.org/docs/Web/API/Web_Speech_API
// [2] https://developer.mozilla.org/docs/Web/API/SpeechSynthesis
// [3] https://wiki.mozilla.org/HTML5_Speech_API
user_pref("media.webspeech.recognition.enable", false);
user_pref("media.webspeech.synth.enabled", false);
// 4609: disable location-aware browsing
// [NOTE] Use Mozilla's API key if required
// 4609: [0201] disable Location-Aware Browsing
// [1] https://www.mozilla.org/firefox/geolocation/
user_pref("geo.enabled", false);
user_pref("geo.wifi.uri", ""); // "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"
user_pref("geo.wifi.xhr.timeout", 1); // reset this if you use geolocation
user_pref("geo.wifi.logging.enabled", false); // (hidden pref)
// * * * /
// FF57+
// 4610: [2506] disable video statistics - JS performance fingerprinting (FF25+)
// [1] https://trac.torproject.org/projects/tor/ticket/15757
// [2] https://bugzilla.mozilla.org/show_bug.cgi?id=654550
user_pref("media.video_stats.enabled", false);
// 4611: [2509] disable touch events
// fingerprinting attack vector - leaks screen res & actual screen coordinates
// 0=disabled, 1=enabled, 2=autodetect
// [WARNING] [SETUP] Optional protection depending on your device
// [1] https://developer.mozilla.org/docs/Web/API/Touch_events
// [2] https://trac.torproject.org/projects/tor/ticket/10286
// user_pref("dom.w3c_touch_events.enabled", 0);
// * * * /
// ***/
@ -1654,8 +1685,8 @@ user_pref("geo.wifi.logging.enabled", false); // (hidden pref)
2. You are not in a controlled set of significant numbers, where the values are enforced
by default. It works for TBB because for TBB, the spoofed values ARE their default.
* We do not recommend UA spoofing yourself, leave it to privacy.resistFingerprinting (see 4500)
which is already plugging leaks (see 2 above) the prefs below do not address
* Values below are for example only based on the current ESR/TBB at the time of writing
which is already plugging leaks (see 1 above) the prefs below do not address
* Values below are for example only based on the current TBB at the time of writing
***/
user_pref("_user.js.parrot", "4700 syntax error: the parrot's taken 'is last bow");
/* 4701: navigator.userAgent leaks in JS
@ -1670,7 +1701,7 @@ user_pref("_user.js.parrot", "4700 syntax error: the parrot's taken 'is last bow
/* 4704: navigator.appVersion ***/
// user_pref("general.appversion.override", "5.0 (Windows)"); // (hidden pref)
/* 4705: navigator.platform leaks in JS ***/
// user_pref("general.platform.override", "Win64"); // (hidden pref)
// user_pref("general.platform.override", "Win32"); // (hidden pref)
/* 4706: navigator.oscpu leaks in JS ***/
// user_pref("general.oscpu.override", "Windows NT 6.1"); // (hidden pref)
/* 4707: general.useragent.locale (related, see 0204) ***/
@ -1692,7 +1723,7 @@ user_pref("browser.tabs.warnOnOpen", false);
user_pref("browser.tabs.closeWindowWithLastTab", false);
/* 5004: disable backspace (0=previous page, 1=scroll up, 2=do nothing) ***/
user_pref("browser.backspace_action", 2);
/* 5005: disable autocopy default (linux) ***/
/* 5005: disable autocopy default [LINUX] ***/
// user_pref("clipboard.autocopy", false);
/* 5006: disable enforced extension signing (FF43+)
* [NOTE] Only applicable to Nightly and ESR (FF48+)
@ -1702,6 +1733,9 @@ user_pref("browser.backspace_action", 2);
* 1=current window, 2=new window, 3=most recent window
* [SETTING] Options>General>Tabs>Open new windows in a new tab instead ***/
user_pref("browser.link.open_newwindow", 3);
/* 5008: open bookmarks in a new tab (FF57+)
* [NOTE] You can also use middle-click, cmd/ctl-click, and use the context menu ***/
// user_pref("browser.tabs.loadBookmarksInTabs", true);
/* 5010: enable ctrl-tab previews ***/
user_pref("browser.ctrlTab.previews", true);
/* 5011: don't open "page/selection source" in a tab. The window used instead is cleaner
@ -1713,6 +1747,10 @@ user_pref("layout.spellcheckDefault", 1);
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=620472
* [2] https://developer.mozilla.org/docs/Online_and_offline_events ***/
user_pref("network.manage-offline-status", false);
/* 5014: control download button visibility (FF57+)
* true = the button is automatically shown/hidden based on whether the session has downloads or not
* false = the button is always visible ***/
// user_pref("browser.download.autohideButton", false);
/* 5015: disable animations (FF55+)
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1352069 ***/
// user_pref("toolkit.cosmeticAnimations.enabled", false);
@ -1741,8 +1779,6 @@ user_pref("browser.tabs.loadInBackground", true);
* true: load the new tab in the background, leaving focus on the current tab
* false: load the new tab in the foreground, taking the focus from the current tab. ***/
user_pref("browser.tabs.loadDivertedInBackground", false);
/* 5022: hide recently bookmarked items (you still have the original bookmarks) (FF49+) ***/
user_pref("browser.bookmarks.showRecentlyBookmarked", false);
/* 5023: enable "Find As You Type"
* [1] http://kb.mozillazine.org/Accessibility.typeaheadfind ***/
// user_pref("accessibility.typeaheadfind", true);
@ -1762,6 +1798,7 @@ user_pref("browser.bookmarks.showRecentlyBookmarked", false);
// user_pref("media.wave.enabled", false);
// user_pref("media.webm.enabled", false);
// user_pref("media.wmf.enabled", false); // https://www.youtube.com/html5 - for the two H.264 entries
// user_pref("media.wmf.amd.vp9.enabled", true); // (FF57+)
// user_pref("media.wmf.vp9.enabled", false);
/* 5026: disable "Reader View" ***/
// user_pref("reader.parse-on-load.enabled", false);
@ -2067,6 +2104,33 @@ user_pref("browser.fullscreen.animate", false);
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1385201
user_pref("extensions.formautofill.experimental", false);
// * * * /
// FF57
// 0374: disable "social" integration
// [1] https://developer.mozilla.org/docs/Mozilla/Projects/Social_API
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1388902
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1406193 (leftover prefs removed in FF58)
user_pref("social.whitelist", "");
user_pref("social.toast-notifications.enabled", false);
user_pref("social.shareDirectory", "");
user_pref("social.remote-install.enabled", false);
user_pref("social.directories", "");
user_pref("social.share.activationPanelEnabled", false);
user_pref("social.enabled", false); // (hidden pref)
// 1830: disable DRM's EME WideVineAdapter
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1395468
user_pref("media.eme.chromium-api.enabled", false); // (FF55+)
// 2611: disable WebIDE extension downloads (Valence)
// [1] https://trac.torproject.org/projects/tor/ticket/16222
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1393497
user_pref("devtools.webide.autoinstallFxdtAdapters", false);
// 2612: disable SimpleServiceDiscovery - which can bypass proxy settings - e.g. Roku
// [1] https://trac.torproject.org/projects/tor/ticket/16222
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1393582
user_pref("browser.casting.enabled", false);
// 5022: hide recently bookmarked items (you still have the original bookmarks) (FF49+)
// [-] https://bugzilla.mozilla.org/show_bug.cgi?id=1401238
user_pref("browser.bookmarks.showRecentlyBookmarked", false);
// * * * /
// ***/
/* END: internal custom pref to test for syntax errors ***/

BIN
wikipiki/exceptions01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
wikipiki/exceptions02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
wikipiki/exceptions03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB