mirror of
https://github.com/arkenfox/user.js.git
synced 2025-09-01 01:18:30 +02:00
Compare commits
108 Commits
60.0
...
v63.0-beta
Author | SHA1 | Date | |
---|---|---|---|
3003f2dd85 | |||
ce48306a0d | |||
3423d39fa9 | |||
4834472107 | |||
f214e4bc4e | |||
8fd6061bcc | |||
92acb6b2f7 | |||
b6b9733afa | |||
89bc0bee16 | |||
f8fc465d0a | |||
58fa4e9b6d | |||
afee555045 | |||
5a36b4e016 | |||
7b3e6f5143 | |||
452c717502 | |||
661af196d9 | |||
39a30d710b | |||
8f10300c15 | |||
806d047729 | |||
0efebe3e83 | |||
49d9314b0a | |||
b4b5e3a068 | |||
29d832e350 | |||
68e44285c5 | |||
e8bfa93696 | |||
1abe1fd4df | |||
24f7847f73 | |||
56206f77ba | |||
587194ce84 | |||
7aac6d476a | |||
9e073ea5d5 | |||
732c438148 | |||
58931bc15d | |||
21b18cbe49 | |||
cbcd293e68 | |||
aacf5d4a0b | |||
ec5fb6e3a1 | |||
b2fc9bc266 | |||
ca1cc2001f | |||
f88af1dac6 | |||
1c6c5ea2ff | |||
2d316ceedd | |||
36c791c4bc | |||
ee213f2bab | |||
01a978e33a | |||
6717bc0674 | |||
11a94c7e32 | |||
b7c0e816a0 | |||
8b5547a973 | |||
f0c29cf8a6 | |||
e7a71143a8 | |||
9e342deaf2 | |||
109d4cf916 | |||
c805dd8b3b | |||
a89e8fc1e0 | |||
f2065a463c | |||
299489c701 | |||
50a578c32a | |||
7d417da5fd | |||
e6a13e5a93 | |||
9a46fafb53 | |||
6fb2f25e65 | |||
9e67f982ab | |||
5b6ed92da4 | |||
2969c6660f | |||
776e32c27f | |||
9e1c368cd9 | |||
572d16d5a5 | |||
29e2461cd1 | |||
f39112f914 | |||
0145ccfec3 | |||
c2c8e6227c | |||
ab404680df | |||
cfa2da8fea | |||
b3b3ae4660 | |||
c4d131aaf9 | |||
9c975b318a | |||
a1638868ea | |||
3806ccc68c | |||
06b69bb95a | |||
d8bfdaa058 | |||
03efb99754 | |||
b390d9787b | |||
2e908f38d2 | |||
f973422581 | |||
5bcbe56f4b | |||
833f816b99 | |||
5ccea3262f | |||
9611eac1cf | |||
43119694fb | |||
cbea3adc7e | |||
4813aa549b | |||
96706cf11e | |||
a81d013e45 | |||
857cbd8c24 | |||
c9543519c7 | |||
d34894e965 | |||
70abeda9d4 | |||
dceef9d1db | |||
9386fb5581 | |||
56acb4cff5 | |||
1eac4185d2 | |||
05021ac62e | |||
a2b5e1e7cf | |||
d9a1c83300 | |||
a4a9b9a675 | |||
c61e633236 | |||
8783ae9ce8 |
17
.gitattributes
vendored
17
.gitattributes
vendored
@ -1,14 +1,15 @@
|
||||
## * text=auto
|
||||
* text=auto
|
||||
|
||||
*.js text=auto
|
||||
*.md text=auto
|
||||
*.yml text=auto
|
||||
*.txt text=auto
|
||||
*.sh text=auto
|
||||
*.bat eol=crlf
|
||||
*.js text
|
||||
*.md text
|
||||
*.yml text
|
||||
*.txt text
|
||||
*.sh text
|
||||
## *.bat text eol=crlf
|
||||
*.bat -text
|
||||
|
||||
*.png binary
|
||||
|
||||
.gitattributes export-ignore
|
||||
*.yml export-ignore
|
||||
wikipiki export-ignore
|
||||
/wikipiki export-ignore
|
||||
|
14
README.md
14
README.md
@ -1,21 +1,23 @@
|
||||
###  user.js
|
||||
### ![][b] user.js
|
||||
A `user.js` is a configuration file that can control hundreds of Firefox settings. For a more technical breakdown and explanation, you can read more on the [overview](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.1-Overview) wiki page.
|
||||
|
||||
###  ghacks user.js
|
||||
The `ghacks user.js` is a **template**, which, as provided, aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
||||
### ![][b] ghacks user.js
|
||||
The `ghacks user.js` is a **template** which aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
|
||||
|
||||
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `ghacks user.js` settings.
|
||||
|
||||
Sitemap: [Releases](https://github.com/ghacksuserjs/ghacks-user.js/releases), [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Achangelog), [Wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki), [stickies](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22). [diffs](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+label%3Adiffs)
|
||||
|
||||
###  acknowledgments
|
||||
### ![][b] acknowledgments
|
||||
Literally thousands of sources, references and suggestions. That said...
|
||||
|
||||
* Martin Brinkmann at [ghacks](https://www.ghacks.net/) <sup>1</sup>
|
||||
* The ghacks community and commentators
|
||||
* [12bytes](http://12bytes.org/tech/firefox/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs)
|
||||
* The 12bytes article now uses this user.js and supplements it with an additonal JS hosted right [here](https://github.com/atomGit/Firefox-user.js) at github
|
||||
* The 12bytes article now uses this user.js and supplements it with an additonal JS hosted at [GitLab](https://gitlab.com/labwrat/Firefox-user.js/tree/master)
|
||||
|
||||
<sup>1</sup> The ghacks user.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. With Martin Brinkmann's blessing, it will keep the ghacks name.
|
||||
|
||||
###  [](https://opensource.org/licenses/MIT)
|
||||
### ![][b] [](https://opensource.org/licenses/MIT)
|
||||
|
||||
[b]: https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/wikipiki/bullet01.png
|
||||
|
@ -1 +1,3 @@
|
||||
theme: jekyll-theme-midnight
|
||||
theme: jekyll-theme-midnight
|
||||
title: ghacks-user.js
|
||||
description: An ongoing comprehensive user.js template for configuring and hardening Firefox privacy, security and anti-fingerprinting
|
||||
|
@ -3,7 +3,9 @@ TITLE prefs.js cleaner
|
||||
|
||||
REM ### prefs.js cleaner for Windows
|
||||
REM ## author: @claustromaniac
|
||||
REM ## version: 2.1
|
||||
REM ## version: 2.2
|
||||
|
||||
CD /D "%~dp0"
|
||||
|
||||
:begin
|
||||
ECHO:
|
||||
@ -11,7 +13,7 @@ ECHO:
|
||||
ECHO ########################################
|
||||
ECHO #### prefs.js cleaner for Windows ####
|
||||
ECHO #### by claustromaniac ####
|
||||
ECHO #### v2.1 ####
|
||||
ECHO #### v2.2 ####
|
||||
ECHO ########################################
|
||||
ECHO:
|
||||
CALL :message "This script should be run from your Firefox profile directory."
|
||||
|
@ -1,7 +1,7 @@
|
||||
/***
|
||||
This will reset the preferences that have been removed completely from the ghacks user.js.
|
||||
|
||||
Last updated: 27-May-2018
|
||||
Last updated: 30-Sept-2018
|
||||
|
||||
For instructions see:
|
||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||
@ -90,13 +90,22 @@
|
||||
'browser.laterrun.enabled',
|
||||
'browser.offline-apps.notify',
|
||||
'browser.rights.3.shown',
|
||||
'browser.slowStartup.maxSamples'
|
||||
'browser.slowStartup.maxSamples',
|
||||
'browser.slowStartup.notificationDisabled',
|
||||
'browser.slowStartup.samples',
|
||||
'browser.storageManager.enabled',
|
||||
'dom.allow_scripts_to_close_windows',
|
||||
'dom.disable_window_flip',
|
||||
'network.http.fast-fallback-to-IPv4',
|
||||
'offline-apps.quota.warn',
|
||||
'services.blocklist.signing.enforced',
|
||||
/* 62-beta */
|
||||
'browser.urlbar.autoFill.typed',
|
||||
'security.tls.version.fallback-limit',
|
||||
/* 63-beta */
|
||||
'extensions.webextensions.keepStorageOnUninstall',
|
||||
'extensions.webextensions.keepUuidOnUninstall',
|
||||
'privacy.trackingprotection.ui.enabled',
|
||||
/* reset parrot: check your open about:config after running the script */
|
||||
'_user.js.parrot'
|
||||
]
|
||||
|
63
updater.bat
63
updater.bat
@ -3,11 +3,16 @@ TITLE ghacks user.js updater
|
||||
|
||||
REM ## ghacks-user.js updater for Windows
|
||||
REM ## author: @claustromaniac
|
||||
REM ## version: 4.5
|
||||
REM ## version: 4.6
|
||||
REM ## instructions: https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.3-Updater-Scripts
|
||||
|
||||
SET v=4.7
|
||||
|
||||
VERIFY ON
|
||||
CD /D "%~dp0"
|
||||
SET _myname=%~n0
|
||||
SET _myparams=%*
|
||||
|
||||
:parse
|
||||
IF "%~1"=="" (GOTO endparse)
|
||||
IF /I "%~1"=="-unattended" (SET _ua=1)
|
||||
@ -20,17 +25,21 @@ IF /I "%~1"=="-singlebackup" (SET _singlebackup=1)
|
||||
SHIFT
|
||||
GOTO parse
|
||||
:endparse
|
||||
|
||||
IF DEFINED _updateb (
|
||||
REM The normal flow here goes from phase 1 to phase 2 and then phase 3.
|
||||
IF NOT "!_myname:~0,9!"=="[updated]" (
|
||||
IF EXIST "[updated]!_myname!.bat" (
|
||||
REM ## Phase 3 ##: The new script, with the original name, will:
|
||||
REM * Delete the [updated]*.bat script
|
||||
REM * Delete the [updated]*.bat and *.bat.old scripts
|
||||
REM * Begin the normal routine
|
||||
FC "[updated]!_myname!.bat" "!_myname!.bat.old" >nul
|
||||
IF NOT "!errorlevel!"=="0" (
|
||||
CALL :message "Script updated to version !v!"
|
||||
TIMEOUT 3 >nul
|
||||
)
|
||||
REN "[updated]!_myname!.bat" "[updated]!_myname!.bat.old"
|
||||
DEL /F "[updated]!_myname!.bat.old"
|
||||
CALL :message "Script updated^!"
|
||||
TIMEOUT 3 >nul
|
||||
DEL /F "!_myname!.bat.old" "[updated]!_myname!.bat.old"
|
||||
GOTO begin
|
||||
)
|
||||
REM ## Phase 1 ##
|
||||
@ -38,10 +47,10 @@ IF DEFINED _updateb (
|
||||
REM * Start that script in a new CMD window
|
||||
REM * Exit
|
||||
CALL :message "Updating script..."
|
||||
REM Uncomment the next line and comment the powershell call for testing.
|
||||
REM COPY /B /V /Y "!_myname!.bat" "[updated]!_myname!.bat"
|
||||
REM Uncomment the next line and comment out the PowerShell call for testing.
|
||||
REM COPY /B /Y "!_myname!.bat" "[updated]!_myname!.bat" >nul
|
||||
(
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.bat', '[updated]!_myname!.bat')"
|
||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/updater.bat', '[updated]!_myname!.bat')"
|
||||
) >nul 2>&1
|
||||
IF EXIST "[updated]!_myname!.bat" (
|
||||
START /min CMD /C "[updated]!_myname!.bat" !_myparams!
|
||||
@ -55,19 +64,17 @@ IF DEFINED _updateb (
|
||||
TIMEOUT 300 >nul
|
||||
) ELSE (
|
||||
REM ## Phase 2 ##: The [updated]*.bat script will:
|
||||
REM * Copy itself overwriting the original batch
|
||||
REM * Start that script in a new CMD instance
|
||||
REM * Rename the old script and make a copy of itself with the original name.
|
||||
REM * Run that copy in a new CMD instance
|
||||
REM * Exit
|
||||
IF EXIST "!_myname:~9!.bat" (
|
||||
REN "!_myname:~9!.bat" "!_myname:~9!.bat.old"
|
||||
DEL /F "!_myname:~9!.bat.old"
|
||||
)
|
||||
COPY /B /V /Y "!_myname!.bat" "!_myname:~9!.bat"
|
||||
IF EXIST "!_myname:~9!.bat" ( REN "!_myname:~9!.bat" "!_myname:~9!.bat.old" )
|
||||
COPY /B /Y "!_myname!.bat" "!_myname:~9!.bat"
|
||||
START CMD /C "!_myname:~9!.bat" !_myparams!
|
||||
)
|
||||
)
|
||||
EXIT /B
|
||||
)
|
||||
|
||||
:begin
|
||||
CLS
|
||||
ECHO:
|
||||
@ -75,7 +82,7 @@ ECHO:
|
||||
ECHO: ########################################
|
||||
ECHO: #### user.js Updater for Windows ####
|
||||
ECHO: #### by claustromaniac ####
|
||||
ECHO: #### v4.5 ####
|
||||
ECHO: #### v!v! ####
|
||||
ECHO: ########################################
|
||||
ECHO:
|
||||
SET /A "_line=0"
|
||||
@ -121,7 +128,7 @@ IF DEFINED _log (
|
||||
IF EXIST user.js.new (DEL /F "user.js.new")
|
||||
CALL :message "Retrieving latest user.js file from github repository..."
|
||||
(
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js', 'user.js.new')"
|
||||
PowerShell -Command "(New-Object Net.WebClient).DownloadFile('https://raw.githubusercontent.com/ghacksuserjs/ghacks-user.js/master/user.js', 'user.js.new')"
|
||||
) >nul 2>&1
|
||||
IF EXIST user.js.new (
|
||||
IF DEFINED _multi (
|
||||
@ -129,18 +136,18 @@ IF EXIST user.js.new (
|
||||
IF NOT ERRORLEVEL 1 (
|
||||
IF DEFINED _merge (
|
||||
CALL :message "Merging..."
|
||||
COPY /B /V /Y user.js-overrides\*.js user-overrides-merged.js
|
||||
COPY /B /Y user.js-overrides\*.js user-overrides-merged.js
|
||||
CALL :merge user-overrides-merged.js
|
||||
COPY /B /V /Y user.js.new+user-overrides-merged.js user.js.new
|
||||
COPY /B /Y user.js.new+user-overrides-merged.js user.js.new
|
||||
CALL :merge user.js.new
|
||||
) ELSE (
|
||||
CALL :message "Appending..."
|
||||
COPY /B /V /Y user.js.new+"user.js-overrides\*.js" user.js.new
|
||||
COPY /B /Y user.js.new+"user.js-overrides\*.js" user.js.new
|
||||
)
|
||||
) ELSE (CALL :message "No override files found.")
|
||||
) ELSE (
|
||||
IF EXIST "user-overrides.js" (
|
||||
COPY /B /V /Y user.js.new+"user-overrides.js" "user.js.new"
|
||||
COPY /B /Y user.js.new+"user-overrides.js" "user.js.new"
|
||||
IF DEFINED _merge (
|
||||
CALL :message "Merging user-overrides.js..."
|
||||
CALL :merge user.js.new
|
||||
@ -169,6 +176,7 @@ IF EXIST user.js.new (
|
||||
) ELSE (
|
||||
REN user.js.new user.js
|
||||
CALL :message "Update complete."
|
||||
SET "_changed=true"
|
||||
)
|
||||
)
|
||||
) ELSE (
|
||||
@ -176,7 +184,15 @@ IF EXIST user.js.new (
|
||||
ECHO: No changes were made.
|
||||
)
|
||||
IF NOT DEFINED _log (
|
||||
IF NOT DEFINED _ua (PAUSE)
|
||||
IF NOT DEFINED _ua (
|
||||
IF EXIST prefsCleaner.bat (
|
||||
IF "!_changed!"=="true" (
|
||||
CALL :message "Would you like to run the prefsCleaner now?"
|
||||
CHOICE /C YN /N /M "(Y/N) "
|
||||
IF "1"=="!errorlevel!" ( START "" cmd.exe /C "prefsCleaner.bat" )
|
||||
) ELSE (PAUSE)
|
||||
) ELSE (PAUSE)
|
||||
)
|
||||
)
|
||||
EXIT /B
|
||||
|
||||
@ -188,6 +204,7 @@ ECHO: %~1
|
||||
IF NOT "2"=="%_log%" (ECHO:)
|
||||
ENDLOCAL
|
||||
GOTO :EOF
|
||||
|
||||
REM ############ Merge function ############
|
||||
:merge
|
||||
SETLOCAL DisableDelayedExpansion
|
||||
@ -226,6 +243,7 @@ FOR /F tokens^=2^,^*^ delims^=^' %%G IN ('FINDSTR /R /C:"^//// --- comment-out -
|
||||
MOVE /Y updatertempfile "%~1" >nul
|
||||
ENDLOCAL
|
||||
GOTO :EOF
|
||||
|
||||
REM ############### Help ##################
|
||||
:showhelp
|
||||
MODE 80,46
|
||||
@ -260,4 +278,3 @@ CALL :message ""
|
||||
PAUSE
|
||||
MODE 80,25
|
||||
GOTO :begin
|
||||
REM #####################################
|
||||
|
24
updater.sh
24
updater.sh
@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
### ghacks-user.js updater for Mac/Linux
|
||||
## author: @overdodactyl
|
||||
## version: 1.3
|
||||
## author: @overdodactyl, @ema-pe
|
||||
## version: 1.4
|
||||
|
||||
## DON'T GO HIGHER THAN VERSION x.9 !! ( because of ASCII comparison in check_for_update() )
|
||||
|
||||
@ -12,6 +12,15 @@ update_pref=${1:--ask}
|
||||
|
||||
currdir=$(pwd)
|
||||
|
||||
DOWNLOAD_TO_STDOUT="curl -s"
|
||||
DOWNLOAD_TO_FILE="curl -O"
|
||||
|
||||
# Use wget if curl is not available.
|
||||
if [[ -z $(command -v "curl") ]]; then
|
||||
DOWNLOAD_TO_STDOUT="wget --quiet --output-document=-"
|
||||
DOWNLOAD_TO_FILE="wget"
|
||||
fi
|
||||
|
||||
## get the full path of this script (readlink for Linux, greadlink for Mac with coreutils installed)
|
||||
sfp=$(readlink -f "${BASH_SOURCE[0]}" 2>/dev/null || greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null)
|
||||
|
||||
@ -24,7 +33,7 @@ cd "$(dirname "${sfp}")"
|
||||
## Used to check if a new version of updater.sh is available
|
||||
update_available="no"
|
||||
check_for_update () {
|
||||
online_version="$(curl -s ${updater} | sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p')"
|
||||
online_version="$($DOWNLOAD_TO_STDOUT ${updater} | sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p')"
|
||||
path_to_script="$(dirname "${sfp}")/updater.sh"
|
||||
current_version="$(sed -n '5 s/.*[[:blank:]]\([[:digit:]]*\.[[:digit:]]*\)/\1/p' "$path_to_script")"
|
||||
if [[ "$current_version" < "$online_version" ]]; then
|
||||
@ -36,8 +45,8 @@ check_for_update () {
|
||||
update_script () {
|
||||
echo -e "This script will be backed up and the latest version of updater.sh will be executed.\n"
|
||||
mv updater.sh "updater.sh.backup.$(date +"%Y-%m-%d_%H%M")"
|
||||
curl -O ${updater} && echo -e "\nThe latest updater script has been downloaded\n"
|
||||
|
||||
$DOWNLOAD_TO_FILE ${updater} && echo -e "\nThe latest updater script has been downloaded\n"
|
||||
|
||||
# make new file executable
|
||||
chmod +x updater.sh
|
||||
|
||||
@ -60,7 +69,7 @@ main () {
|
||||
if [ -e user.js ]; then
|
||||
echo "Your current user.js file for this profile will be backed up and the latest ghacks version from github will take its place."
|
||||
echo -e "\nIf currently using the ghacks user.js, please compare versions:"
|
||||
echo " Available online: $(curl -s ${ghacksjs} | sed -n '4p')"
|
||||
echo " Available online: $($DOWNLOAD_TO_STDOUT ${ghacksjs} | sed -n '4p')"
|
||||
echo " Currently using: $(sed -n '4p' user.js)"
|
||||
else
|
||||
echo "A user.js file does not exist in this profile. If you continue, the latest ghacks version from github will be downloaded."
|
||||
@ -80,7 +89,7 @@ main () {
|
||||
|
||||
# download latest ghacks user.js
|
||||
echo "downloading latest ghacks user.js file"
|
||||
curl -O ${ghacksjs} && echo "ghacks user.js has been downloaded"
|
||||
$DOWNLOAD_TO_FILE ${ghacksjs} && echo "ghacks user.js has been downloaded"
|
||||
|
||||
if [ -e user-overrides.js ]; then
|
||||
echo "user-overrides.js file found"
|
||||
@ -94,6 +103,7 @@ main () {
|
||||
cd "${currdir}"
|
||||
}
|
||||
|
||||
|
||||
update_pref="$(echo $update_pref | tr '[A-Z]' '[a-z]')"
|
||||
if [ $update_pref = "-donotupdate" ]; then
|
||||
main
|
||||
|
1
wikipiki/License-MIT-yellow.svg
Normal file
1
wikipiki/License-MIT-yellow.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="78" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h47v20H0z"/><path fill="#dfb317" d="M47 0h31v20H47z"/><path fill="url(#b)" d="M0 0h78v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="245" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">license</text><text x="245" y="140" transform="scale(.1)" textLength="370">license</text><text x="615" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="210">MIT</text><text x="615" y="140" transform="scale(.1)" textLength="210">MIT</text></g> </svg>
|
After Width: | Height: | Size: 950 B |
Reference in New Issue
Block a user