├── .github └── FUNDING.yml ├── 1903.xml ├── ChrEdgeFkOff.cmd ├── Edge_Removal.bat ├── Natural Smooth Scrolling for user.js ├── OpenWebSearch.cmd ├── README.md ├── UserChrome.js ├── chrome ├── JS │ ├── Addressbar.uc.js │ ├── OneClickSearch.uc.js │ ├── SimpleHotkeysOverride.uc.js │ └── UrlFixUp.uc.js └── userChrome.css ├── defaults └── pref │ └── enable-UserChrome.js ├── simple_minimize_windows_on_start_up-1-fx.xpi ├── tweaked firefox prefs 2021.02.09 user.js └── tweaked uBlock cfg 2024.03.22 user.txt /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: AveYo 2 | -------------------------------------------------------------------------------- /ChrEdgeFkOff.cmd: -------------------------------------------------------------------------------- 1 | @(set '(=)||' <# lean and mean cmd / powershell hybrid #> @' 2 | 3 | ::# OpenWebSearch 2023 - open desktop & start menu web search, widgets links or help in your chosen default browser - by AveYo 4 | ::# if Edge is already removed, try installing Edge Stable, then remove it again via Edge_Removal.bat 5 | 6 | @echo off & title OpenWebSearch || AveYo 2023.09.11 yes, this is a rebrand of ChrEdgeFkOff 7 | 8 | ::# elevate with native shell by AveYo 9 | >nul reg add hkcu\software\classes\.Admin\shell\runas\command /f /ve /d "cmd /x /d /r set \"f0=%%2\"& call \"%%2\" %%3"& set _= %* 10 | >nul fltmc|| if "%f0%" neq "%~f0" (cd.>"%temp%\runas.Admin" & start "%~n0" /high "%temp%\runas.Admin" "%~f0" "%_:"=""%" & exit /b) 11 | 12 | ::# lean xp+ color macros by AveYo: %<%:af " hello "%>>% & %<%:cf " w\"or\"ld "%>% for single \ / " use .%|%\ .%|%/ \"%|%\" 13 | for /f "delims=:" %%s in ('echo;prompt $h$s$h:^|cmd /d') do set "|=%%s"&set ">>=\..\c nul&set /p s=%%s%%s%%s%%s%%s%%s%%snul findstr /c:\ /a" &set ">=%>>%&echo;" &set "|=%|:~0,1%" &set /p s=\"%appdata%\c" 15 | 16 | ::# use dedicated C:\Scripts path due to Sigma rules FUD 17 | for %%W in ("%SystemDrive%\Scripts") do set DIR=%%~W& mkdir %%W >nul 2>nul 18 | 19 | ::# toggle when launched without arguments, else jump to arguments: "install" or "remove" 20 | set CLI=%*&(set IFEO=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options&set MSE=&set BHO=&set ProgID=) 21 | call :reg_var "HKCR\MSEdgeMHT\shell\open\command" "" ProgID 22 | for %%. in (%ProgID%) do if not defined MSE set "MSE=%%~."& set "MSEPath=%%~dp." 23 | set "PF=(x86)" & if "%PROCESSOR_ARCHITECTURE:~-2%" equ "86" if not defined PROCESSOR_ARCHITEW6432 set "PF=" 24 | if not defined MSEPath call set "MSEPath=%%ProgramFiles%PF%%%\Microsoft\Edge\Application\" 25 | if not defined MSE set "MSE=%MSEPath%msedge.exe" 26 | if /i "%CLI%"=="" reg query "%IFEO%\ie_to_edge_stub.exe\0" /v Debugger >nul 2>nul && goto remove || goto install 27 | if /i "%~1"=="install" (goto install) else if /i "%~1"=="remove" goto remove 28 | 29 | :install 30 | if defined MSEPath for /f "delims=" %%W in ('dir /o:D /b /s "%MSEPath%*ie_to_edge_stub.exe" 2^>nul') do set "BHO=%%~fW" 31 | if not exist "%MSEPath%edge.exe" if exist "%MSE%" mklink /h "%MSEPath%edge.exe" "%MSE%" >nul 32 | for %%W in (ie_to_edge_stub.exe) do if exist "%ProgramData%\%%W" copy /y "%ProgramData%\%%W" "%DIR%\" >nul 2>nul 33 | for %%W in (ie_to_edge_stub.exe) do if exist "%Public%\%%W" copy /y "%Public%\%%W" "%DIR%\" >nul 2>nul 34 | if defined BHO copy /y "%BHO%" "%DIR%\ie_to_edge_stub.exe" >nul 2>nul 35 | call :export OpenWebSearch_cmd > "%DIR%\OpenWebSearch.cmd" 36 | set MIN=--headless& for /f "tokens=6 delims=[]. " %%b in ('ver') do if %%b gtr 25179 set MIN=--width 1 --height 1 37 | set CMD=%systemroot%\system32\conhost.exe %MIN%& rem AveYo: minimize prompt - see Terminal issue #13914 38 | reg add "HKCR\microsoft-edge" /f /ve /d URL:microsoft-edge >nul 39 | reg add "HKCR\microsoft-edge" /f /v "URL Protocol" /d "" >nul 40 | reg add "HKCR\microsoft-edge" /f /v "NoOpenWith" /d "" >nul 41 | reg add "HKCR\microsoft-edge\shell\open\command" /f /ve /d "%DIR%\ie_to_edge_stub.exe %%1" >nul 42 | reg add "HKCR\MSEdgeHTM" /f /v "NoOpenWith" /d "" >nul 43 | reg add "HKCR\MSEdgeHTM\shell\open\command" /f /ve /d "%DIR%\ie_to_edge_stub.exe %%1" >nul 44 | reg add "%IFEO%\ie_to_edge_stub.exe" /f /v UseFilter /d 1 /t reg_dword >nul >nul 45 | reg add "%IFEO%\ie_to_edge_stub.exe\0" /f /v FilterFullPath /d "%DIR%\ie_to_edge_stub.exe" >nul 46 | reg add "%IFEO%\ie_to_edge_stub.exe\0" /f /v Debugger /d "%CMD% %DIR%\OpenWebSearch.cmd" >nul 47 | reg add "%IFEO%\msedge.exe" /f /v UseFilter /d 1 /t reg_dword >nul 48 | reg add "%IFEO%\msedge.exe\0" /f /v FilterFullPath /d "%MSE%" >nul 49 | reg add "%IFEO%\msedge.exe\0" /f /v Debugger /d "%CMD% %DIR%\OpenWebSearch.cmd" >nul 50 | :: new: automatically re-create the needed hardlink if edge is reinstalled 51 | set "t=$ta = New-ScheduledTaskAction -Execute '%%Temp%%\OpenWebSearchRepair.cmd'" 52 | set "s=$tt = New-ScheduledTaskTrigger -Once -At 00:00; $ts = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries" 53 | set "k=Register-ScheduledTask -TaskName 'OpenWebSearchRepair' -Action $ta -Trigger $tt -Settings $ts -RunLevel Highest -Force >''" 54 | powershell -nop -c "%t%;%s%;%k%;" >nul 55 | if "%CLI%" neq "" exit /b 56 | echo;& %<%:f0 " OpenWebSearch 2023 "%>>% & %<%:2f " INSTALLED "%>>% & %<%:f0 " run again to remove "%>% 57 | timeout /t 7 58 | exit /b 59 | 60 | :remove 61 | del /f /q "%DIR%\OpenWebSearch.*" "%MSEPath%edge.exe" "%ProgramData%\ChrEdgeFkOff.*" "%MSEPath%chredge.exe" >nul 2>nul 62 | schtasks /delete /tn OpenWebSearchRepair /f >nul 2>nul 63 | reg delete HKCR\microsoft-edge /f /v "NoOpenWith" >nul 2>nul 64 | reg add HKCR\microsoft-edge\shell\open\command /f /ve /d "\"%MSE%\" --single-argument %%1" >nul 65 | reg delete HKCR\MSEdgeHTM /f /v "NoOpenWith" >nul 2>nul 66 | reg add HKCR\MSEdgeHTM\shell\open\command /f /ve /d "\"%MSE%\" --single-argument %%1" >nul 67 | reg delete "%IFEO%\ie_to_edge_stub.exe" /f >nul 2>nul 68 | reg delete "%IFEO%\msedge.exe" /f >nul 2>nul 69 | if "%CLI%" neq "" exit /b 70 | echo;& %<%:f0 " OpenWebSearch 2023 "%>>% & %<%:df " REMOVED "%>>% & %<%:f0 " run again to install "%>% 71 | timeout /t 7 72 | exit /b 73 | 74 | :export: [USAGE] call :export NAME 75 | setlocal enabledelayedexpansion || Prints all text between lines starting with :NAME:[ and :NAME:] - A pure batch snippet by AveYo 76 | set [=&for /f "delims=:" %%s in ('findstr /nbrc:":%~1:\[" /c:":%~1:\]" "%~f0"')do if defined [ (set /a ]=%%s-3)else set /a [=%%s-1 77 | <"%~f0" ((for /l %%i in (0 1 %[%) do set /p =)&for /l %%i in (%[% 1 %]%) do (set txt=&set /p txt=&echo(!txt!)) &endlocal &exit /b 78 | 79 | :OpenWebSearch_cmd:[ 80 | @title OpenWebSearch 2023 & echo off & set ?= open start menu web search, widgets links or help in your chosen browser - by AveYo 81 | for /f %%E in ('"prompt $E$S& for %%e in (1) do rem"') do echo;%%E[2t 2>nul & rem AveYo: minimize prompt 82 | call :reg_var "HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice" ProgID ProgID 83 | if /i "%ProgID%" equ "MSEdgeHTM" echo;Default browser is set to Edge! Change it or remove OpenWebSearch script. & pause & exit /b 84 | call :reg_var "HKCR\%ProgID%\shell\open\command" "" Browser 85 | set Choice=& for %%. in (%Browser%) do if not defined Choice set "Choice=%%~." 86 | call :reg_var "HKCR\MSEdgeMHT\shell\open\command" "" FallBack 87 | set "Edge=" & for %%. in (%FallBack%) do if not defined Edge set "Edge=%%~." 88 | set "URI=" & set "URL=" & set "NOOP=" & set "PassTrough=%Edge:msedge=edge%" 89 | set "CLI=%CMDCMDLINE:"=``% " 90 | if defined CLI set "CLI=%CLI:*ie_to_edge_stub.exe`` =%" 91 | if defined CLI set "CLI=%CLI:*ie_to_edge_stub.exe =%" 92 | if defined CLI set "CLI=%CLI:*msedge.exe`` =%" 93 | if defined CLI set "CLI=%CLI:*msedge.exe =%" 94 | set "FIX=%CLI:~-1%" 95 | if defined CLI if "%FIX%"==" " set "CLI=%CLI:~0,-1%" 96 | if defined CLI set "RED=%CLI:microsoft-edge=%" 97 | if defined CLI set "URL=%CLI:http=%" 98 | if defined CLI set "ARG=%CLI:``="%" 99 | if "%CLI%" equ "%RED%" (set NOOP=1) else if "%CLI%" equ "%URL%" (set NOOP=1) 100 | if defined NOOP if not exist "%PassTrough%" echo;@mklink /h "%PassTrough%" "%Edge%" >"%Temp%\OpenWebSearchRepair.cmd" 101 | if defined NOOP if not exist "%PassTrough%" schtasks /run /tn OpenWebSearchRepair 2>nul >nul 102 | if defined NOOP if not exist "%PassTrough%" timeout /t 3 >nul 103 | if defined NOOP if exist "%PassTrough%" start "" "%PassTrough%" %ARG% 104 | if defined NOOP exit /b 105 | set "URL=%CLI:*microsoft-edge=%" 106 | set "URL=http%URL:*http=%" 107 | set "FIX=%URL:~-2%" 108 | if defined URL if "%FIX%"=="``" set "URL=%URL:~0,-2%" 109 | call :dec_url 110 | start "" "%Choice%" "%URL%" 111 | exit 112 | 113 | :reg_var [USAGE] call :reg_var "HKCU\Volatile Environment" value-or-"" variable [extra options] 114 | set {var}=& set {reg}=reg query "%~1" /v %2 /z /se "," /f /e& if %2=="" set {reg}=reg query "%~1" /ve /z /se "," /f /e 115 | for /f "skip=2 tokens=* delims=" %%V in ('%{reg}% %4 %5 %6 %7 %8 %9 2^>nul') do if not defined {var} set "{var}=%%V" 116 | if not defined {var} (set {reg}=& set "%~3="& exit /b) else if %2=="" set "{var}=%{var}:*) =%"& rem AveYo: v3 117 | if not defined {var} (set {reg}=& set "%~3="& exit /b) else set {reg}=& set "%~3=%{var}:*) =%"& set {var}=& exit /b 118 | 119 | :dec_url brute url percent decoding by AveYo 120 | set ".=%URL:!=}%"&setlocal enabledelayedexpansion& rem brute url percent decoding 121 | set ".=!.:%%={!" &set ".=!.:{3A=:!" &set ".=!.:{2F=/!" &set ".=!.:{3F=?!" &set ".=!.:{23=#!" &set ".=!.:{5B=[!" &set ".=!.:{5D=]!" 122 | set ".=!.:{40=@!"&set ".=!.:{21=}!" &set ".=!.:{24=$!" &set ".=!.:{26=&!" &set ".=!.:{27='!" &set ".=!.:{28=(!" &set ".=!.:{29=)!" 123 | set ".=!.:{2A=*!"&set ".=!.:{2B=+!" &set ".=!.:{2C=,!" &set ".=!.:{3B=;!" &set ".=!.:{3D==!" &set ".=!.:{25=%%!"&set ".=!.:{20= !" 124 | set ".=!.:{=%%!" &rem set ",=!.:%%=!" & if "!,!" neq "!.!" endlocal& set "URL=%.:}=!%" & call :dec_url 125 | endlocal& set "URL=%.:}=!%" & exit /b 126 | rem done 127 | :OpenWebSearch_cmd:] 128 | 129 | '@); $0 = "$env:temp\OpenWebSearch.cmd"; ${(=)||} -split "\r?\n" | out-file $0 -encoding default -force; & $0 130 | # press enter 131 | -------------------------------------------------------------------------------- /Edge_Removal.bat: -------------------------------------------------------------------------------- 1 | @(set "0=%~f0"^)#) & powershell -nop -c iex([io.file]::ReadAllText($env:0)) & exit /b 2 | #:: just copy-paste into powershell - it's a standalone hybrid script 3 | sp 'HKCU:\Volatile Environment' 'Edge_Removal' @' 4 | 5 | $also_remove_webview = 1 6 | ## why also remove webview? because it is 2 copies of edge, not a slimmed down CEF, and is driving bloated web apps 7 | $also_remove_widgets = 1 8 | ## why also remove widgets? because it is a webview glorified ad portal on msn and bing news cathering to stupid people 9 | $also_remove_xsocial = 1 10 | ## why also remove xsocial? because it starts webview setup every boot - xbox gamebar will still work without the social crap 11 | 12 | $host.ui.RawUI.WindowTitle = 'Edge Removal - AveYo, 2023.09.14' 13 | write-host "Run the script again whenever you need to reinstall and update edge or webview..`n" 14 | $remove_appx = @("MicrosoftEdge"); $remove_win32 = @("Microsoft Edge","Microsoft Edge Update"); $skip = @() # @("DevTools") 15 | if ($also_remove_webview -eq 1) {$remove_appx += "Win32WebViewHost"; $remove_win32 += "Microsoft EdgeWebView"} 16 | if ($also_remove_widgets -eq 1) {$remove_appx += "WebExperience"} 17 | if ($also_remove_xsocial -eq 1) {$remove_appx += "GamingServices"} 18 | 19 | $global:WEBV = $also_remove_webview -eq 1 20 | $global:IS64 = [Environment]::Is64BitOperatingSystem 21 | $global:IFEO = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options' 22 | $global:EDGE_UID = '{56EB18F8-B008-4CBD-B6D2-8C97FE7E9062}' 23 | $global:WEBV_UID = '{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}' 24 | $global:UPDT_UID = '{F3C4FE00-EFD5-403B-9569-398A20F1BA4A}' 25 | $global:PROGRAMS = ($env:ProgramFiles, ${env:ProgramFiles(x86)})[$IS64] 26 | $global:SOFTWARE = ('SOFTWARE', 'SOFTWARE\WOW6432Node')[$IS64] 27 | $global:ALLHIVES = 'HKCU:\SOFTWARE','HKLM:\SOFTWARE','HKCU:\SOFTWARE\Policies','HKLM:\SOFTWARE\Policies' 28 | if ($IS64) { $global:ALLHIVES += "HKCU:\$SOFTWARE","HKLM:\$SOFTWARE","HKCU:\$SOFTWARE\Policies","HKLM:\$SOFTWARE\Policies"} 29 | ## ------------------------------------------------------------------------------------------------------------------------------- 30 | 31 | ## 1 bonus! enter into powershell console: firefox / edge / webview to install a browser / reinstall edge / webview after removal 32 | function global:firefox { $url = 'https://download.mozilla.org/?product=firefox-stub' 33 | $setup = "$((new-object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path)\Firefox Installer.exe" 34 | write-host $url; Invoke-WebRequest $url -OutFile $setup; start $setup 35 | } 36 | function global:edge { $url = 'https://go.microsoft.com/fwlink/?linkid=2108834&Channel=Stable&language=en' 37 | $setup = "$((new-object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path)\MicrosoftEdgeSetup.exe" 38 | write-host $url; Invoke-WebRequest $url -OutFile $setup; PREPARE_EDGE; start $setup 39 | } 40 | function global:webview { $url = 'https://go.microsoft.com/fwlink/p/?LinkId=2124703' 41 | $setup = "$((new-object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path)\MicrosoftEdgeWebview2Setup.exe" 42 | write-host $url; Invoke-WebRequest $url -OutFile $setup; PREPARE_WEBVIEW; start $setup 43 | } 44 | function global:xsocial { $url = 'https://dlassets-ssl.xboxlive.com/public/content/XboxInstaller/XboxInstaller.exe' 45 | $setup = "$((new-object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path)\XboxInstaller.exe" 46 | write-host $url; Invoke-WebRequest $url -OutFile $setup; PREPARE_WEBVIEW; start $setup 47 | } 48 | 49 | ## helper for set-itemproperty remove-itemproperty new-item remove-item with auto test-path 50 | function global:sp_test_path { if (test-path $args[0]) {Microsoft.PowerShell.Management\Set-ItemProperty @args} else { 51 | Microsoft.PowerShell.Management\New-Item $args[0] -force -ea 0 >''; Microsoft.PowerShell.Management\Set-ItemProperty @args} } 52 | function global:rp_test_path { if (test-path $args[0]) {Microsoft.PowerShell.Management\Remove-ItemProperty @args} } 53 | function global:ni_test_path { if (-not (test-path $args[0])) {Microsoft.PowerShell.Management\New-Item @args} } 54 | function global:ri_test_path { if (test-path $args[0]) {Microsoft.PowerShell.Management\Remove-Item @args} } 55 | foreach ($f in 'sp','rp','ni','ri') {set-alias -Name $f -Value "${f}_test_path" -Scope Local -Option AllScope -force -ea 0} 56 | 57 | ## helper for edgeupdate reinstall 58 | function global:PREPARE_UPDT($cdp='msedgeupdate', $uid=$UPDT_UID) { 59 | foreach ($f in 'sp','rp','ni','ri') {set-alias -Name $f -Value "${f}_test_path" -Scope Local -Option AllScope -force -ea 0} 60 | foreach ($sw in $ALLHIVES) { 61 | rp "$sw\Microsoft\EdgeUpdate" 'DoNotUpdateToEdgeWithChromium' -force -ea 0 62 | rp "$sw\Microsoft\EdgeUpdate" 'UpdaterExperimentationAndConfigurationServiceControl' -force -ea 0 63 | rp "$sw\Microsoft\EdgeUpdate" "InstallDefault" -force -ea 0 64 | rp "$sw\Microsoft\EdgeUpdate" "Install${uid}" -force -ea 0 65 | rp "$sw\Microsoft\EdgeUpdate" "EdgePreview${uid}" -force -ea 0 66 | rp "$sw\Microsoft\EdgeUpdate" "Update${uid}" -force -ea 0 67 | rp "$sw\Microsoft\EdgeUpdate\ClientState\*" 'experiment_control_labels' -force -ea 0 68 | ri "$sw\Microsoft\EdgeUpdate\Clients\${uid}\Commands" -recurse -force -ea 0 69 | rp "$sw\Microsoft\EdgeUpdateDev\CdpNames" "$cdp-*" -force -ea 0 70 | sp "$sw\Microsoft\EdgeUpdateDev" 'CanContinueWithMissingUpdate' 1 -type Dword -force 71 | sp "$sw\Microsoft\EdgeUpdateDev" 'AllowUninstall' 1 -type Dword -force 72 | } 73 | } 74 | ## helper for edge reinstall - remove bundled OpenWebSearch redirector and edgeupdate policies 75 | function global:PREPARE_EDGE { 76 | foreach ($f in 'sp','rp','ni','ri') {set-alias -Name $f -Value "${f}_test_path" -Scope Local -Option AllScope -force -ea 0} 77 | PREPARE_UPDT 'msedge' $EDGE_UID; PREPARE_UPDT 'msedgeupdate' $UPDT_UID 78 | $MSEDGE = "$PROGRAMS\Microsoft\Edge\Application\msedge.exe" 79 | ri "$IFEO\msedge.exe" -recurse -force; ri "$IFEO\ie_to_edge_stub.exe" -recurse -force 80 | ri 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\microsoft-edge' -recurse -force 81 | sp 'HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command' '(Default)' "`"$MSEDGE`" --single-argument %%1" -force 82 | ri 'Registry::HKEY_Users\S-1-5-21*\Software\Classes\MSEdgeHTM' -recurse -force 83 | sp 'HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command' '(Default)' "`"$MSEDGE`" --single-argument %%1" -force 84 | } 85 | ## helper for webview reinstall - restore webexperience (widgets) if available 86 | function global:PREPARE_WEBVIEW { 87 | PREPARE_UPDT 'msedgewebview' $WEBV_UID; PREPARE_UPDT 'msedgeupdate' $UPDT_UID 88 | $cfg = @{Register=$true; ForceApplicationShutdown=$true; ForceUpdateFromAnyVersion=$true; DisableDevelopmentMode=$true} 89 | dir "$env:SystemRoot\SystemApps\Microsoft.Win32WebViewHost*\AppxManifest.xml" -rec -ea 0 | Add-AppxPackage @cfg 90 | dir "$env:ProgramFiles\WindowsApps\MicrosoftWindows.Client.WebExperience*\AppxManifest.xml" -rec -ea 0 | Add-AppxPackage @cfg 91 | kill -name explorer -ea 0; if ((get-process -name 'explorer' -ea 0) -eq $null) {start explorer} 92 | } 93 | ## ------------------------------------------------------------------------------------------------------------------------------- 94 | 95 | ## 2 enable admin privileges 96 | $D1=[uri].module.gettype('System.Diagnostics.Process')."GetM`ethods"(42) |where {$_.Name -eq 'SetPrivilege'} #`:no-ev-warn 97 | 'SeSecurityPrivilege','SeTakeOwnershipPrivilege','SeBackupPrivilege','SeRestorePrivilege'|foreach {$D1.Invoke($null, @("$_",2))} 98 | ## ------------------------------------------------------------------------------------------------------------------------------- 99 | 100 | ## 3 shut down edge & webview clone stuff 101 | cd $env:systemdrive; taskkill /im explorer.exe /f 2>&1 >'' 102 | $shut = 'explorer','Widgets','widgetservice','msedgewebview2','MicrosoftEdge*','chredge','msedge','edge' 103 | $shut,'msteams','msfamily','WebViewHost','Clipchamp' |foreach {kill -name $_ -force -ea 0} 104 | 105 | ## clear win32 uninstall block 106 | foreach ($name in $remove_win32) { foreach ($sw in $ALLHIVES) { 107 | $key = "$sw\Microsoft\Windows\CurrentVersion\Uninstall\$name"; if (-not (test-path $key)) {continue} 108 | foreach ($val in 'NoRemove','NoModify','NoRepair') {rp $key $val -force -ea 0} 109 | foreach ($val in 'ForceRemove','Delete') {sp $key $val 1 -type Dword -force} 110 | }} 111 | PREPARE_EDGE 112 | 113 | ## find all Edge setup.exe and gather BHO paths for OpenWebSearch / MSEdgeRedirect usage 114 | $edges = @(); $bho = @(); $edgeupdates = @(); 'LocalApplicationData','ProgramFilesX86','ProgramFiles' |foreach { 115 | $folder = [Environment]::GetFolderPath($_); $bho += dir "$folder\Microsoft\Edge*\ie_to_edge_stub.exe" -rec -ea 0 116 | if ($WEBV) {$edges += dir "$folder\Microsoft\Edge*\setup.exe" -rec -ea 0 |where {$_ -like '*EdgeWebView*'}} 117 | $edges += dir "$folder\Microsoft\Edge*\setup.exe" -rec -ea 0 |where {$_ -notlike '*EdgeWebView*'} 118 | $edgeupdates += dir "$folder\Microsoft\EdgeUpdate\*.*.*.*\MicrosoftEdgeUpdate.exe" -rec -ea 0 119 | } 120 | 121 | ## export OpenWebSearch innovative redirector - used by MSEdgeRedirect as well 122 | $DIR = "$env:SystemDrive\Scripts"; mkdir $DIR -ea 0 >'' 123 | foreach ($b in $bho) { if (test-path $b) { try {copy $b "$DIR\ie_to_edge_stub.exe" -force -ea 0} catch{} } } 124 | ## ------------------------------------------------------------------------------------------------------------------------------- 125 | 126 | ## 4 remove found *Edge* appx packages with unblock tricks 127 | $provisioned = get-appxprovisionedpackage -online; $appxpackage = get-appxpackage -allusers; $eol = @() 128 | $store = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore' 129 | $users = @('S-1-5-18'); if (test-path $store) {$users += $((dir $store -ea 0 |where {$_ -like '*S-1-5-21*'}).PSChildName)} 130 | foreach ($choice in $remove_appx) { if ('' -eq $choice.Trim()) {continue} 131 | foreach ($appx in $($provisioned |where {$_.PackageName -like "*$choice*"})) { 132 | $next = !1; foreach ($no in $skip) {if ($appx.PackageName -like "*$no*") {$next = !0}} ; if ($next) {continue} 133 | $PackageName = $appx.PackageName; $PackageFamilyName = ($appxpackage |where {$_.Name -eq $appx.DisplayName}).PackageFamilyName 134 | ni "$store\Deprovisioned\$PackageFamilyName" -force >''; $PackageFamilyName 135 | foreach ($sid in $users) {ni "$store\EndOfLife\$sid\$PackageName" -force >''} ; $eol += $PackageName 136 | dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 >'' 137 | remove-appxprovisionedpackage -packagename $PackageName -online -allusers >'' 138 | } 139 | foreach ($appx in $($appxpackage |where {$_.PackageFullName -like "*$choice*"})) { 140 | $next = !1; foreach ($no in $skip) {if ($appx.PackageFullName -like "*$no*") {$next = !0}} ; if ($next) {continue} 141 | $PackageFullName = $appx.PackageFullName; 142 | ni "$store\Deprovisioned\$appx.PackageFamilyName" -force >''; $PackageFullName 143 | foreach ($sid in $users) {ni "$store\EndOfLife\$sid\$PackageFullName" -force >''} ; $eol += $PackageFullName 144 | dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 >'' 145 | remove-appxpackage -package $PackageFullName -allusers >'' 146 | } 147 | } 148 | ## ------------------------------------------------------------------------------------------------------------------------------- 149 | 150 | ## 5 run found *Edge* setup.exe with uninstall args and wait in-between 151 | foreach ($setup in $edges) { if (-not (test-path $setup)) {continue} 152 | if ($setup -like '*EdgeWebView*') {$target = "--msedgewebview"} else {$target = "--msedge"} 153 | $sulevel = ('--system-level','--user-level')[$setup -like '*\AppData\Local\*'] 154 | $removal = "--uninstall $target $sulevel --verbose-logging --force-uninstall" 155 | try {write-host $setup $removal; start -wait $setup -args $removal} catch {} 156 | do {sleep 3} while ((get-process -name 'setup','MicrosoftEdge*' -ea 0).Path -like '*\Microsoft\Edge*') 157 | } 158 | ## ------------------------------------------------------------------------------------------------------------------------------- 159 | 160 | ## msi installers cleanup 161 | gp 'HKLM:\SOFTWARE\Classes\Installer\Products\*' 'ProductName' |where {$_.ProductName -like '*Microsoft Edge*'} |foreach { 162 | $prod = ($_.PSChildName -split '(.{8})(.{4})(.{4})(.{4})' -join '-').trim('-') 163 | $sort = 7,6,5,4,3,2,1,0,8,12,11,10,9,13,17,16,15,14,18,20,19,22,21,23,25,24,27,26,29,28,31,30,33,32,35,34 164 | $code = '{' + -join ($sort |foreach {$prod[$_]}) + '}'; start -wait msiexec.exe -args "/X$code /qn" 2>'' 165 | ri $_.PSPath -recurse -force 166 | foreach ($sw in $ALLHIVES) {ri "$sw\Microsoft\Windows\CurrentVersion\Uninstall\$code" -recurse -force} 167 | } 168 | 169 | ## 6 edgeupdate graceful cleanup 170 | if ($WEBV) { 171 | foreach ($sw in $ALLHIVES) {ri "$sw\Microsoft\EdgeUpdate" -recurse -force} 172 | foreach ($UPDT in $edgeupdates) { 173 | if (test-path $UPDT) {write-host "$UPDT /unregsvc"; start -wait $UPDT -args '/unregsvc'} 174 | do {sleep 3} while ((get-process -name 'setup','MicrosoftEdge*' -ea 0).Path -like '*\Microsoft\Edge*') 175 | if (test-path $UPDT) {write-host "$UPDT /uninstall"; start -wait $UPDT -args '/uninstall'} 176 | do {sleep 3} while ((get-process -name 'setup','MicrosoftEdge*' -ea 0).Path -like '*\Microsoft\Edge*') 177 | } 178 | Unregister-ScheduledTask -TaskName MicrosoftEdgeUpdate* -Confirm:$false -ea 0; ri "$PROGRAMS\Microsoft\Temp" -recurse -force 179 | } 180 | $appdata = $([Environment]::GetFolderPath('ApplicationData')) 181 | ri "$appdata\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Tombstones\Microsoft Edge.lnk" -force 182 | ri "$appdata\Microsoft\Internet Explorer\Quick Launch\Microsoft Edge.lnk" -force 183 | 184 | ## undo eol unblock trick to prevent latest cumulative update (LCU) failing 185 | foreach ($sid in $users) { foreach ($PackageName in $eol) {ri "$store\EndOfLife\$sid\$PackageName" -force >''} } 186 | 187 | ## .i. "Update policies are configured but will be ignored because this device isn't domain joined" .i. 188 | $uids = @($EDGE_UID); $cdps = @('msedge'); if ($WEBV) {$uids += $WEBV_UID; $cdps += 'msedgewebview'} 189 | foreach ($sw in $ALLHIVES) { 190 | sp "$sw\Microsoft\EdgeUpdate" 'DoNotUpdateToEdgeWithChromium' 1 -type Dword -force 191 | sp "$sw\Microsoft\EdgeUpdate" 'UpdaterExperimentationAndConfigurationServiceControl' 0 -type Dword -force 192 | sp "$sw\Microsoft\EdgeUpdate" 'InstallDefault' 0 -type Dword -force 193 | foreach ($uid in $uids) { 194 | sp "$sw\Microsoft\EdgeUpdate" "Install${uid}" 0 -type Dword -force 195 | sp "$sw\Microsoft\EdgeUpdate" "EdgePreview${uid}" 0 -type Dword -force 196 | sp "$sw\Microsoft\EdgeUpdate" "Update${uid}" 2 -type Dword -force 197 | foreach ($trigger in 'on-os-upgrade','on-logon','on-logon-autolaunch','on-logon-startup-boost') { 198 | sp "$sw\Microsoft\EdgeUpdate\Clients\${uid}\Commands\$trigger" 'AutoRunOnLogon' 0 -type Dword -force 199 | sp "$sw\Microsoft\EdgeUpdate\Clients\${uid}\Commands\$trigger" 'AutoRunOnOSUpgrade' 0 -type Dword -force 200 | sp "$sw\Microsoft\EdgeUpdate\Clients\${uid}\Commands\$trigger" 'Enabled' 0 -type Dword -force 201 | } 202 | } 203 | sp "$sw\Microsoft\MicrosoftEdge\Main" 'AllowPrelaunch' 0 -type Dword -force 204 | sp "$sw\Microsoft\MicrosoftEdge\TabPreloader" 'AllowTabPreloading' 0 -type Dword -force 205 | ## microsoft has no shame, so we are gonna insist opting-out of unsolicited reinstalls with windows updates 206 | foreach ($cdp in $cdps) { foreach ($arch in 'x64','x86') { foreach ($zdp in '','-zdp') { 207 | sp "$sw\Microsoft\EdgeUpdateDev\CdpNames" "$cdp-stable-win-$arch$zdp" "$cdp-stable-win-arm64$zdp" -force 208 | }}} 209 | } 210 | ## ------------------------------------------------------------------------------------------------------------------------------- 211 | 212 | ## 7 add bundled OpenWebSearch script to redirect microsoft-edge: anti-competitive links to the default browser 213 | $MSEP = ($env:ProgramFiles,${env:ProgramFiles(x86)})[[Environment]::Is64BitOperatingSystem] + '\Microsoft\Edge\Application' 214 | $IFEO = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options' 215 | $MIN = ('--headless','--width 1 --height 1')[([environment]::OSVersion.Version.Build) -gt 25179] 216 | $CMD = "$env:systemroot\system32\conhost.exe $MIN" # AveYo: minimize prompt - see Terminal issue #13914 217 | ni "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" -force >'' 218 | sp "HKLM:\SOFTWARE\Classes\microsoft-edge" '(Default)' 'URL:microsoft-edge' -force 219 | sp "HKLM:\SOFTWARE\Classes\microsoft-edge" 'URL Protocol' '' -force 220 | sp "HKLM:\SOFTWARE\Classes\microsoft-edge" 'NoOpenWith' '' -force 221 | sp "HKLM:\SOFTWARE\Classes\microsoft-edge\shell\open\command" '(Default)' "`"$DIR\ie_to_edge_stub.exe`" %1" -force 222 | ni "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" -force >'' 223 | sp "HKLM:\SOFTWARE\Classes\MSEdgeHTM" 'NoOpenWith' '' -force 224 | sp "HKLM:\SOFTWARE\Classes\MSEdgeHTM\shell\open\command" '(Default)' "`"$DIR\ie_to_edge_stub.exe`" %1" -force 225 | ni "$IFEO\ie_to_edge_stub.exe\0" -force >'' 226 | sp "$IFEO\ie_to_edge_stub.exe" 'UseFilter' 1 -type Dword -force 227 | sp "$IFEO\ie_to_edge_stub.exe\0" 'FilterFullPath' "$DIR\ie_to_edge_stub.exe" -force 228 | sp "$IFEO\ie_to_edge_stub.exe\0" 'Debugger' "$CMD $DIR\OpenWebSearch.cmd" -force 229 | ni "$IFEO\msedge.exe\0" -force >'' 230 | sp "$IFEO\msedge.exe" 'UseFilter' 1 -type Dword -force 231 | sp "$IFEO\msedge.exe\0" 'FilterFullPath' "$MSEP\msedge.exe" -force 232 | sp "$IFEO\msedge.exe\0" 'Debugger' "$CMD $DIR\OpenWebSearch.cmd" -force 233 | ## new: automatically re-create the needed hardlink if edge is reinstalled 234 | $ta = New-ScheduledTaskAction -Execute '%Temp%\OpenWebSearchRepair.cmd' 235 | $tt = New-ScheduledTaskTrigger -Once -At 00:00; $ts = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries 236 | Register-ScheduledTask -TaskName 'OpenWebSearchRepair' -Action $ta -Trigger $tt -Settings $ts -RunLevel Highest -Force >'' 237 | 238 | $OpenWebSearch = @$ 239 | @title OpenWebSearch Redux & echo off & set ?= open start menu web search, widgets links or help in your chosen browser - by AveYo 240 | for /f %%E in ('"prompt $E$S& for %%e in (1) do rem"') do echo;%%E[2t 2>nul & rem AveYo: minimize prompt 241 | call :reg_var "HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice" ProgID ProgID 242 | if /i "%ProgID%" equ "MSEdgeHTM" echo;Default browser is set to Edge! Change it or remove OpenWebSearch script. & pause & exit /b 243 | call :reg_var "HKCR\%ProgID%\shell\open\command" "" Browser 244 | set Choice=& for %%. in (%Browser%) do if not defined Choice set "Choice=%%~." 245 | call :reg_var "HKCR\MSEdgeMHT\shell\open\command" "" FallBack 246 | set "Edge=" & for %%. in (%FallBack%) do if not defined Edge set "Edge=%%~." 247 | set "URI=" & set "URL=" & set "NOOP=" & set "PassTrough=%Edge:msedge=edge%" 248 | set "CLI=%CMDCMDLINE:"=``% " 249 | if defined CLI set "CLI=%CLI:*ie_to_edge_stub.exe`` =%" 250 | if defined CLI set "CLI=%CLI:*ie_to_edge_stub.exe =%" 251 | if defined CLI set "CLI=%CLI:*msedge.exe`` =%" 252 | if defined CLI set "CLI=%CLI:*msedge.exe =%" 253 | set "FIX=%CLI:~-1%" 254 | if defined CLI if "%FIX%"==" " set "CLI=%CLI:~0,-1%" 255 | if defined CLI set "RED=%CLI:microsoft-edge=%" 256 | if defined CLI set "URL=%CLI:http=%" 257 | if defined CLI set "ARG=%CLI:``="%" 258 | if "%CLI%" equ "%RED%" (set NOOP=1) else if "%CLI%" equ "%URL%" (set NOOP=1) 259 | if defined NOOP if not exist "%PassTrough%" echo;@mklink /h "%PassTrough%" "%Edge%" >"%Temp%\OpenWebSearchRepair.cmd" 260 | if defined NOOP if not exist "%PassTrough%" schtasks /run /tn OpenWebSearchRepair 2>nul >nul 261 | if defined NOOP if not exist "%PassTrough%" timeout /t 3 >nul 262 | if defined NOOP if exist "%PassTrough%" start "" "%PassTrough%" %ARG% 263 | if defined NOOP exit /b 264 | set "URL=%CLI:*microsoft-edge=%" 265 | set "URL=http%URL:*http=%" 266 | set "FIX=%URL:~-2%" 267 | if defined URL if "%FIX%"=="``" set "URL=%URL:~0,-2%" 268 | call :dec_url 269 | start "" "%Choice%" "%URL%" 270 | exit 271 | 272 | :reg_var [USAGE] call :reg_var "HKCU\Volatile Environment" value-or-"" variable [extra options] 273 | set {var}=& set {reg}=reg query "%~1" /v %2 /z /se "," /f /e& if %2=="" set {reg}=reg query "%~1" /ve /z /se "," /f /e 274 | for /f "skip=2 tokens=* delims=" %%V in ('%{reg}% %4 %5 %6 %7 %8 %9 2^>nul') do if not defined {var} set "{var}=%%V" 275 | if not defined {var} (set {reg}=& set "%~3="& exit /b) else if %2=="" set "{var}=%{var}:*) =%"& rem AveYo: v3 276 | if not defined {var} (set {reg}=& set "%~3="& exit /b) else set {reg}=& set "%~3=%{var}:*) =%"& set {var}=& exit /b 277 | 278 | :dec_url brute url percent decoding by AveYo 279 | set ".=%URL:!=}%"&setlocal enabledelayedexpansion& rem brute url percent decoding 280 | set ".=!.:%%={!" &set ".=!.:{3A=:!" &set ".=!.:{2F=/!" &set ".=!.:{3F=?!" &set ".=!.:{23=#!" &set ".=!.:{5B=[!" &set ".=!.:{5D=]!" 281 | set ".=!.:{40=@!"&set ".=!.:{21=}!" &set ".=!.:{24=$!" &set ".=!.:{26=&!" &set ".=!.:{27='!" &set ".=!.:{28=(!" &set ".=!.:{29=)!" 282 | set ".=!.:{2A=*!"&set ".=!.:{2B=+!" &set ".=!.:{2C=,!" &set ".=!.:{3B=;!" &set ".=!.:{3D==!" &set ".=!.:{25=%%!"&set ".=!.:{20= !" 283 | set ".=!.:{=%%!" &rem set ",=!.:%%=!" & if "!,!" neq "!.!" endlocal& set "URL=%.:}=!%" & call :dec_url 284 | endlocal& set "URL=%.:}=!%" & exit /b 285 | rem done 286 | 287 | $@ 288 | [io.file]::WriteAllText("$DIR\OpenWebSearch.cmd", $OpenWebSearch) 289 | ## ------------------------------------------------------------------------------------------------------------------------------- 290 | 291 | ## 8 done 292 | $done = gp 'Registry::HKEY_Users\S-1-5-21*\Volatile*' Edge_Removal -ea 0; if ($done) {rp $done.PSPath Edge_Removal -force -ea 0} 293 | if ((get-process -name 'explorer' -ea 0) -eq $null) {start explorer} 294 | 295 | ## bonus enter into powershell console: firefox / edge / webview to install a browser / reinstall edge or webview after removal 296 | ${.} = [char]27; $firefox = "${.}[38;2;255;165;0m firefox"; $reinstall = "${.}[96m edge / webview / xsocial${.}[97m " 297 | write-host "`n${.}[40;32m EDGE REMOVED! ${.}[97m -GET-ANOTHER-BROWSER? ENTER:$firefox ${.}[97m -REINSTALL? ENTER:$reinstall" 298 | ## ------------------------------------------------------------------------------------------------------------------------------- 299 | 300 | ## 0 ask to run script as admin 301 | '@.replace("$@","'@").replace("@$","@'") -force -ea 0; $code='gp ''Registry::HKEY_Users\S-1-5-21*\Volatile*'' Edge_Removal -ea 0' 302 | start powershell -args "-nop -noe -c & {iex(($code)[0].Edge_Removal)}" -verb runas 303 | $_Press_Enter 304 | #:: 305 | -------------------------------------------------------------------------------- /Natural Smooth Scrolling for user.js: -------------------------------------------------------------------------------- 1 | /// NATURAL SMOOTH SCROLLING V4 "SHARP" - AveYo, 2020-2022 preset [default] 2 | /// copy into firefox/librewolf profile as user.js, add to existing, or set in about:config 3 | user_pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);//NSS [120] 4 | user_pref("general.smoothScroll.msdPhysics.enabled", true);//NSS [false] 5 | user_pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 200);//NSS [1250] 6 | user_pref("general.smoothScroll.msdPhysics.regularSpringConstant", 250);//NSS [1000] 7 | user_pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);//NSS [12] 8 | user_pref("general.smoothScroll.msdPhysics.slowdownMinDeltaRatio", "2.0");//NSS [1.3] 9 | user_pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);//NSS [2000] 10 | user_pref("general.smoothScroll.currentVelocityWeighting", "1.0");//NSS ["0.25"] 11 | user_pref("general.smoothScroll.stopDecelerationWeighting", "1.0");//NSS ["0.4"] 12 | 13 | /// adjust multiply factor for mousewheel - or set to false if scrolling is way too fast 14 | user_pref("mousewheel.system_scroll_override.horizontal.factor", 200);//NSS [200] 15 | user_pref("mousewheel.system_scroll_override.vertical.factor", 200);//NSS [200] 16 | user_pref("mousewheel.system_scroll_override_on_root_content.enabled", true);//NSS [true] 17 | user_pref("mousewheel.system_scroll_override.enabled", true);//NSS [true] 18 | 19 | /// adjust pixels at a time count for mousewheel - cant do more than a page at once if <100 20 | user_pref("mousewheel.default.delta_multiplier_x", 100);//NSS [100] 21 | user_pref("mousewheel.default.delta_multiplier_y", 100);//NSS [100] 22 | user_pref("mousewheel.default.delta_multiplier_z", 100);//NSS [100] 23 | 24 | /// this preset will reset couple extra variables for consistency 25 | user_pref("apz.allow_zooming", true);//NSS [true] 26 | user_pref("apz.force_disable_desktop_zooming_scrollbars", false);//NSS [false] 27 | user_pref("apz.paint_skipping.enabled", true);//NSS [true] 28 | user_pref("apz.windows.use_direct_manipulation", true);//NSS [true] 29 | user_pref("dom.event.wheel-deltaMode-lines.always-disabled", false);//NSS [false] 30 | user_pref("general.smoothScroll.durationToIntervalRatio", 200);//NSS [200] 31 | user_pref("general.smoothScroll.lines.durationMaxMS", 150);//NSS [150] 32 | user_pref("general.smoothScroll.lines.durationMinMS", 150);//NSS [150] 33 | user_pref("general.smoothScroll.other.durationMaxMS", 150);//NSS [150] 34 | user_pref("general.smoothScroll.other.durationMinMS", 150);//NSS [150] 35 | user_pref("general.smoothScroll.pages.durationMaxMS", 150);//NSS [150] 36 | user_pref("general.smoothScroll.pages.durationMinMS", 150);//NSS [150] 37 | user_pref("general.smoothScroll.pixels.durationMaxMS", 150);//NSS [150] 38 | user_pref("general.smoothScroll.pixels.durationMinMS", 150);//NSS [150] 39 | user_pref("general.smoothScroll.scrollbars.durationMaxMS", 150);//NSS [150] 40 | user_pref("general.smoothScroll.scrollbars.durationMinMS", 150);//NSS [150] 41 | user_pref("general.smoothScroll.mouseWheel.durationMaxMS", 200);//NSS [200] 42 | user_pref("general.smoothScroll.mouseWheel.durationMinMS", 50);//NSS [50] 43 | user_pref("layers.async-pan-zoom.enabled", true);//NSS [true] 44 | user_pref("layout.css.scroll-behavior.spring-constant", "250");//NSS [250] 45 | user_pref("mousewheel.transaction.timeout", 1500);//NSS [1500] 46 | user_pref("mousewheel.acceleration.factor", 10);//NSS [10] 47 | user_pref("mousewheel.acceleration.start", -1);//NSS [-1] 48 | user_pref("mousewheel.min_line_scroll_amount", 5);//NSS [5] 49 | user_pref("toolkit.scrollbox.horizontalScrollDistance", 5);//NSS [5] 50 | user_pref("toolkit.scrollbox.verticalScrollDistance", 3);//NSS [3] 51 | /// 52 | -------------------------------------------------------------------------------- /OpenWebSearch.cmd: -------------------------------------------------------------------------------- 1 | @(set '(=)||' <# lean and mean cmd / powershell hybrid #> @' 2 | 3 | ::# OpenWebSearch 2023 - open desktop & start menu web search, widgets links or help in your chosen default browser - by AveYo 4 | ::# if Edge is already removed, try installing Edge Stable, then remove it again via Edge_Removal.bat 5 | 6 | @echo off & title OpenWebSearch || AveYo 2023.09.11 yes, this is a rebrand of ChrEdgeFkOff 7 | 8 | ::# elevate with native shell by AveYo 9 | >nul reg add hkcu\software\classes\.Admin\shell\runas\command /f /ve /d "cmd /x /d /r set \"f0=%%2\"& call \"%%2\" %%3"& set _= %* 10 | >nul fltmc|| if "%f0%" neq "%~f0" (cd.>"%temp%\runas.Admin" & start "%~n0" /high "%temp%\runas.Admin" "%~f0" "%_:"=""%" & exit /b) 11 | 12 | ::# lean xp+ color macros by AveYo: %<%:af " hello "%>>% & %<%:cf " w\"or\"ld "%>% for single \ / " use .%|%\ .%|%/ \"%|%\" 13 | for /f "delims=:" %%s in ('echo;prompt $h$s$h:^|cmd /d') do set "|=%%s"&set ">>=\..\c nul&set /p s=%%s%%s%%s%%s%%s%%s%%snul findstr /c:\ /a" &set ">=%>>%&echo;" &set "|=%|:~0,1%" &set /p s=\"%appdata%\c" 15 | 16 | ::# use dedicated C:\Scripts path due to Sigma rules FUD 17 | for %%W in ("%SystemDrive%\Scripts") do set DIR=%%~W& mkdir %%W >nul 2>nul 18 | 19 | ::# toggle when launched without arguments, else jump to arguments: "install" or "remove" 20 | set CLI=%*&(set IFEO=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options&set MSE=&set BHO=&set ProgID=) 21 | call :reg_var "HKCR\MSEdgeMHT\shell\open\command" "" ProgID 22 | for %%. in (%ProgID%) do if not defined MSE set "MSE=%%~."& set "MSEPath=%%~dp." 23 | set "PF=(x86)" & if "%PROCESSOR_ARCHITECTURE:~-2%" equ "86" if not defined PROCESSOR_ARCHITEW6432 set "PF=" 24 | if not defined MSEPath call set "MSEPath=%%ProgramFiles%PF%%%\Microsoft\Edge\Application\" 25 | if not defined MSE set "MSE=%MSEPath%msedge.exe" 26 | if /i "%CLI%"=="" reg query "%IFEO%\ie_to_edge_stub.exe\0" /v Debugger >nul 2>nul && goto remove || goto install 27 | if /i "%~1"=="install" (goto install) else if /i "%~1"=="remove" goto remove 28 | 29 | :install 30 | if defined MSEPath for /f "delims=" %%W in ('dir /o:D /b /s "%MSEPath%*ie_to_edge_stub.exe" 2^>nul') do set "BHO=%%~fW" 31 | if not exist "%MSEPath%edge.exe" if exist "%MSE%" mklink /h "%MSEPath%edge.exe" "%MSE%" >nul 32 | for %%W in (ie_to_edge_stub.exe) do if exist "%ProgramData%\%%W" copy /y "%ProgramData%\%%W" "%DIR%\" >nul 2>nul 33 | for %%W in (ie_to_edge_stub.exe) do if exist "%Public%\%%W" copy /y "%Public%\%%W" "%DIR%\" >nul 2>nul 34 | if defined BHO copy /y "%BHO%" "%DIR%\ie_to_edge_stub.exe" >nul 2>nul 35 | call :export OpenWebSearch_cmd > "%DIR%\OpenWebSearch.cmd" 36 | set MIN=--headless& for /f "tokens=6 delims=[]. " %%b in ('ver') do if %%b gtr 25179 set MIN=--width 1 --height 1 37 | set CMD=%systemroot%\system32\conhost.exe %MIN%& rem AveYo: minimize prompt - see Terminal issue #13914 38 | reg add "HKCR\microsoft-edge" /f /ve /d URL:microsoft-edge >nul 39 | reg add "HKCR\microsoft-edge" /f /v "URL Protocol" /d "" >nul 40 | reg add "HKCR\microsoft-edge" /f /v "NoOpenWith" /d "" >nul 41 | reg add "HKCR\microsoft-edge\shell\open\command" /f /ve /d "%DIR%\ie_to_edge_stub.exe %%1" >nul 42 | reg add "HKCR\MSEdgeHTM" /f /v "NoOpenWith" /d "" >nul 43 | reg add "HKCR\MSEdgeHTM\shell\open\command" /f /ve /d "%DIR%\ie_to_edge_stub.exe %%1" >nul 44 | reg add "%IFEO%\ie_to_edge_stub.exe" /f /v UseFilter /d 1 /t reg_dword >nul >nul 45 | reg add "%IFEO%\ie_to_edge_stub.exe\0" /f /v FilterFullPath /d "%DIR%\ie_to_edge_stub.exe" >nul 46 | reg add "%IFEO%\ie_to_edge_stub.exe\0" /f /v Debugger /d "%CMD% %DIR%\OpenWebSearch.cmd" >nul 47 | reg add "%IFEO%\msedge.exe" /f /v UseFilter /d 1 /t reg_dword >nul 48 | reg add "%IFEO%\msedge.exe\0" /f /v FilterFullPath /d "%MSE%" >nul 49 | reg add "%IFEO%\msedge.exe\0" /f /v Debugger /d "%CMD% %DIR%\OpenWebSearch.cmd" >nul 50 | :: new: automatically re-create the needed hardlink if edge is reinstalled 51 | set "t=$ta = New-ScheduledTaskAction -Execute '%%Temp%%\OpenWebSearchRepair.cmd'" 52 | set "s=$tt = New-ScheduledTaskTrigger -Once -At 00:00; $ts = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries" 53 | set "k=Register-ScheduledTask -TaskName 'OpenWebSearchRepair' -Action $ta -Trigger $tt -Settings $ts -RunLevel Highest -Force >''" 54 | powershell -nop -c "%t%;%s%;%k%;" >nul 55 | if "%CLI%" neq "" exit /b 56 | echo;& %<%:f0 " OpenWebSearch 2023 "%>>% & %<%:2f " INSTALLED "%>>% & %<%:f0 " run again to remove "%>% 57 | timeout /t 7 58 | exit /b 59 | 60 | :remove 61 | del /f /q "%DIR%\OpenWebSearch.*" "%MSEPath%edge.exe" "%ProgramData%\ChrEdgeFkOff.*" "%MSEPath%chredge.exe" >nul 2>nul 62 | schtasks /delete /tn OpenWebSearchRepair /f >nul 2>nul 63 | reg delete HKCR\microsoft-edge /f /v "NoOpenWith" >nul 2>nul 64 | reg add HKCR\microsoft-edge\shell\open\command /f /ve /d "\"%MSE%\" --single-argument %%1" >nul 65 | reg delete HKCR\MSEdgeHTM /f /v "NoOpenWith" >nul 2>nul 66 | reg add HKCR\MSEdgeHTM\shell\open\command /f /ve /d "\"%MSE%\" --single-argument %%1" >nul 67 | reg delete "%IFEO%\ie_to_edge_stub.exe" /f >nul 2>nul 68 | reg delete "%IFEO%\msedge.exe" /f >nul 2>nul 69 | if "%CLI%" neq "" exit /b 70 | echo;& %<%:f0 " OpenWebSearch 2023 "%>>% & %<%:df " REMOVED "%>>% & %<%:f0 " run again to install "%>% 71 | timeout /t 7 72 | exit /b 73 | 74 | :export: [USAGE] call :export NAME 75 | setlocal enabledelayedexpansion || Prints all text between lines starting with :NAME:[ and :NAME:] - A pure batch snippet by AveYo 76 | set [=&for /f "delims=:" %%s in ('findstr /nbrc:":%~1:\[" /c:":%~1:\]" "%~f0"')do if defined [ (set /a ]=%%s-3)else set /a [=%%s-1 77 | <"%~f0" ((for /l %%i in (0 1 %[%) do set /p =)&for /l %%i in (%[% 1 %]%) do (set txt=&set /p txt=&echo(!txt!)) &endlocal &exit /b 78 | 79 | :OpenWebSearch_cmd:[ 80 | @title OpenWebSearch 2023 & echo off & set ?= open start menu web search, widgets links or help in your chosen browser - by AveYo 81 | for /f %%E in ('"prompt $E$S& for %%e in (1) do rem"') do echo;%%E[2t 2>nul & rem AveYo: minimize prompt 82 | call :reg_var "HKCU\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice" ProgID ProgID 83 | if /i "%ProgID%" equ "MSEdgeHTM" echo;Default browser is set to Edge! Change it or remove OpenWebSearch script. & pause & exit /b 84 | call :reg_var "HKCR\%ProgID%\shell\open\command" "" Browser 85 | set Choice=& for %%. in (%Browser%) do if not defined Choice set "Choice=%%~." 86 | call :reg_var "HKCR\MSEdgeMHT\shell\open\command" "" FallBack 87 | set "Edge=" & for %%. in (%FallBack%) do if not defined Edge set "Edge=%%~." 88 | set "URI=" & set "URL=" & set "NOOP=" & set "PassTrough=%Edge:msedge=edge%" 89 | set "CLI=%CMDCMDLINE:"=``% " 90 | if defined CLI set "CLI=%CLI:*ie_to_edge_stub.exe`` =%" 91 | if defined CLI set "CLI=%CLI:*ie_to_edge_stub.exe =%" 92 | if defined CLI set "CLI=%CLI:*msedge.exe`` =%" 93 | if defined CLI set "CLI=%CLI:*msedge.exe =%" 94 | set "FIX=%CLI:~-1%" 95 | if defined CLI if "%FIX%"==" " set "CLI=%CLI:~0,-1%" 96 | if defined CLI set "RED=%CLI:microsoft-edge=%" 97 | if defined CLI set "URL=%CLI:http=%" 98 | if defined CLI set "ARG=%CLI:``="%" 99 | if "%CLI%" equ "%RED%" (set NOOP=1) else if "%CLI%" equ "%URL%" (set NOOP=1) 100 | if defined NOOP if not exist "%PassTrough%" echo;@mklink /h "%PassTrough%" "%Edge%" >"%Temp%\OpenWebSearchRepair.cmd" 101 | if defined NOOP if not exist "%PassTrough%" schtasks /run /tn OpenWebSearchRepair 2>nul >nul 102 | if defined NOOP if not exist "%PassTrough%" timeout /t 3 >nul 103 | if defined NOOP if exist "%PassTrough%" start "" "%PassTrough%" %ARG% 104 | if defined NOOP exit /b 105 | set "URL=%CLI:*microsoft-edge=%" 106 | set "URL=http%URL:*http=%" 107 | set "FIX=%URL:~-2%" 108 | if defined URL if "%FIX%"=="``" set "URL=%URL:~0,-2%" 109 | call :dec_url 110 | start "" "%Choice%" "%URL%" 111 | exit 112 | 113 | :reg_var [USAGE] call :reg_var "HKCU\Volatile Environment" value-or-"" variable [extra options] 114 | set {var}=& set {reg}=reg query "%~1" /v %2 /z /se "," /f /e& if %2=="" set {reg}=reg query "%~1" /ve /z /se "," /f /e 115 | for /f "skip=2 tokens=* delims=" %%V in ('%{reg}% %4 %5 %6 %7 %8 %9 2^>nul') do if not defined {var} set "{var}=%%V" 116 | if not defined {var} (set {reg}=& set "%~3="& exit /b) else if %2=="" set "{var}=%{var}:*) =%"& rem AveYo: v3 117 | if not defined {var} (set {reg}=& set "%~3="& exit /b) else set {reg}=& set "%~3=%{var}:*) =%"& set {var}=& exit /b 118 | 119 | :dec_url brute url percent decoding by AveYo 120 | set ".=%URL:!=}%"&setlocal enabledelayedexpansion& rem brute url percent decoding 121 | set ".=!.:%%={!" &set ".=!.:{3A=:!" &set ".=!.:{2F=/!" &set ".=!.:{3F=?!" &set ".=!.:{23=#!" &set ".=!.:{5B=[!" &set ".=!.:{5D=]!" 122 | set ".=!.:{40=@!"&set ".=!.:{21=}!" &set ".=!.:{24=$!" &set ".=!.:{26=&!" &set ".=!.:{27='!" &set ".=!.:{28=(!" &set ".=!.:{29=)!" 123 | set ".=!.:{2A=*!"&set ".=!.:{2B=+!" &set ".=!.:{2C=,!" &set ".=!.:{3B=;!" &set ".=!.:{3D==!" &set ".=!.:{25=%%!"&set ".=!.:{20= !" 124 | set ".=!.:{=%%!" &rem set ",=!.:%%=!" & if "!,!" neq "!.!" endlocal& set "URL=%.:}=!%" & call :dec_url 125 | endlocal& set "URL=%.:}=!%" & exit /b 126 | rem done 127 | :OpenWebSearch_cmd:] 128 | 129 | '@); $0 = "$env:temp\OpenWebSearch.cmd"; ${(=)||} -split "\r?\n" | out-file $0 -encoding default -force; & $0 130 | # press enter 131 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Edge Removal 2023 2 | [Edge_Removal.bat](Edge_Removal.bat) 3 | `$also_remove_webview = 1` 4 | *why also remove webview? because it is 2 copies of edge, not a slimmed down CEF, and is driving bloated web apps* 5 | `$also_remove_widgets = 1` 6 | *why also remove widgets? because it is a webview glorified ad portal on msn and bing news cathering to stupid people* 7 | `$also_remove_xsocial = 1` 8 | *why also remove xsocial? because it starts webview setup every boot - xbox gamebar still works without the social crap* 9 | 10 | after removal can enter into console: `firefox` to quickly install it, or `edge` / `webview` / `xsocial` to reinstall them 11 | *there's some soft-blocking involved in the latest version, so if you want to reinstall edge / webview, do it via above cmds* 12 | hybrid script, can just copy-paste into powershell 13 | already includes OpenWebSearch 14 | 15 | --- 16 | 17 | ### OpenWebSearch 2023 - redirect microsoft-edge: urls to your default browser 18 | [OpenWebSearch.cmd](OpenWebSearch.cmd) 19 | **since v4 works even with Edge fully uninstalled!** 20 | _if Edge is already removed, install Edge Stable, then remove it via Edge_Removal.bat (to preserve a small stub)_ 21 | 2023.09.13: *~one year since last update (it's that stable), add even more resilience to feature updates / upgrades, 22 | using a task to restore the needed hard-link if edge got reinstalled by windows and it does not open anymore* 23 | supports command line parameters: `install` or `remove` 24 | since v6 generate a pure batch script to prevent lame AVs false-positives 25 | hybrid script, can just copy-paste into powershell 26 | yes, a rebranded ChrEdgeFkOff 27 | 28 | --- 29 | 30 | ### NATURAL SMOOTH SCROLLING V4 "SHARP" - AveYo, 2020-2022 31 | _probably the best smooth scrolling preset for mousewheel_ 32 | 33 | copy into firefox / librewolf profile as [user.js](Natural%20Smooth%20Scrolling%20for%20user.js), add to your existing user.js, or set in about:config 34 | 35 | --- 36 | 37 | ### UserChrome.js stand-alone snippet loader by AveYo 38 | featured snippets (**Addressbar** = _Open input as URL on Enter - press Tab to Search instead_ & **OneClickSearch**) 39 | also available for other popular js loaders in the [chrome/JS folder](https://github.com/AveYo/fox/tree/main/chrome/JS) 40 | 41 | #### ELI5 request: sorry, [age restricted](https://www.reddit.com/r/firefox/comments/ls0ffy/oneoffsrefresh_redux_single_click_search_icons_in/gotqkg5/) 42 | 43 | 1. in firefox, open **about:support** and take note of _Application Binary_ 44 | - for example: `C:\Program Files\Mozilla Firefox\firefox.exe` 45 | 46 | 2. open a Command Prompt (Admin) or Windows PowerShell (Admin) window 47 | - *press Win+X on windows 10* 48 | - write `notepad` and press Enter 49 | - the following steps are done in the Notepad window that just opened 50 | 51 | 3. File - New 52 | - [copy-paste the UserChrome.js content](UserChrome.js) 53 | 54 | 4. File - Save As `C:\Program Files\Mozilla Firefox\UserChrome.js` 55 | - browse in the dialog to the path noted at step 1 56 | - write at File name: _UserChrome.js_ 57 | - select Save as type: _All Files_ 58 | - select Encoding: _ANSI_ or _UTF-8_ 59 | 60 | 5. File - New 61 | - [copy-paste the defaults/pref/enable-UserChrome.js content](defaults/pref/enable-UserChrome.js) 62 | 63 | 6. File - Save As `C:\Program Files\Mozilla Firefox\defaults\pref\enable-UserChrome.js` 64 | - browse in the dialog to the path noted at step 1, and further to **defaults** **/** **pref** subfolder 65 | - write at File name: _enable-UserChrome.js_ 66 | - select Save as type: _All Files_ 67 | - select Encoding: _ANSI_ or _UTF-8_ 68 | 69 | _steps for linux and macOS are similar, using Terminal and sudo nano/gedit/TextEdit_ 70 | 71 | For MacOS the file paths are `/Applications/Firefox.app/Contents/Resources/UserChrome.js` 72 | and `/Applications/Firefox.app/Contents/Resources/defaults/pref/enable-UserChrome.js` [ref](https://github.com/mozilla/policy-templates/blob/master/README.md) 73 | -------------------------------------------------------------------------------- /UserChrome.js: -------------------------------------------------------------------------------- 1 | /// Create in Firefox-Install-Directory/UserChrome.js - a minimal bootstrap to run js snippets on startup - AveYo, 2023.09.14 2 | /// Requires: Firefox-Install-Directory/defaults/pref/enable-UserChrome.js 3 | 4 | let { classes: Cc, interfaces: Ci, manager: Cm, utils: Cu } = Components; 5 | const { XPCOMUtils } = Components.utils.import('resource://gre/modules/XPCOMUtils.jsm'); 6 | const Services = globalThis.Services || Components.utils.import("resource://gre/modules/Services.jsm").Services; 7 | let xP = Services.prefs, xD = xP.getDefaultBranch(null), xZ = void 0, xS = 'string', xN = 'number', xB = 'boolean', xPref = { 8 | get:function(e,t=!1,r,n=!0){var s=t?xD:xP;try{var o=s.getPrefType(e);return 0==o?null!=r?this.set(e,r,n):xZ: 9 | 32==o?s.getStringPref(e):64==o?s.getIntPref(e):128==o?s.getBoolPref(e):xZ}catch(P){return}}, clear:xP.clearUserPref, old:{}, 10 | set:function(e,t,r=!1){let n=r?xD:xP,s=typeof t;return(xS==s?n.setStringPref:xN==s?n.setIntPref:xB==s?n.setBoolPref:xZ)(e,t)||t}, 11 | lock:function(e,t){this.old[e]=this.get(e,!0),xP.prefIsLocked(e)&&xP.unlockPref(e),this.set(e,t,!0),xP.lockPref(e)}, 12 | unlock:function(e){xP.unlockPref(e);let t=this.old[e];null==t?xP.deleteBranch(e):this.set(e,t,!0)}, 13 | addListener:function(e,t){return this.o=function(e,r,n){return t(xPref.get(n),n)},xP.addObserver(e,this.o),{p:e,o:this.o}}, 14 | removeListener:function(e){xP.removeObserver(e.p,e.o)} }; /// uncomment to use minified xPref.jsm 15 | function UserChromeJS() { Services.obs.addObserver(this, 'chrome-document-global-created', false); } ; UserChromeJS.prototype = { 16 | observe:function(s) {s.addEventListener('DOMContentLoaded', this, {once:true});}, handleEvent: async function(evt) { 17 | let browser = evt.originalTarget, document = browser, window = browser.defaultView, console = window.console; 18 | if (window.gBrowserInit && !window.gBrowserInit.delayedStartupFinished) { await window.delayedStartupPromise; } 19 | if (!window.gBrowserInit || !window.docShell) { /* console.info(window.location.href); */ return; } 20 | /******************************************* PLACE UC SNIPPETS BELOW THIS LINE! *******************************************/ 21 | 22 | // ==UserScript== 23 | // @name OneClickSearch redux v3 24 | // @author AveYo 25 | // @description Search when clicking the engines icons + navigate to their homepage if no input 26 | // @include main 27 | // @onlyonce 28 | // ==/UserScript== 29 | 30 | if (typeof UC === 'undefined') UC = {}; 31 | 32 | UC.OneClickSearch = { 33 | init: function() { 34 | XPCOMUtils.defineLazyModuleGetters(this, { 35 | UrlbarSearchOneOffs: "resource:///modules/UrlbarSearchOneOffs.jsm", 36 | UrlbarUtils: "resource:///modules/UrlbarUtils.jsm", 37 | }); 38 | this.UrlbarSearchOneOffs.prototype.handleSearchCommand = function (event, searchMode) { 39 | let button = this.selectedButton; 40 | if (button == this.view.oneOffSearchButtons.settingsButtonCompact) { 41 | this.input.controller.engagementEvent.discard(); this.selectedButton.doCommand(); return; 42 | } 43 | let engine = Services.search.getEngineByName(searchMode.engineName); let { where, params } = this._whereToOpen(event); 44 | if (engine && !event.shiftKey) { 45 | this.input.handleNavigation({ 46 | event, oneOffParams: { openWhere: where, openParams: params, engine: this.selectedButton.engine, }, 47 | }); 48 | this.selectedButton = null; return; 49 | } 50 | let startQueryParams = {allowAutofill: !searchMode.engineName && searchMode.source != UrlbarUtils.RESULT_SOURCE.SEARCH, event, }; 51 | this.input.searchMode = searchMode; this.input.startQuery(startQueryParams); this.selectedButton = button; 52 | }; 53 | console.info('\u2713 OneClickSearch redux v3'); 54 | } 55 | }; 56 | 57 | UC.OneClickSearch.init(); 58 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 59 | 60 | // ==UserScript== 61 | // @name Addressbar redux v5 62 | // @author AveYo 63 | // @description Navigate to input on Enter (if having dot, not having space) - press Tab to Search instead (quotes URLs) 64 | // @include main 65 | // @onlyonce 66 | // ==/UserScript== 67 | 68 | if (typeof UC === 'undefined') UC = {}; 69 | 70 | UC.Addressbar = { 71 | init: function() { 72 | const lazy = {}; 73 | XPCOMUtils.defineLazyModuleGetters(lazy, { 74 | UrlbarView: "resource:///modules/UrlbarView.jsm", 75 | UrlbarInput: "resource:///modules/UrlbarInput.jsm", 76 | UrlbarUtils: "resource:///modules/UrlbarUtils.jsm", 77 | UrlbarSearchUtils: "resource:///modules/UrlbarSearchUtils.jsm", 78 | }); 79 | 80 | lazy.UrlbarInput.prototype._toggleActionOverride_uc = lazy.UrlbarInput.prototype._toggleActionOverride; 81 | lazy.UrlbarInput.prototype._toggleActionOverride = function (event = null) { 82 | if (event.repeat) { return; } 83 | if (event.keyCode == event.DOM_VK_TAB && event.type == "keydown" && this.view.selectedElementIndex == 0) { 84 | event.preventDefault(); event.stopImmediatePropagation(); //lazy.UrlbarInput.clearSelection(); 85 | let res = this.view.getResultFromElement(this.view.selectedElement); let payload = res?.payload; 86 | let url = res?.autofill?.value ?? payload?.suggestion ?? payload?.keyword ?? payload?.query ?? payload?.url ?? this.value; 87 | if (!/\s/.test(url) && /\.[a-z]+/.test(url)) url = '"' + url.replace(/^https?:\/\/(www\.)?/,'').replace(/\/$/,'') + '"'; 88 | this._loadURL(url, event, this._whereToOpen(event), {}, {source:res.source, type:res.type, searchTerm:url,}, this.browser); 89 | return; 90 | } 91 | } 92 | 93 | lazy.UrlbarInput.prototype.handleCommand = function (event = null) { 94 | let res = this.view.getResultFromElement(this.view.selectedElement); let payload = res?.payload; 95 | let url = res?.autofill?.value ?? payload?.suggestion ?? payload?.keyword ?? payload?.query ?? payload?.url ?? this.value; 96 | console.error(url); 97 | let btn = this.view.oneOffSearchButtons.selectedButton; 98 | if (res && res?.payload.keyword) { 99 | this.pickResult(res, event); 100 | } 101 | else if (btn && (event instanceof this.window.MouseEvent === false || event.target == btn)) { 102 | this.view.oneOffSearchButtons.handleSearchCommand( 103 | event, {engineName: btn.engine?.name, source: btn.source, entry: "oneoff"} 104 | ); 105 | } 106 | else if (this.searchMode) { this.handleNavigation({event}); } 107 | else if (url && (/\s/.test(url) || !/\.[a-z]+/.test(url))) { 108 | this.handleNavigation({event}); 109 | } 110 | else if (url && !/\s/.test(url) && /\.[a-z]+/.test(url)) { 111 | let flags = Ci.nsIURIFixup.FIXUP_FLAG_FIX_SCHEME_TYPOS; 112 | if (this.isPrivate) {flags |= Ci.nsIURIFixup.FIXUP_FLAG_PRIVATE_CONTEXT;} 113 | let {preferredURI: uri, postData} = Services.uriFixup.getFixupURIInfo(url, flags); 114 | this._loadURL(uri.spec, event, this._whereToOpen(event), {}); 115 | } 116 | }; 117 | console.info('\u2713 Addressbar redux v5'); 118 | } 119 | }; 120 | 121 | UC.Addressbar.init(); 122 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 123 | 124 | // ==UserScript== 125 | // @name SimpleHotkeysOverride v2 126 | // @author AveYo 127 | // @description see Firefox-Install-Directory/browser/omni.ja/chrome/browser/content/browser/browser.xhtml - 'mainKeyset' 128 | // @include main 129 | // @onlyonce 130 | // ==/UserScript== 131 | 132 | if (typeof UC === 'undefined') UC = {}; 133 | 134 | UC.SimpleHotkeysOverride = { 135 | init: function() { 136 | let hotkeys = function (id, modifiers, key, cmd, oncmd) { 137 | const k = window.document.createXULElement("key"); k.id = id; 138 | if (!key.startsWith("VK_")) {k.setAttribute("key", key);} else {k.setAttribute("keycode", key); k.setAttribute("event", "keydown");} 139 | k.setAttribute("modifiers", modifiers); if (cmd) k.setAttribute("command", cmd); if (oncmd) k.setAttribute("oncommand", oncmd); 140 | window.document.getElementById("mainKeyset").appendChild(k); 141 | }; 142 | // Example 1: Ctrl+Shift+B for Library (set either command or oncommand like in browser.xhtml - here, command set, oncommand empty) 143 | hotkeys("hot_library", "accel,shift", "VK_B", "Browser:ShowAllBookmarks", ""); 144 | // Example 2: B to toggle Bookmarks toolbar (set either command or oncommand like in browser.xhtml - here, command empty, oncommand set) 145 | hotkeys("hot_bookmtb", "", "B", "", "BookmarkingUI.toggleBookmarksToolbar('shortcut');"); 146 | // Example 3: Ctrl+Alt+Q instead of Ctrl+Shift+Q to prevent accidental quit 147 | let key_quit = document.getElementById("key_quitApplication"); if (key_quit) key_quit.setAttribute("modifiers", "accel,alt"); 148 | // Example 4: remove quit application built-in shortcut 149 | let key_quit_rem = document.getElementById("key_quitApplication"); if (key_quit_rem) key_quit.remove(); 150 | console.info('\u2713 SimpleHotkeysOverride v2'); 151 | } 152 | }; 153 | 154 | //UC.SimpleHotkeysOverride.init(); 155 | ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 156 | 157 | /******************************************* PLACE UC SNIPPETS ABOVE THIS LINE! *******************************************/ 158 | } }; if (!Services.appinfo.inSafeMode) new UserChromeJS(); 159 | /// ^,^ 160 | -------------------------------------------------------------------------------- /chrome/JS/Addressbar.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Addressbar redux v5 3 | // @author AveYo 4 | // @description Navigate to input on Enter (if having dot, not having space) - press Tab to Search instead (quotes URLs) 5 | // @include main 6 | // @onlyonce 7 | // ==/UserScript== 8 | 9 | if (typeof UC === 'undefined') UC = {}; 10 | 11 | UC.Addressbar = { 12 | init: function() { 13 | const lazy = {}; 14 | XPCOMUtils.defineLazyModuleGetters(lazy, { 15 | UrlbarView: "resource:///modules/UrlbarView.jsm", 16 | UrlbarInput: "resource:///modules/UrlbarInput.jsm", 17 | UrlbarUtils: "resource:///modules/UrlbarUtils.jsm", 18 | UrlbarSearchUtils: "resource:///modules/UrlbarSearchUtils.jsm", 19 | }); 20 | 21 | lazy.UrlbarInput.prototype._toggleActionOverride_uc = lazy.UrlbarInput.prototype._toggleActionOverride; 22 | lazy.UrlbarInput.prototype._toggleActionOverride = function (event = null) { 23 | if (event.repeat) { return; } 24 | if (event.keyCode == event.DOM_VK_TAB && event.type == "keydown" && this.view.selectedElementIndex == 0) { 25 | event.preventDefault(); event.stopImmediatePropagation(); //lazy.UrlbarInput.clearSelection(); 26 | let res = this.view.getResultFromElement(this.view.selectedElement); let payload = res?.payload; 27 | let url = res?.autofill?.value ?? payload?.suggestion ?? payload?.keyword ?? payload?.query ?? payload?.url ?? this.value; 28 | if (!/\s/.test(url) && /\.[a-z]+/.test(url)) url = '"' + url.replace(/^https?:\/\/(www\.)?/,'').replace(/\/$/,'') + '"'; 29 | this._loadURL(url, event, this._whereToOpen(event), {}, {source:res.source, type:res.type, searchTerm:url,}, this.browser); 30 | return; 31 | } 32 | } 33 | 34 | lazy.UrlbarInput.prototype.handleCommand = function (event = null) { 35 | let res = this.view.getResultFromElement(this.view.selectedElement); let payload = res?.payload; 36 | let url = res?.autofill?.value ?? payload?.suggestion ?? payload?.keyword ?? payload?.query ?? payload?.url ?? this.value; 37 | console.error(url); 38 | let btn = this.view.oneOffSearchButtons.selectedButton; 39 | if (res && res?.payload.keyword) { 40 | this.pickResult(res, event); 41 | } 42 | else if (btn && (event instanceof this.window.MouseEvent === false || event.target == btn)) { 43 | this.view.oneOffSearchButtons.handleSearchCommand( 44 | event, {engineName: btn.engine?.name, source: btn.source, entry: "oneoff"} 45 | ); 46 | } 47 | else if (this.searchMode) { this.handleNavigation({event}); } 48 | else if (url && (/\s/.test(url) || !/\.[a-z]+/.test(url))) { 49 | this.handleNavigation({event}); 50 | } 51 | else if (url && !/\s/.test(url) && /\.[a-z]+/.test(url)) { 52 | let flags = Ci.nsIURIFixup.FIXUP_FLAG_FIX_SCHEME_TYPOS; 53 | if (this.isPrivate) {flags |= Ci.nsIURIFixup.FIXUP_FLAG_PRIVATE_CONTEXT;} 54 | let {preferredURI: uri, postData} = Services.uriFixup.getFixupURIInfo(url, flags); 55 | this._loadURL(uri.spec, event, this._whereToOpen(event), {}); 56 | } 57 | }; 58 | console.info('\u2713 Addressbar redux v5'); 59 | } 60 | }; 61 | 62 | UC.Addressbar.init(); 63 | -------------------------------------------------------------------------------- /chrome/JS/OneClickSearch.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name OneClickSearch redux v3 3 | // @author AveYo 4 | // @description see resource:///modules/UrlbarSearchOneOffs.jsm 5 | // @include main 6 | // @onlyonce 7 | // ==/UserScript== 8 | 9 | if (typeof UC === 'undefined') UC = {}; 10 | 11 | UC.OneClickSearch = { 12 | init: function() { 13 | XPCOMUtils.defineLazyModuleGetters(this, { 14 | UrlbarSearchOneOffs: "resource:///modules/UrlbarSearchOneOffs.jsm", 15 | UrlbarUtils: "resource:///modules/UrlbarUtils.jsm", 16 | }); 17 | this.UrlbarSearchOneOffs.prototype.handleSearchCommand = function (event, searchMode) { 18 | let button = this.selectedButton; 19 | if (button == this.view.oneOffSearchButtons.settingsButtonCompact) { 20 | this.input.controller.engagementEvent.discard(); this.selectedButton.doCommand(); return; 21 | } 22 | let engine = Services.search.getEngineByName(searchMode.engineName); let { where, params } = this._whereToOpen(event); 23 | if (engine && !event.shiftKey) { 24 | this.input.handleNavigation({ 25 | event, oneOffParams: { openWhere: where, openParams: params, engine: this.selectedButton.engine, }, 26 | }); 27 | this.selectedButton = null; return; 28 | } 29 | let startQueryParams = {allowAutofill: !searchMode.engineName && searchMode.source != UrlbarUtils.RESULT_SOURCE.SEARCH, event, }; 30 | this.input.searchMode = searchMode; this.input.startQuery(startQueryParams); this.selectedButton = button; 31 | }; 32 | console.info('\u2713 OneClickSearch'); 33 | } 34 | }; 35 | UC.OneClickSearch.init(); 36 | -------------------------------------------------------------------------------- /chrome/JS/SimpleHotkeysOverride.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name SimpleHotkeysOverride v2 3 | // @author AveYo 4 | // @description see Firefox-Install-Directory/browser/omni.ja/chrome/browser/content/browser/browser.xhtml - 'mainKeyset' 5 | // @include main 6 | // @onlyonce 7 | // ==/UserScript== 8 | 9 | if (typeof UC === 'undefined') UC = {}; 10 | 11 | UC.SimpleHotkeysOverride = { 12 | init: function() { 13 | let hotkeys = function (id, modifiers, key, cmd, oncmd) { 14 | const k = window.document.createXULElement("key"); k.id = id; 15 | if (!key.startsWith("VK_")) {k.setAttribute("key", key);} else {k.setAttribute("keycode", key); k.setAttribute("event", "keydown");} 16 | k.setAttribute("modifiers", modifiers); if (cmd) k.setAttribute("command", cmd); if (oncmd) k.setAttribute("oncommand", oncmd); 17 | window.document.getElementById("mainKeyset").appendChild(k); 18 | }; 19 | // Example 1: Ctrl+Shift+B for Library (set either command or oncommand like in browser.xhtml - here, command set, oncommand empty) 20 | hotkeys("hot_library", "accel,shift", "VK_B", "Browser:ShowAllBookmarks", ""); 21 | // Example 2: B to toggle Bookmarks toolbar (set either command or oncommand like in browser.xhtml - here, command empty, oncommand set) 22 | hotkeys("hot_bookmtb", "", "B", "", "BookmarkingUI.toggleBookmarksToolbar('shortcut');"); 23 | // Example 3: Ctrl+Alt+Q instead of Ctrl+Shift+Q to prevent accidental quit 24 | let key_quit = document.getElementById("key_quitApplication"); if (key_quit) key_quit.setAttribute("modifiers", "accel,alt"); 25 | // Example 4: remove quit application built-in shortcut 26 | let key_quit_rem = document.getElementById("key_quitApplication"); if (key_quit_rem) key_quit.remove(); 27 | console.info('\u2713 SimpleHotkeysOverride'); 28 | } 29 | }; 30 | 31 | UC.SimpleHotkeysOverride.init(); 32 | -------------------------------------------------------------------------------- /chrome/JS/UrlFixUp.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name UrlFixUp redux v3 3 | // @author AveYo 4 | // @description ctrl+enter: .com ; shift+enter: .net ; ctrl+shift+enter: .org ctrl+alt+enter: browser.fixup.alternate.suffix 5 | // @reference see resource:///modules/UrlbarInput.jsm 6 | // @include main 7 | // @onlyonce 8 | // ==/UserScript== 9 | 10 | if (typeof UC === 'undefined') UC = {}; 11 | 12 | UC.UrlFixUp = { 13 | init: function() { 14 | XPCOMUtils.defineLazyModuleGetters(this, { 15 | UrlbarInput: "resource:///modules/UrlbarInput.jsm", 16 | }); 17 | 18 | this.UrlbarInput.prototype.handleCommand = function (event = null) { 19 | if ((!event.ctrlKey && !event.shiftKey) || this.view.oneOffSearchButtons.selectedButton || this.searchMode) { 20 | let isMouseEvent = event instanceof this.window.MouseEvent; if (isMouseEvent && event.button == 2) { return; } 21 | if (this.view.isOpen) { 22 | let selectedOneOff = this.view.oneOffSearchButtons.selectedButton; 23 | if (selectedOneOff && (!isMouseEvent || event.target == selectedOneOff)) { 24 | let searchMode = {engineName: selectedOneOff.engine?.name, source: selectedOneOff.source, entry: "oneoff"} 25 | this.view.oneOffSearchButtons.handleSearchCommand(event, searchMode); return; 26 | } 27 | } 28 | this.handleNavigation({ event }); return; 29 | } 30 | if (this.value) { 31 | let ext = '\.(org|com|net|'; let suffix = Services.prefs.getCharPref("browser.fixup.alternate.suffix"); 32 | if (/[a-zA-Z]+/.test(suffix)) { ext += suffix.replace('.', '') + ')[/]*$' } else { ext += ')[/]*$'; suffix = '' } 33 | let regex = new RegExp(ext, ''); let url = this.untrimmedValue.trim().replace(regex, ''); 34 | if (event.ctrlKey && event.altKey) { url += suffix } else if (event.ctrlKey && event.shiftKey) { url += '.org' } 35 | else if (event.ctrlKey) { url += '.com' } else if (event.shiftKey) { url += '.net' } 36 | this.view.close(); this.value = url; 37 | //this._loadURL(url, event, 'current', {}); // uncomment to load url fixup directly 38 | } 39 | }; 40 | console.info('\u2713 UrlFixUp'); 41 | } 42 | }; 43 | 44 | UC.UrlFixUp.init(); 45 | -------------------------------------------------------------------------------- /chrome/userChrome.css: -------------------------------------------------------------------------------- 1 | /***** file location: Firefox-User-Profile-Folder/chrome/userChrome.css *****/ 2 | /***** enable loading in about:config with toolkit.legacyUserProfileCustomizations.stylesheets = true *****/ 3 | @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 4 | @namespace html url("http://www.w3.org/1999/xhtml"); 5 | 6 | /***** Neat theme-aware context menus by AveYo - check it out with AlpenGlow or FoxyGlow *****/ 7 | :root { --fixup1: -moz-DialogText; --fixup2: -moz-Dialog; } 8 | @media not all and (prefers-color-scheme: light) { 9 | :root { --fixup1: -moz-DialogText; --fixup2: -moz-Dialog; } 10 | } 11 | @media (-moz-windows-default-theme: 1) and (prefers-color-scheme: dark) { 12 | :root { --fixup1: -moz-menuhovertext; --fixup2: -moz-menuhover; } 13 | } 14 | 15 | #context-sep-navigation { display:none !important; } 16 | #context-navigation { -moz-appearance: none !important; background-color: transparent !important; } 17 | menu,menuitem,.subviewbutton { -moz-appearance: none !important; } 18 | 19 | /* scrollbox:not([orient="horizontal"]) */ 20 | menupopup:not(.PanelUI-subView) { 21 | -moz-appearance: none !important; 22 | background-color: var(--lwt-sidebar-background-color, var(--autocomplete-popup-background, var(--fixup2))) !important; 23 | color: var(--lwt-sidebar-text-color, var(--autocomplete-popup-color, var(--fixup1))) !important; 24 | padding: 0 !important; 25 | } 26 | 27 | :-moz-any(#context-navigation > *, menu, menuitem):is([_moz-menuactive]), 28 | .subviewbutton:is(:focus-visible,:hover), 29 | treechildren::-moz-tree-row(hover), treechildren::-moz-tree-cell-text(hover) { 30 | -moz-appearance: none !important; 31 | background-color: var(--lwt-sidebar-highlight-background-color, var(--toolbar-field-focus-border-color, -moz-menuhover)) !important; 32 | color: var(--lwt-sidebar-text-color, var(--autocomplete-popup-highlight-color, -moz-Dialog)) !important; 33 | } 34 | 35 | :-moz-any(#context-navigation > *, menu, menuitem):is([_moz-menuactive][disabled]), 36 | .subviewbutton:is(:focus-visible,:hover):is([disabled]) { 37 | background-color: unset !important; 38 | color: #ccc !important; 39 | } 40 | -------------------------------------------------------------------------------- /defaults/pref/enable-UserChrome.js: -------------------------------------------------------------------------------- 1 | /// create in Firefox-Install-Directory/defaults/pref/enable-UserChrome.js 2 | /// to enable advanced javascript access from Firefox-Install-Directory/UserChrome.js 3 | pref("general.config.filename", "UserChrome.js"); pref("general.config.obscure_value", 0); pref("general.config.sandbox_enabled", false); 4 | -------------------------------------------------------------------------------- /simple_minimize_windows_on_start_up-1-fx.xpi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AveYo/fox/eab2269a598ad9e8120cf1d598d48384071ff476/simple_minimize_windows_on_start_up-1-fx.xpi -------------------------------------------------------------------------------- /tweaked firefox prefs 2021.02.09 user.js: -------------------------------------------------------------------------------- 1 | /// user.js tweaked preferences for Firefox by AveYo 2 | /// place in your profile root directory (see about:profiles) & run prefsCleaner from github /arkenfox/user.js 3 | /// must-have addons: uBlock Origin, LOCALCDN, ClearURLs, Never-Consent 4 | /// must-have search: searx.space - opensource aggregator with multiple instances 5 | /// changes: relaxed cross-origin to fix iframes like codepen, fix microsoft.catalog, fix whiteflash on about:blank, html5 fullscr min fading 6 | /// 2021.02.09: focus on safety, speed and reduced annoyances - introducing Natural Smooth Scrolling, not stuttering when scrolling slowly 7 | 8 | //// NATURAL SMOOTH SCROLLING preset info [default] 9 | user_pref("mousewheel.acceleration.factor", 5); // NSS 5 ACCEL MAX SPEED 1-20 [10] 10 | user_pref("mousewheel.acceleration.start", 4); // NSS 4 accel after x ticks [-1] 11 | user_pref("mousewheel.default.delta_multiplier_x", 100); // NSS 100 reset previous [100] 12 | user_pref("mousewheel.default.delta_multiplier_y", 100); // NSS 100 reset previous [100] 13 | user_pref("mousewheel.default.delta_multiplier_z", 100); // NSS 100 reset previous [100] 14 | user_pref("mousewheel.system_scroll_override_on_root_content.enabled", false); // NSS false ignoring sys accel [true] 15 | user_pref("mousewheel.transaction.timeout", 1500); // NSS 1500 reset previous [1500] 16 | user_pref("mousewheel.min_line_scroll_amount", 0); // NSS 0 lines vary with accel [5] 17 | user_pref("toolkit.scrollbox.horizontalScrollDistance", 3); // NSS 3 keyboard matches mwheel [5] 18 | user_pref("toolkit.scrollbox.verticalScrollDistance", 3); // NSS 3 keyboard matches mwheel [3] 19 | user_pref("layers.async-pan-zoom.enabled", true); // NSS true smoothness boost [true] 20 | user_pref("apz.force_disable_desktop_zooming_scrollbars", true); // NSS true keyboard fix I [false] 21 | user_pref("apz.paint_skipping.enabled", false); // NSS false keyboard fix II v85 [true] 22 | user_pref("dom.event.wheel-deltaMode-lines.always-disabled", true); // NSS true report wheel in pixels [false] 23 | user_pref("layout.css.scroll-behavior.spring-constant", "300.0"); // NSS "300" css mimics gecko scroll [250] 24 | user_pref("general.smoothScroll.mouseWheel.migrationPercent", 100); // NSS 100 lame pref wreks settings [100] 25 | user_pref("general.smoothScroll.msdPhysics.enabled", false); // NSS false no stutering fling [false] 26 | user_pref("general.smoothScroll.currentVelocityWeighting", "0.0"); // NSS "0.0" reduce stutter [0.25] 27 | user_pref("general.smoothScroll.durationToIntervalRatio", 400); // NSS 400 reduce stutter [200] 28 | user_pref("general.smoothScroll.stopDecelerationWeighting", "0.0"); // NSS "0.0" reduce stutter [0.4] 29 | user_pref("general.smoothScroll.lines.durationMaxMS", 300); // NSS 300 arrows smoothing [150] 30 | user_pref("general.smoothScroll.lines.durationMinMS", 300); // NSS 300 arrows smoothing [150] 31 | user_pref("general.smoothScroll.mouseWheel.durationMaxMS", 300); // NSS 300 mwheel smoothing [200] 32 | user_pref("general.smoothScroll.mouseWheel.durationMinMS", 300); // NSS 300 mwheel smoothing [50] 33 | user_pref("general.smoothScroll.other.durationMaxMS", 150); // NSS 150 home-end smoothing [150] 34 | user_pref("general.smoothScroll.other.durationMinMS", 150); // NSS 150 home-end smoothing [150] 35 | user_pref("general.smoothScroll.pages.durationMaxMS", 200); // NSS 200 pgup-pgdn smoothing [150] 36 | user_pref("general.smoothScroll.pages.durationMinMS", 200); // NSS 200 pgup-pgdn smoothing [150] 37 | user_pref("general.smoothScroll.pixels.durationMaxMS", 300); // NSS 300 pixel smoothing [150] 38 | user_pref("general.smoothScroll.pixels.durationMinMS", 300); // NSS 300 pixel smoothing [150] 39 | user_pref("general.smoothScroll.scrollbars.durationMaxMS", 500); // NSS 500 scrollbar smoothing [150] 40 | user_pref("general.smoothScroll.scrollbars.durationMinMS", 500); // NSS 500 scrollbar smoothing [150] 41 | 42 | 43 | //// GENERAL 44 | //user_pref("browser.altClickSave", true); // / ALT + click save target instead of 3x selects link 45 | user_pref("browser.backspace_action", 0); // o Pressing Backspace does not open previous page [0] 46 | user_pref("browser.bookmarks.editDialog.maxRecentFolders", 12); // x More recent folders in Bookmarks dialog [7] 47 | user_pref("browser.bookmarks.max_backups", 2); // x Bookmarks backup copies reduced [15] 48 | user_pref("browser.bookmarks.openInTabClosesMenu", false); // o Close Bookmarks dialog after open in tab 49 | user_pref("browser.bookmarks.showMobileBookmarks", true); // x Show Mobile Bookmarks folder 50 | user_pref("browser.bookmarks.showRecentlyBookmarked", true); // x Show Recent Bookmarks folder 51 | user_pref("browser.cache.offline.enable", true); // o Offline cache 52 | user_pref("browser.defaultbrowser.notificationbar", false); // o Default browser notification 53 | user_pref("browser.disableResetPrompt", true); // x Prevent Reset Firefox prompt 54 | //user_pref("browser.display.background_color", "#fef9f4"); // / Hardcode default backgrount color 55 | //user_pref("browser.display.foreground_color", "#26262a"); // / Hardcode default text color 56 | user_pref("browser.download.autohideButton", false); // o Hide Downloads button 57 | user_pref("browser.download.folderList", 2); // x Save files to last used folder = 2 / downloads = 1 58 | user_pref("browser.download.hide_plugins_without_extensions", false); // o Allow applications (mime types) without a plugin 59 | user_pref("browser.download.manager.addToRecentDocs", false); // o Adding downloads to os recent documents list 60 | user_pref("browser.link.open_newwindow", 1); // x Open new win link in most recent window or tab [3] 61 | user_pref("browser.link.open_newwindow.override.external", 3); // x Open external links in active window new tab [-1] 62 | user_pref("browser.link.open_newwindow.restriction", 2); // o Divert links = 0 would break microsoft.catalog [2] 63 | user_pref("browser.newtabpage.enabled", true); // x Default New Tab page as empty or enabled 64 | user_pref("browser.pagethumbnails.capturing_disabled", true); // x Page thumbnail collection 65 | //user_pref("browser.region.network.url", ""); // / Clear region updates url 66 | //user_pref("browser.region.update.enabled", false); // / Disable region updates - for localized search etc. 67 | user_pref("browser.search.context.loadInBackground", true); // x Search results open in the background, focus stays 68 | user_pref("browser.sessionstore.cleanup.forget_closed_after", 86400000); // x Forget closed windows/tabs after 24h [1209600000] 69 | user_pref("browser.sessionstore.interval", 1800000); // x Save session to disk every 30m [15000] 70 | user_pref("browser.sessionstore.interval.idle", 3600000); // x Save session to disk when idle every 60m [3600000] 71 | user_pref("browser.sessionstore.max_tabs_undo", 50); // x History - Recently closed tabs count [25] 72 | user_pref("browser.shell.checkDefaultBrowser", false); // o Always check if Firefox is your default browser 73 | user_pref("browser.slowStartup.notificationDisabled", true); // x Slow startup notification 74 | user_pref("browser.slowStartup.maxSamples", 10); // o Slow startup max samples [5] 75 | user_pref("browser.slowStartup.samples", 5); // o Slow startup min samples [2] 76 | //user_pref("browser.startup.homepage", "about:blank"); // / Preset homepage about:home / about:blank / custom 77 | user_pref("browser.startup.homepage.abouthome_cache.enabled", false); // o Cache about:home at startup (can white flash) 78 | user_pref("browser.startup.homepage_override.mstone", "ignore"); // x "Your Firefox is up to date" homepage override 79 | //user_pref("browser.startup.page", 0); // / Startup page Blank = 0 (Home = 1 can white flash) 80 | user_pref("browser.startup.blankWindow", false); // o Show blank window early (if true can white flash) 81 | user_pref("browser.startup.preXulSkeletonUI", false); // o Show skeleton UI early (not needed with above 2) 82 | user_pref("browser.tabs.allowTabDetach", false); // o Tab drag to detach in a new window 83 | user_pref("browser.tabs.closeWindowWithLastTab", false); // o Close window with last tab - annoyance with Ctrl+W 84 | user_pref("browser.tabs.loadDivertedInBackground", true); // x Open external links in background 85 | user_pref("browser.tabs.loadBookmarksInBackground", true); // x Open bookmarks in background (on middle-click) 86 | user_pref("browser.tabs.tabMinWidth", 120); // x Increase minimum tab width [76] 87 | user_pref("browser.tabs.warnOnClose", false); // o Tab close warning 88 | user_pref("browser.tabs.warnOnCloseOtherTabs", false); // o Multiple tabs close warning 89 | user_pref("browser.tabs.warnOnOpen", false); // o Opening multiple tabs slowdown warning 90 | user_pref("browser.taskbar.lists.enabled", false); // o Windows jumplist recent 91 | user_pref("browser.taskbar.lists.frequent.enabled", false); // o Windows jumplist frequent 92 | user_pref("browser.taskbar.lists.tasks.enabled", false); // o Windows jumplist tasks 93 | user_pref("browser.toolbars.bookmarks.showOtherBookmarks", false); // o Other Bookmarks on toolbar - long awaited pref 94 | //user_pref("browser.toolbars.bookmarks.visibility", "always"); // / Show bookmarks toolbar: newtab / always / never 95 | user_pref("browser.urlbar.clickSelectsAll", false); // o Select all url on Click 96 | user_pref("browser.urlbar.ctrlCanonizesURLs", false); // x Ctrl+Enter opens new tab instead of lame canonize 97 | user_pref("browser.urlbar.decodeURLsOnCopy", true); // x Decode urlencoded link on copy 98 | user_pref("browser.urlbar.doubleClickSelectsAll", true); // x Select all url on doubleClick 99 | user_pref("browser.urlbar.formatting.enabled", false); // o Domain highlight that makes full url hard to read 100 | //user_pref("browser.urlbar.switchTabs.adoptIntoActiveWindow", true); // / Search in active tabs pulls tab from all windows 101 | user_pref("browser.urlbar.trimURLs", false); // o Display all parts of the url in the urlbar 102 | user_pref("browser.urlbar.update2.engineAliasRefresh", true); // x Enable Add button in Search engines options 103 | user_pref("browser.xul.error_pages.expert_bad_cert", true); // x Display advanced info on Insecure Connection 104 | //user_pref("browser.zoom.siteSpecific", false); // / Disable remembering zoom per site 105 | //user_pref("dom.confirm_repost.testing.always_accept", true); // / Hide confirm dialog when reloading a POST request 106 | user_pref("dom.disable_beforeunload", true); // x Confirm you want to leave dialog on page close 107 | user_pref("dom.disable_window_move_resize", true); // x Scripts moving and resizing open windows 108 | user_pref("dom.popup_allowed_events", "click dblclick"); // o Limit events causing a popup "click dblclick" 109 | user_pref("dom.user_activation.transient.timeout", 500); // x Reduce activation timeout - Autoplay uses [5000] 110 | user_pref("dom.vibrator.enabled", false); // o Shaking the screen effect 111 | //user_pref("extensions.screenshots.disabled", true); // / Disable Screenshots extension - why, though? 112 | //user_pref("extensions.screenshots.upload-disabled", true); // / Disable Screenshots upload 113 | //user_pref("extensions.webcompat-reporter.enabled", false); // / Disable Web Compatibility Reporter 114 | user_pref("findbar.highlightAll", true); // x Highlight All button selected on Ctrl+F search bar 115 | user_pref("full-screen-api.approval-required", false); // o Full-screen warning disable 116 | //user_pref("full-screen-api.ignore-widgets", true); // / Full-screen toggle does not maximize the window 117 | user_pref("full-screen-api.warning.delay", 0); // o Full-screen warning disable [500] 118 | user_pref("full-screen-api.warning.timeout", 0); // o Full-screen warning disable [3000] 119 | user_pref("full-screen-api.transition-duration.enter", "0 0"); // o Full-screen entering transition off [200 200] 120 | user_pref("full-screen-api.transition-duration.leave", "1 0"); // x Full-screen leaving transition minimum [200 200] 121 | user_pref("full-screen-api.transition.timeout", 1); // o Full-screen HTML5 minimum fade-to-black [1000] 122 | user_pref("image.animation_mode", "once"); // / GIF loop once - improves perf a lot 123 | //user_pref("intl.accept_languages", "en-US, en"); // / Set preferred language for displaying web pages 124 | //user_pref("javascript.use_us_english_locale", true); // / Enforce US English regardless of system locale 125 | user_pref("layout.spellcheckDefault", 2); // x Spellchecker for multi-line controls [1] 126 | user_pref("media.autoplay.blocking_policy", 1); // x Autoplay of HTML5 media policy 1 = new 2 = old [0] 127 | user_pref("media.autoplay.default", 5); // x Autoplay block all by default [1] 128 | user_pref("mousewheel.with_shift.action", 4); // x Scroll horizontally on Shift+Mousewheel [4] 129 | user_pref("media.memory_cache_max_size", 65536); // x Increase media memory cache [8192] 130 | user_pref("nglayout.enable_drag_images", false); // o Tab drag without preview 131 | user_pref("toolkit.winRegisterApplicationRestart", false); // o Automatic reopen and session restore after reboot 132 | //user_pref("ui.prefersReducedMotion", 1); // / Reduce UI animations [0] 133 | //user_pref("ui.key.menuAccessKey", 0); // / Alt key does not toggle the menu bar 134 | //user_pref("ui.systemUsesDarkTheme", 1); // / Fake system dark theme 135 | 136 | //// PRIVACY 137 | user_pref("browser.contentblocking.category", "custom"); // x Enhanced Tracking Protection: custom 138 | //user_pref("browser.formfill.enable", false); // / Search and form history 139 | user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); // x Media cache writing to disk in Private Browsing 140 | user_pref("dom.push.connection.enabled", false); // o Push Notifications - make connections 141 | //user_pref("dom.push.enabled", false); // / Push Notifications - needs service workers 142 | //user_pref("dom.serviceWorkers.enabled", false); // x Disable Service workers - unloaded sites listening 143 | //user_pref("dom.webnotifications.enabled", false); // / Web Notifications 144 | //user_pref("dom.webnotifications.serviceworker.enabled", false); // / Web Notifications via service workers 145 | user_pref("extensions.formautofill.heuristics.enabled", false); // o Form Autofill learning 146 | //user_pref("extensions.formautofill.creditCards.enabled", false); // / Form Autofill credit cards 147 | //user_pref("extensions.formautofill.addresses.enabled", false); // / Form Autofill addresses 148 | //user_pref("extensions.formautofill.available", "off"); // / Form Autofill master toggle 149 | //user_pref("gfx.font_rendering.opentype_svg.enabled", false); // / Rendering SVG OpenType fonts 150 | user_pref("layout.css.font-visibility.level", 2); // x Expose only system fonts OR Resist Fingerprinting 151 | //user_pref("media.eme.enabled", false); // / Encryption Media Extension for DRM (Netflix etc) 152 | //user_pref("media.gmp-gmpopenh264.autoupdate", false); // / Cisco h264 decoder updating 153 | //user_pref("media.gmp-widevinecdm.autoupdate", false); // / Google widevine decryption for DRM (Netflix etc) 154 | //user_pref("media.gmp-widevinecdm.enabled", false); // / Google widevine decryption for DRM (Netflix etc) 155 | //user_pref("media.gmp-widevinecdm.visible", false); // / Google widevine decryption for DRM (Netflix etc) 156 | //user_pref("media.navigator.enabled", false); // / Disable media device enumeration 157 | //user_pref("media.peerconnection.enabled", false); // / Google WebRTC (Web Real-Time Communication) 158 | user_pref("media.peerconnection.ice.default_address_only", false); // o Limit Google WebRTC IP leaks 159 | user_pref("media.peerconnection.ice.no_host", false); // o Limit Google WebRTC IP leaks 160 | user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", false); // o limit Google WebRTC IP leaks 161 | user_pref("network.cookie.cookieBehavior", 3); // x Block Unvisited cookies 3 / Cross-site cookies [4] 162 | //user_pref("network.cookie.lifetimePolicy", 0); // / Cookies and site data delete on close 2 / keep [0] 163 | user_pref("network.cookie.thirdparty.nonsecureSessionOnly", true); // x Third-party cookies current session if nonsecure 164 | user_pref("network.cookie.thirdparty.sessionOnly", false); // o Third-party cookies current session all 165 | user_pref("pref.privacy.disable_button.cookie_exceptions", false); // o Cookies exceptions 166 | user_pref("pref.privacy.disable_button.view_passwords_exceptions", false); // o View passwords exceptions 167 | user_pref("privacy.donottrackheader.enabled", true); // x Send websites a Do Not Track signal 168 | //user_pref("privacy.firstparty.isolate", true); // / First Party Isolation toggle - breaks sites 169 | user_pref("privacy.history.custom", true); // x Remember privacy history choices 170 | //user_pref("privacy.resistFingerprinting", true); // / RFP anti-fingerprint inefficiently - breaks sites 171 | user_pref("privacy.trackingprotection.cryptomining.enabled", false); // o Block Cryptomining OR uBlock Origin 172 | user_pref("privacy.trackingprotection.enabled", false); // o Block Tracking OR uBlock Origin 173 | user_pref("privacy.trackingprotection.fingerprinting.enabled", false); // o Block known fingerprinters OR uBlock Origin 174 | user_pref("privacy.trackingprotection.pbmode.enabled", false); // o Block Tracking in Private browse OR uBlock Origin 175 | user_pref("privacy.userContext.longPressBehaviour", true); // x Long pressing new tab button shows Containers menu 176 | //user_pref("webgl.disabled", true); // / WebGL high entropy, breaks browser games if off 177 | //user_pref("webgl.disable-fail-if-major-performance-caveat", true); // / WebGL do not auto-disable when low on resources 178 | //user_pref("webgl.enable-debug-renderer-info", false); // / WebGL debug info OR CanvasBlocker 179 | //user_pref("webgl.enable-surface-texture", false); // / WebGL texture info OR CanvasBlocker 180 | //user_pref("webgl.enable-webgl2", false); // / WebGL v2 features OR CanvasBlocker 181 | //user_pref("webgl.min_capability_mode", true); // / WebGL limited capability OR CanvasBlocker 182 | 183 | //// SECURITY 184 | user_pref("accessibility.force_disabled", 1); // x External accessibility services interactions [0] 185 | user_pref("browser.fixup.alternate.enabled", false); // o Location urlbar exploitable domain guessing 186 | user_pref("browser.safebrowsing.allowOverride", true); // x SafeBrowsing allows bypassing by user 187 | user_pref("browser.safebrowsing.blockedURIs.enabled", false); // o Block urls via Google rep OR uBlock Origin 188 | user_pref("browser.safebrowsing.downloads.enabled", false); // o Block downloads via Google rep OR uBlock Origin 189 | user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false); // o Block everything unsigned - 90's style dumb system 190 | user_pref("browser.safebrowsing.downloads.remote.enabled", false); // o Dynamic lookup file hashes on Google's rep server 191 | user_pref("browser.safebrowsing.malware.enabled", false); // o Block Malware domains list OR uBlock Origin 192 | user_pref("browser.safebrowsing.phishing.enabled", false); // o Block Phishing domains list OR uBlock Origin 193 | user_pref("browser.launcherProcess.enabled", true); // x Block DLL Injections from antivirus & third-party 194 | user_pref("browser.ssl_override_behavior", 2); // x SSL Add Security Exception pre-populated url [2] 195 | user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0); // o DNS resolve single words after urlbar search [1] 196 | //user_pref("dom.security.https_only_mode", false); // x HTTPS-Only mode 197 | user_pref("network.IDN_show_punycode", true); // x Punycode for Int Domain Names anti-spoofing 198 | user_pref("network.auth.subresource-http-auth-allow", 1); // x Cross-origin sub-resources cant open HTTP auth [2] 199 | user_pref("network.captive-portal-service.enabled", false); // o Captive Portal detection 200 | user_pref("network.connectivity-service.enabled", false); // o Network Connectivity checks 201 | user_pref("network.dns.disableIPv6", true); // x Disable IPv6 202 | user_pref("network.dns.disablePrefetch", true); // x Disable DNS prefetching 203 | user_pref("network.dns.disablePrefetchFromHTTPS", true); // x Disable DNS prefetching from HTTPS 204 | user_pref("network.dns.echconfig.enabled", true); // x Enable Encrypted Client Hello 205 | user_pref("network.http.altsvc.enabled", false); // / Disable HTTP Alternative Services OR enable FPI 206 | user_pref("network.http.altsvc.oe", false); // / Disable HTTP Alternative Services OR enable FPI 207 | user_pref("network.http.http3.enabled", true); // x Enable HTTP3 208 | user_pref("network.http.redirection-limit", 20); // o HTTP redirects (except HTML meta tags or JS) [20] 209 | user_pref("network.http.referer.spoofSource", false); // o Referer spoof - breaks sites 210 | user_pref("network.http.referer.XOriginPolicy", 0); // x Referer cross origin (1 breaks codepen) [0] 211 | user_pref("network.http.referer.XOriginTrimmingPolicy", 1); // x Don't sent full URI cross origin [0] 212 | user_pref("network.http.speculative-parallel-limit", 0); // o Link-mouseover open connection to link server [6] 213 | user_pref("network.manage-offline-status", false); // o Guess whether you are offline 214 | user_pref("network.predictor.enable-prefetch", false); // o Predictor prefetching 215 | user_pref("network.predictor.enabled", false); // o Predicator toggle 216 | user_pref("network.prefetch-next", false); // o Link prefetching 217 | user_pref("network.proxy.socks_remote_dns", true); // x Enforce the proxy server to do any DNS lookups 218 | user_pref("permissions.delegation.enabled", false); // o Permissions delegation 219 | //user_pref("permissions.manager.defaultsUrl", ""); // / Clear extra permissions for mozilla domains - dont 220 | user_pref("security.OCSP.enabled", 1); // x Confirm current validity of certificates on OCSP 221 | user_pref("security.OCSP.require", true); // x Require complete OCSP fetching 222 | user_pref("security.cert_pinning.enforcement_level", 2); // x Strict Public Key Pinning 223 | user_pref("security.dialog_enable_delay", 1000); // x Security delay on dialogs like install, open/save 224 | user_pref("security.disable_button.openCertManager", false); // o Allow override open certificate 225 | //user_pref("security.external_protocol_requires_permission", false); // / v84 per-site confirm open protocol: magnet zoommtg 226 | user_pref("security.family_safety.mode", 0); // x Don't allow MitM by Microsoft Family Safety [2] 227 | user_pref("security.insecure_connection_icon.enabled", true); // x Display "insecure" icon on HTTP sites 228 | user_pref("security.mixed_content.block_object_subrequest", true); // x Block unencrypted object request on encrypted page 229 | user_pref("security.osclientcerts.autoload", true); // x Use client certificates from the operating system 230 | user_pref("security.pki.sha1_enforcement_level", 1); // x SHA-1 certificates deprecated [3] 231 | user_pref("security.ssl.disable_session_identifiers", false); // o Disable SSL session tracking 232 | user_pref("security.ssl.require_safe_negotiation", true); // x Require safe SSL negotiation 233 | user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); // x Display warning on the padlock for broken security 234 | user_pref("security.tls.enable_0rtt_data", false); // o TLS1.3 0-RTT (round-trip time) 235 | user_pref("security.tls.version.enable-deprecated", false); // o Enforce TLS 1.0 and 1.1 downgrades as session only 236 | user_pref("signon.autofillForms", false); // o Auto-filling username & password - OR click box 237 | //user_pref("signon.formlessCapture.enabled", false); // / Formless login capture for Password Manager 238 | //user_pref("signon.generation.enabled", false); // / Suggest and generate strong passwords 239 | //user_pref("signon.management.page.breach-alerts.enabled", false); // / Show alerts about passwords for breached websites 240 | 241 | //// TELEMETRY 242 | user_pref("app.normandy.api_url", ""); // o Normandy (Heartbeat) blank url 243 | user_pref("app.normandy.enabled", false); // o Normandy (Heartbeat) for studies, feature rollouts 244 | user_pref("app.normandy.optoutstudies.enabled", false); // o Normandy (Heartbeat) running experiments 245 | user_pref("app.normandy.user_id", ""); // o cafecafe-cafe-cafe-cafe-cafecafecafe 246 | user_pref("app.shield.optoutstudies.enabled", false); // o Shield extension installing and running studies 247 | user_pref("beacon.enabled", false); // o Sending additional analytics to web servers 248 | user_pref("breakpad.reportURL", ""); // o Crash Reports url 249 | user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // o Auto send backlogged crash reports 250 | user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // o Unsent crash report prompt bar 251 | user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); // o New Tab page remote activity stream telemetry 252 | user_pref("browser.newtabpage.activity-stream.impressionId", ""); // o cafecafe-cafe-cafe-cafe-cafecafecafe 253 | user_pref("browser.newtabpage.activity-stream.telemetry", false); // o New Tab page local activity stream telemetry 254 | user_pref("browser.ping-centre.telemetry", false); // o Telemetry for ping centre system 255 | user_pref("browser.send_pings", false); // o Hyperlink Auditing aka click tracking 256 | user_pref("browser.send_pings.require_same_host", true); // x Hyperlink Auditing aka click tracking hardening 257 | user_pref("browser.tabs.crashReporting.sendReport", false); // o Crash Reports for tabs 258 | user_pref("datareporting.healthreport.service.enabled", false); // o Health reports service 259 | user_pref("datareporting.healthreport.uploadEnabled", false); // o Health report upload to mozilla 260 | user_pref("datareporting.policy.dataSubmissionEnabled", false); // o Data submission uploads master toggle 261 | user_pref("default-browser-agent.enabled", false); // o Default browser agent telemetry 262 | user_pref("dom.about_newtab_sanitization.enabled", true); // x Sanitize remote snippets in New Tab page 263 | user_pref("dom.ipc.plugins.reportCrashURL", false); // o Sending website URL where a plugin crashed 264 | user_pref("dom.security.unexpected_system_load_telemetry_enabled", false); // o System load telemetry 265 | user_pref("messaging-system.rsexperimentloader.enabled", false); // o New feature experiments 266 | user_pref("toolkit.coverage.enabled", false); // o Percent of users adopting feature x estimations 267 | user_pref("toolkit.coverage.opt-out", true); // x Percent of users adopting feature x estimations 268 | user_pref("toolkit.telemetry.archive.enabled", false); // o Allow pings to be archived locally 269 | user_pref("toolkit.telemetry.bhrPing.enabled", false); // o Ping telemetry servers on undocummented bhr event 270 | user_pref("toolkit.telemetry.cachedClientID", ""); // o cafecafe-cafe-cafe-cafe-cafecafecafe 271 | user_pref("toolkit.telemetry.coverage.opt-out", true); // x Percent of users adopting feature x estimations 272 | user_pref("toolkit.telemetry.ecosystemtelemetry.enabled", false); // o Firefox Account only telemetry 273 | user_pref("toolkit.telemetry.enabled", false); // o Telemetry module master toggle 274 | user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // o Ping telemetry servers on first shutdown 275 | user_pref("toolkit.telemetry.geckoview.streaming", false); // o Gecko send Histogram/Scalar to telemetry delegate 276 | user_pref("toolkit.telemetry.newProfilePing.enabled", false); // o Ping servers on the first run of a new profile 277 | user_pref("toolkit.telemetry.pioneer-new-studies-available", false); // o New studies available - lie 278 | user_pref("toolkit.telemetry.prioping.enabled", false); // o Ping servers on content events (tracking blocked) 279 | user_pref("toolkit.telemetry.reportingpolicy.firstRun", false); // o Firefox reporting warning 280 | user_pref("toolkit.telemetry.server", "data:,"); // o Telemetry server forced empty 281 | user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // o Ping servers on browser shuts down, second session 282 | user_pref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false); // o Ping servers on browser shuts down, first session 283 | user_pref("toolkit.telemetry.unified", false); // o Unified telemetry behavior 284 | user_pref("toolkit.telemetry.updatePing.enabled", false); // o Ping servers on browser updates - opt-out 285 | user_pref("security.ssl.errorReporting.enabled", false); // o SSL Error Reporting 286 | user_pref("security.ssl.errorReporting.url", ""); // o SSL Error Reporting url 287 | user_pref("services.sync.telemetry.maxPayloadCount", 1); // x Ping servers on account sync with 1 entry [500] 288 | user_pref("toolkit.telemetry.eventping.minimumFrequency", 6000); // x Ping servers on events min frequency [60] 289 | user_pref("toolkit.telemetry.eventping.maximumFrequency", 6001); // x Ping servers on events max frequency [10] 290 | 291 | //// SPONSORED 292 | user_pref("browser.discovery.enabled", false); // o Personalized recommendations 293 | user_pref("browser.library.activity-stream.enabled", false); // o Library recent Highlights 294 | user_pref("browser.laterrun.enabled", false); // o Show welcome and onboarding later after install 295 | user_pref("browser.messaging-system.whatsNewPanel.enabled", false); // o What's new panel 296 | user_pref("browser.newtabpage.introShown", true); // x New Tab welcome 297 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.cfr", "{\"id\":\"cfr\",\"enabled\":false}"); // o Mozilla servers 298 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.cfr-fxa", "{\"id\":\"cfr-fxa\",\"enabled\":false}"); // o 3rd-party servers 299 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.message-groups", "{\"id\":\"message-groups\",\"enabled\":false}"); 300 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.messaging-experiments", "{\"id\":\"messaging-experiments\",\"enabled\":false}"); 301 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.onboarding", "{\"id\":\"onboarding\",\"enabled\":false}"); 302 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "{\"id\":\"snippets\",\"enabled\":false}"); 303 | user_pref("browser.newtabpage.activity-stream.asrouter.providers.whats-new-panel", "{\"id\":\"whats-new-panel\",\"enabled\":false}"); 304 | user_pref("browser.newtabpage.activity-stream.asrouter.useRemoteL10n", false); // o Online translate entries 305 | user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); // o Recommend extensions as you browse 306 | user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); // o Recommend features as you browse 307 | user_pref("browser.newtabpage.activity-stream.default.sites", ""); // o Built-in Top Sites list - add your own instead 308 | user_pref("browser.newtabpage.activity-stream.discoverystream.config", "{}"); // o Personalized content cfg 309 | user_pref("browser.newtabpage.activity-stream.discoverystream.enabled", false); // o Personalized content entries 310 | user_pref("browser.newtabpage.activity-stream.feeds.asrouterfeed", false); // o Online contextual recommendations 311 | user_pref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false); // o Personalized content entries 312 | user_pref("browser.newtabpage.activity-stream.feeds.newtabinit", true); // x New Tab page entries master toggle 313 | user_pref("browser.newtabpage.activity-stream.feeds.places", true); // x Breaks left-click to open links from New Tab page 314 | user_pref("browser.newtabpage.activity-stream.feeds.prefs", true); // x Oops something went wrong otherwise 315 | user_pref("browser.newtabpage.activity-stream.feeds.recommendationproviderswitcher",false);// o Refresh recommendations when provider changes 316 | //user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false); // / Highlights section entries 317 | user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); // o Top Stories section entries 318 | user_pref("browser.newtabpage.activity-stream.feeds.section.topstories.options", "{}"); // o Top Stories section entries - forced empty 319 | user_pref("browser.newtabpage.activity-stream.feeds.sections", true); // x All sections entries master toggle 320 | user_pref("browser.newtabpage.activity-stream.feeds.snippets", false); // o Snippets entries 321 | user_pref("browser.newtabpage.activity-stream.feeds.system.topstories", false); // o Top Stories no refresh 322 | //user_pref("browser.newtabpage.activity-stream.feeds.system.topsites", false); // / Top Sites no refresh 323 | //user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); // / Top Sites entries 324 | user_pref("browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar", true); // x Search pane switches focus to urlbar 325 | user_pref("browser.newtabpage.activity-stream.improvesearch.noDefaultSearchTile", true); // x Search pane do not override most used sites order 326 | user_pref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts",false);// o Search pane do not override most used sites 327 | user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false); // o Pocket stories in highlights 328 | user_pref("browser.newtabpage.activity-stream.showSearch", false); // o Search pane -superfluous, use urlbar instead 329 | user_pref("browser.newtabpage.activity-stream.showSponsored", false); // o Sponsored content 330 | user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // o Sponsored Top Sites 331 | user_pref("browser.search.suggest.enabled", true); // o Search suggestions master toggle 332 | user_pref("browser.search.update", true); // o Search engine updates - ebay needs an update atm 333 | user_pref("browser.uitour.enabled", false); // o Firefox Tour 334 | user_pref("browser.urlbar.autoFill", false); // x Disable urlbar autofill with domain extension 335 | user_pref("browser.urlbar.speculativeConnect.enabled", false); // o Speculative connections from urlbar 336 | user_pref("browser.urlbar.suggest.searches", false); // o Previous searches suggestions 337 | user_pref("browser.urlbar.suggest.engines", false); // o Search engines in the urlbar (tab2search) 338 | //user_pref("browser.urlbar.update2.oneOffsRefresh", false); // o Search in alternative engine v83 new annoyance 339 | user_pref("extensions.getAddons.showPane", false); // o Get Add-ons recommendations 340 | user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); // o Html about:addons recommendations 341 | user_pref("extensions.pocket.enabled", false); // o Pocket extension 342 | user_pref("startup.homepage_override_url", ""); // o What's New page after updates 343 | user_pref("startup.homepage_welcome_url", ""); // o Welcome page 344 | user_pref("startup.homepage_welcome_url.additional", ""); // o Welcome additional pages 345 | 346 | //// UPDATE 347 | user_pref("app.update.auto", false); // o Check for updates but let you choose to install 348 | user_pref("app.update.service.enabled", false); // o Use a background service to install updates 349 | user_pref("app.update.silent", false); // o Hide update UI prompts 350 | //user_pref("extensions.systemAddon.update.enabled", false); // / System Add-ons update 351 | //user_pref("extensions.update.autoUpdateDefault", false); // / Update Add-ons Automatically 352 | 353 | //// DEVELOPER 354 | user_pref("browser.aboutConfig.showWarning", false); // o Do not show about:config warning 355 | //user_pref("devtools.aboutdebugging.showSystemAddons", true); // x Display system addons in about:debugging 356 | //user_pref("devtools.chrome.enabled", true); // x Browser chrome and add-on - Ctrl+Shift+J input 357 | //user_pref("devtools.debugger.remote-enabled", true); // / Browser Toolbox - Ctrl+Alt+Shift+I 358 | user_pref("devtools.inspector.compatibility.enabled", true); // x Add inspector sidebar panel for the webcompat tool 359 | //user_pref("dom.send_after_paint_to_content", true); // / Send MozAfterPaint event to web content as well 360 | user_pref("general.warnOnAboutConfig", false); // o Display about:config normally without a warning 361 | //user_pref("gfx.webrender.all", true); // / Full Webrender (bypasses driver blacklists) 362 | //user_pref("gfx.webrender.debug.profiler", true); // / Enable Webrender profiler 363 | user_pref("gfx.webrender.debug.profiler-ui", "FPS"); // / Webrender profiler = FPS overlay 364 | user_pref("svg.context-properties.content.enabled", true); // x SVG context properties - for css inline icons 365 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); // x profile\chrome\ userChrome.css and userContent.css 366 | 367 | //user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"nav-bar\":[\"zoom-controls\",\"customizableui-special-spring66\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"home-button\",\"sidebar-button\",\"bookmarks-menu-button\",\"history-panelmenu\",\"urlbar-container\",\"downloads-button\",\"library-button\",\"ublock0_raymondhill_net-browser-action\",\"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action\",\"_74145f27-f039-47ce-a470-a662b129930a_-browser-action\",\"firefoxcolor_mozilla_com-browser-action\",\"customizableui-special-spring62\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"alltabs-button\",\"tabbrowser-tabs\",\"new-tab-button\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"developer-button\",\"bypasspaywalls_bypasspaywalls_weebly_com-browser-action\",\"_007e5327-f1ba-433d-aead-41cab2b7afb1_-browser-action\",\"_816c90e6-757f-4453-a84f-362ff989f3e2_-browser-action\",\"jid1-tsgsxbhncspbwq_jetpack-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"_74145f27-f039-47ce-a470-a662b129930a_-browser-action\",\"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action\",\"firefoxcolor_mozilla_com-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"PersonalToolbar\"],\"currentVersion\":16,\"newElementCount\":73}"); 368 | -------------------------------------------------------------------------------- /tweaked uBlock cfg 2024.03.22 user.txt: -------------------------------------------------------------------------------- 1 | { 2 | "timeStamp": 1711117629242, 3 | "version": "1.56.0", 4 | "userSettings": { 5 | "advancedUserEnabled": true, 6 | "cloudStorageEnabled": true, 7 | "ignoreGenericCosmeticFilters": true, 8 | "importedLists": [], 9 | "largeMediaSize": 1, 10 | "popupPanelSections": 63, 11 | "showIconBadge": false, 12 | "tooltipsDisabled": true 13 | }, 14 | "selectedFilterLists": [ 15 | "user-filters", 16 | "ublock-filters", 17 | "ublock-badware", 18 | "ublock-privacy", 19 | "ublock-quick-fixes", 20 | "ublock-unbreak", 21 | "adguard-generic", 22 | "adguard-mobile", 23 | "block-lan", 24 | "adguard-mobile-app-banners", 25 | "adguard-other-annoyances", 26 | "adguard-popup-overlays", 27 | "adguard-social", 28 | "adguard-widgets", 29 | "adguard-cookies", 30 | "ublock-cookies-adguard", 31 | "fanboy-cookiemonster", 32 | "ublock-cookies-easylist", 33 | "ublock-annoyances" 34 | ], 35 | "hiddenSettings": {}, 36 | "whitelist": [ 37 | "# about-scheme", 38 | "192.168.1.1", 39 | "accounts.google.com", 40 | "addons.about-scheme", 41 | "browser.chrome-scheme", 42 | "chrome-extension-scheme", 43 | "chrome-scheme", 44 | "debugging.about-scheme", 45 | "edge-scheme", 46 | "forums.guru3d.com", 47 | "forums.mydigitallife.net", 48 | "insider.windows.com", 49 | "login.yahoo.com", 50 | "mail.google.com", 51 | "moz-extension-scheme", 52 | "opera-scheme", 53 | "support.about-scheme", 54 | "support.microsoft.com", 55 | "twitter.com", 56 | "update.microsoft.com", 57 | "vivaldi-scheme", 58 | "wyciwyg-scheme" 59 | ], 60 | "dynamicFilteringString": "* ajax.aspnetcdn.com * noop\n* libs.baidu.com * noop\n* lib.baomitu.com * noop\n* apps.bdimg.com * noop\n* cdn.bootcss.com * noop\n* maxcdn.bootstrapcdn.com * noop\n* netdna.bootstrapcdn.com * noop\n* stackpath.bootstrapcdn.com * noop\n* ajax.cloudflare.com * noop\n* cdnjs.cloudflare.com * noop\n* facebook.com * block\n* use.fontawesome.com * noop\n* google.com * noop\n* ajax.googleapis.com * noop\n* fonts.googleapis.com * noop\n* mat1.gtimg.com * noop\n* hcaptcha.com * noop\n* code.jquery.com * noop\n* ajax.microsoft.com * noop\n* onclickgenius.com * block\n* lib.sinaapp.com * noop\n* unpkg.com * noop\n* upcdn.b0.upaiyun.com * noop\n* youtube.com * noop\n* gitcdn.github.io * noop\n* pagecdn.io * noop\n* cdn.plyr.io * noop\n* akamaiedge.net * noop\n* cdn.bootcdn.net * noop\n* cdn.css.net * noop\n* facebook.net * block\n* fbcdn.net * block\n* cdn.jsdelivr.net * noop\n* akamai-webcdn.kgstatic.net * noop\n* ajax.loli.net * noop\n* cdnjs.loli.net * noop\n* fonts.loli.net * noop\n* yastatic.net * noop\n* vjs.zencdn.net * noop\n* sdn.geekzu.org * noop\n* cdn.staticfile.org * noop\n* ajax.proxy.ustclug.org * noop\n* yandex.st * noop\nbehind-the-scene * * noop\nbehind-the-scene * inline-script noop\nbehind-the-scene * 1p-script noop\nbehind-the-scene * 3p-script noop\nbehind-the-scene * 3p-frame noop\nbehind-the-scene * image noop\nbehind-the-scene * 3p noop\nfacebook.com facebook.com * noop\nfacebook.com facebook.net * noop\nfacebook.com fbcdn.net * noop\ngithub.com githubusercontent.com * noop\ngithubusercontent.com * 3p-frame noop\ntranslate.google.com googleusercontent.com * noop\ninstagram.com * 3p-frame noop\ninstagram.com facebook.com * noop\ninstagram.com fbcdn.net * noop\nonedrive.live.com * 3p-frame noop\nreddit.com * 3p-frame noop\n1337x.is * 3p-script block\nimgur.com * 3p-script noop\nimdb.com * 3p-script noop\n* mozilla.com * noop\nreddit.com redditstatic.com * noop\nreddit.com reddit.map.fastly.net * noop\ngithub.com * 3p-script noop\n* gstatic.com * noop\n* cdn.materialdesignicons.com * noop\n* cdn.ravenjs.com * noop\nforums.mydigitallife.net * * noop\n1337x.to velocitycdn.com * block\n1337x.to youradexchange.com * block\n1337x.to vibuin.com * block\n1337x.to crrepo.com * block\n1337x.to * 3p-script block\n1337x.st * 1p-script block\n1337x.st * 3p-script block\n* vo.aicdn.com * noop\n* js.appboycdn.com * noop\n* materialdesignicons.b-cdn.net * noop\n* use.fontawesome.com.cdn.cloudflare.net * noop\n* cdn.embed.ly.cdn.cloudflare.net * noop\n* cdn.jsdelivr.net.cdn.cloudflare.net * noop\n* ajax.loli.net.cdn.cloudflare.net * noop\n* cdnjs.loli.net.cdn.cloudflare.net * noop\n* fonts.loli.net.cdn.cloudflare.net * noop\n* code.createjs.com * noop\n* cdn.datatables.net * noop\n* akamai-webcdn.kgstatic.net.edgesuite.net * noop\n* cdn.embed.ly * noop\n* sdn.inbond.gslb.geekzu.org * noop\n* gstaticadssl.l.google.com * noop\n* fonts.gstatic.com * noop\n* cds.s5x3j6q5.hwcdn.net * noop\n* apps.bdimg.jomodns.com * noop\n* cdn.bootcss.com.maoyundns.com * noop\n* cdn.bootcdn.net.maoyundns.com * noop\n* cdn.mathjax.org * noop\n* mscomajax.vo.msecnd.net * noop\n* dualstack.osff.map.fastly.net * noop\n* lib.baomitu.com.qh-cdn.com * noop\n* iduwdjf.qiniudns.com * noop\n* mat1.gtimg.com.tegsea.tc.qq.com * noop\n* mathjax.rstudio.com * noop\n* developer.n.shifen.com * noop\n* lb.sae.sina.com.cn * noop\n* gateway.cname.ustclug.org * noop\n* wikimedia.org * noop\nold.reddit.com ebayimg.com * noop\nold.reddit.com twitch.tv * noop\nold.reddit.com twitch.map.fastly.net * noop\n* twitter.com * block\ntwitter.com twitter.com * noop\ntwitter.com t.co * noop\n* thegrayzone.com * block\nthegrayzone.com thegrayzone.com * block\nwww.bloomberg.com bloomberg.com * block\n* bloomberg.com * block\n* cloudflare.com * noop", 61 | "urlFilteringString": "", 62 | "hostnameSwitchesString": "no-csp-reports: * true\nno-large-media: behind-the-scene false", 63 | "userFilters": "! 3rd party fonts\n!*$font,third-party\n\n! imgur\nimgur.com##canvas\nimgur.com##.advertisement\nimgur.com##.post-unification.right\nimgur.com##.fixed.post-header\nimgur.com##.Footer-wrapper\nimgur.com##.Accolade-background\nimgur.com##.Gallery-EngagementBar\nimgur.com##.Gallery-Sidebar\nimgur.com##.GalleryPopOverBanner\nimgur.com##.GalleryVote-accoladesBridge\nimgur.com##.BottomRecirc\nimgur.com##.App-cover\n\n! twitch\n||twitch.tv/embed/*/chat$subdocument\ntwitch.tv##.chat-scrollable-area__message-container\ntwitch.tv##.top-bar\n\n! youtube\n||gstatic.com/youtube/img/promos$image\n!youtube.com##.ytd-banner-promo-renderer\nyoutube.com##.ytp-pause-overlay\nyoutube.com##.ytp-title-fullerscreen-link\nyoutube.com##.ytp-title-channel\nyoutube.com##.ytp-title-text\nyoutube.com##.ytp-chrome-top-buttons\nyoutube.com##.ytp-show-tiles\nyoutube.com##.ytp-ce-covering-overlay\nyoutube.com##.ytp-ce-element-shadow\nyoutube.com##.ytp-ce-element-show\nyoutube.com##.ytp-title\n||youtube.com/live_chat\nyoutube.com###chatframe\nyoutube.com###chat\nyoutube.com###panels-full-bleed-container\n\n! google\n||cse.google.com/cse_v2/ads$subdocument\n\n! ghacks sellout\nghacks.net##.hentry,.home-posts,.home-category-post:not(:has-text(/Martin Brinkmann|Mike Turcotte|Ashwin/))\n\n! reddit\nreddit.com##.promotedlink\nreddit.com###eu-cookie-policy\nreddit.com###header-img\n\n! reddit - constant 5% cpu / gpu penalty for the shitty awards icons - or set image.animation_mode once in about:config\n! ||redditstatic.com/gold/awards/icon/$image\n! ||redditstatic.com/silver/awards/icon/$image\n! ||thumbs.redditmedia.com/$image\n! ||preview.redd.it/award_images/$image\n! reddit.com##.awarding-icon\n! reddit.com##.awardings-bar\n\n! other\nnytimes.com###gateway-content\nimdb.com##.jw-reset.jw-controls\nliquipedia.net##.navigation-not-searchable.content-ad-block\nliquipedia.net##.is--sticky.navigation-not-searchable\n" 64 | } 65 | --------------------------------------------------------------------------------