automate/025_firefox-extensions.sh

345 lines
12 KiB
Bash
Executable File

#!/usr/bin/env bash
apt-get -y install mozilla-devscripts
apt-get -y install xul-ext-webdeveloper
apt-get -y install xul-ext-itsalltext
apt-get -y install xul-ext-greasemonkey
apt-get -y install xul-ext-firebug
apt-get -y install xul-ext-firexpath
# See https://www.legroom.net/howto/firefox
#user_pref("privacy.trackingprotection.enabled "true");
#user_pref("browser.newtabpage.directory.ping "");
#user_pref("browser.newtabpage.directory.source, "");
#user_pref("browser.startup.page", 3);
#user_pref("browser.urlbar.doubleClickSelectsAll", "true");
#user_pref("browser.urlbar.clickSelectsAll", "false");
#user_pref("clipboard.autocopy","false");
#user_pref("general.warnOnAboutConfig", false);
#user_pref("geo.enabled","false");
#user_pref("geo.wifi.uri","localhost");
#user_pref("browser.search.geoip.url","localhost");
#user_pref("browser.search.suggest.enabled","false");
#user_pref("browser.search.geoSpecificDefaults","false");
#user_pref("browser.reader.detectedFirstArticle", true);//Disable obnoxious Reader View nag popup
#// From tor browser
#user_pref("privacy.firstparty.isolate", true);
#// stop thirdparty cookies
#network.cookie.cookieBehavior=1
#// Disable Shield Recipe Client
#user_pref("app.shield.optoutstudies.enabled", false);
#user_pref("extensions.shield-recipe-client.enabled", false);
# firefox get menu back: used to use RDF before and the people involved still can't keep it flat.
# I can't see a simple way to use jq to change a value in-place so resort to here-file.
#xulstore.json
#"chrome://browser/content/browser.xul": {
# "toolbar-menubar": {
# "autohide": "true"
# }
#)
# debian still uses the localstore.rdf store. Probably not firefox-esr FIXME
bash -c "cat > /etc/iceweasel/profile/xulstore.json" <<'EOF'
{
"about:config": {
"lockCol": {
"ordinal": "3"
},
"prefCol": {
"ordinal": "1",
"sortDirection": "ascending"
},
"typeCol": {
"ordinal": "5"
},
"valueCol": {
"ordinal": "7"
}
},
"chrome://browser/content/browser.xul": {
"PersonalToolbar": {
"collapsed": "false"
},
"main-window": {
"height": "683",
"screenX": "321",
"screenY": "35",
"sizemode": "normal",
"width": "1440"
},
"nav-bar": {
"collapsed": "",
"currentset": "urlbar-container,search-container,bookmarks-menu-button,downloads-button,home-button,firebug-badged-button,greasemonkey-tbb"
},
"navigator-toolbox": {
"iconsize": "small"
},
"sidebar-title": {
"value": ""
},
"toolbar-menubar": {
"autohide": "false"
}
},
"chrome://browser/content/preferences/cookies.xul": {
"CookiesDialog": {
"height": "369",
"screenX": "720",
"screenY": "289",
"width": "480"
}
},
"chrome://browser/content/preferences/preferences.xul": {
"BrowserPreferences": {
"lastSelected": "paneAdvanced",
"screenX": "653",
"screenY": "176"
}
},
"chrome://browser/content/sanitize.xul": {
"SanitizeDialog": {
"screenX": "77",
"screenY": "207"
},
"detailsExpander": {
"class": "expander-up"
},
"itemList": {
"collapsed": "false"
}
},
"chrome://unplug/content/config/config.xul": {
"cn_unplug2_config": {
"lastSelected": "tababout",
"screenX": "709",
"screenY": "374"
}
}
}
EOF
# FIXME
# Change firefox/iceweasel preferences in /home and /etc prefs.js
## firefox pref value - sets the value of the given user_pref to value variable
#value=2
#for i in "browser.startup.page"
#do
# if grep $i /etc/iceweasel/profile/prefs.js
# then
# echo "Found: " $i
# sed -i "s#^user_pref(\"$i\",.*);#user_pref(\"browser.startup.page\", $value);#" /etc/iceweasel/profile/prefs.js
# sed -i "s#^user_pref(\"$i\",.*);#user_pref(\"browser.startup.page\", $value);#" /home/*/.mozilla/firefox/*/prefs.js
# else
# echo "Not found: " $i
# echo "user_pref($i, $value);" >> /etc/iceweasel/profile/prefs.js
# echo "user_pref($i, $value);" >> /home/*/.mozilla/firefox/*/prefs.js
# fi
#done
#
## firefox pref true - sets the value of the given user_pref to true
#for i in "privacy.trackingprotection.enabled"
#do
# print $1
# if grep $i /etc/iceweasel/profile/prefs.js
# then
# sed -i -e 's/^user_pref($i, \(true\|false\));$/user_pref($i, true);/' /etc/iceweasel/profile/prefs.js
# sed -i -e 's/^user_pref($i, \(true\|false\));$/user_pref($i, true);/' /home/*/.mozilla/firefox/*/prefs.js
# else
# echo "user_pref($i, true);" >> /etc/iceweasel/profile/prefs.js
# echo "user_pref($i, true);" >> /home/*/.mozilla/firefox/*/prefs.js
# fi
#done
#
## firefox pref clear - sets the value of the given user_pref to empty
#for i in "browser.newtabpage.directory.ping" "browser.newtabpage.directory.source" "browser.fixup.alternate.suffix"
#do
# print $1
# if grep $i /etc/iceweasel/profile/prefs.js
# then
# sed -i -e 's/^user_pref($i, \(*\));$/user_pref($i, \"\");/' /etc/iceweasel/profile/prefs.js
# sed -i -e 's/^user_pref($i, \(*\));$/user_pref($i, \"\");/' /home/*/.mozilla/firefox/*/prefs.js
# else
# echo "user_pref($i, \"\");" >> /etc/iceweasel/profile/prefs.js
# echo "user_pref($i, \"\");" >> /home/*/.mozilla/firefox/*/prefs.js
# fi
#done
#PROFILE_NAME="23k5nqzr.default-1404250880109"
#
#PROFILE_DIR="~/.mozilla/firefox/${PROFILE_NAME}"
#
#for i in "browser.pocket.enabled"
#do
# print $1
# if grep $i ${PROFILE_DIR}/prefs.js
# then
# sed -i -e 's/^user_pref($i, \(true\|false\));$/user_pref($i, false);/' ${PROFILE_DIR}/prefs.js
# else
# echo "user_pref($i, true);" >> ${PROFILE_DIR}/prefs.js
# fi
#done
#
#network.http.speculative-parallel-limit to 0
#
#PROFILE_NAME="23k5nqzr.default-1404250880109"
#
#PROFILE_DIR="~/.mozilla/firefox/${PROFILE_NAME}"
#
#for i in "network.http.speculative-parallel-limit"
#do
# print $1
# if grep $i ${PROFILE_DIR}/prefs.js
# then
# sed -i -e 's/^user_pref($i, \(0\|1\));$/user_pref($i, 0);/' ${PROFILE_DIR}/prefs.js
# else
# echo "user_pref($i, true);" >> ${PROFILE_DIR}/prefs.js
# fi
#done
# FIXME try firefox -install-global-extension ${YOUR_XPI_FILE] in a loop
#ublock-origin https://addons.mozilla.org/firefox/downloads/latest/607454/addon-607454-latest.xpi
#unplug https://addons.mozilla.org/firefox/downloads/latest/2254/addon-2254-latest.xpi
#download youtube videos as mp4 https://addons.mozilla.org/firefox/downloads/latest/11869/addon-11869-latest.xpi
#itsalltext (edit wikipages in external editor) https://addons.mozilla.org/firefox/downloads/latest/4125/addon-4125-latest.xpi
#web developer https://addons.mozilla.org/firefox/downloads/latest/60/addon-60-latest.xpi
#toggle web developer toolbar https://addons.mozilla.org/firefox/downloads/latest/61772/addon-61772-latest.xpi
#firebug https://addons.mozilla.org/firefox/downloads/latest/1843/addon-1843-latest.xpi
#firebug palemoon requires 1.12 https://getfirebug.com/releases/firebug/1.12/firebug-1.12.0.xpi
#firepath https://addons.mozilla.org/firefox/downloads/latest/11900/addon-11900-latest.xpi
#greasemonkey https://addons.mozilla.org/firefox/downloads/latest/748/addon-748-latest.xpi
#greasefire2 https://addons.mozilla.org/firefox/downloads/latest/567886/addon-567886-latest.xpi
#redirects fixer https://addons.mozilla.org/firefox/downloads/latest/371815/addon-371815-latest.xpi
#https everywhere https://addons.mozilla.org/firefox/downloads/latest/229918/addon-229918-latest.xpi
# https://addons.mozilla.org/firefox/downloads/latest/2254/addon-2254-latest.xpi
URLS="
https://addons.mozilla.org/firefox/downloads/latest/748/addon-748-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/607454/addon-607454-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/567886/addon-567886-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/11869/addon-11869-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/4125/addon-4125-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/60/addon-60-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/1843/addon-1843-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/11900/addon-11900-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/371815/addon-371815-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/61772/addon-61772-latest.xpi
https://addons.mozilla.org/firefox/downloads/latest/229918/addon-229918-latest.xpi
"
pwd
EXTENSIONS_HOME="~/.mozilla"
EXTENSIONS_DIR="${EXTENSIONS_HOME}/extensions"
mkdir -p ${EXTENSIONS_DIR} && ls ${EXTENSIONS_DIR}
pwd
COUNTER=0
for URL in ${URLS};
do
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
pwd
cd ${EXTENSIONS_DIR}
EXTENSION_NAME=`echo ${URL} | awk -F'/' '{ print $8 }'| awk -F'.' '{ print $1 }'`
echo "---------------------------------------------------------------------------"
echo EXTENSION URL: ${URL}
echo EXTENSIONS HOME: ${EXTENSIONS_HOME}
echo EXTENSION DIRECTORY: ${EXTENSIONS_DIR}
echo EXTENSION NAME: ${EXTENSION_NAME}
echo "---------------------------------------------------------------------------"
echo "---------------------------------------------------------------------------"
echo Downloading in:
pwd
echo "---------------------------------------------------------------------------"
wget -c ${URL}
echo UNZIPPING TO: ${EXTENSIONS_DIR}/${EXTENSION_NAME}
unzip -q -o -d ${EXTENSIONS_DIR}/${EXTENSION_NAME} ${EXTENSION_NAME}.xpi
echo REMOVING: ${EXTENSIONS_DIR}/${EXTENSION_NAME}.xpi
rm ${EXTENSIONS_DIR}/${EXTENSION_NAME}.xpi
#ID=`grep -A3 '<!-- Firefox -->' ${EXTENSION_NAME}/install.rdf | grep \} | awk -F'>' '{ print $2}'| awk -F'<' '{ print $1}'`
ID=`xmlstarlet sel \
-N rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# \
-N em=http://www.mozilla.org/2004/em-rdf# \
-t -v "//rdf:Description[@about='urn:mozilla:install-manifest']/em:id" \
${EXTENSION_NAME}/install.rdf`
echo ID NUMBER: ${ID}
echo NUMBER LENGTH: ${#ID}
if [ -z "${ID}" ];
then
echo "ID empty: poorly formated rdf. next."
fi
echo "---------------------------------------------------------------------------"
echo ID: ${ID}
echo "---------------------------------------------------------------------------"
mv ${EXTENSIONS_DIR}/${EXTENSION_NAME} ${ID}
mkdir -p /var/tmp/extensions
mkdir -p ~/.mozilla/extensions/
cp -a ${ID} /usr/share/xul-ext/
#cp -a ${ID} ~/.mozilla/extensions/
#cp -a ${ID} /var/tmp/extensions/
#cp -a ${ID} /usr/lib/iceweasel/extensions/
#cp -a ${ID} /usr/share/mozilla/extensions/
#cp -a ${ID} ~/.moonchild productions/pale moon/*.default/extensions
COUNTER=$((COUNTER + 1))
echo ${COUNTER}
done
# FIXME installing extensions from the commandline - http://askubuntu.com/questions/73474/how-to-install-firefox-addon-from-command-line-in-scripts
# xulstore.json has layout settings. But exists in a autogenerated profile at first run.
# FIXME xulstore.json location needs fixing.
# toolbar-menubar
# PersonalToolbar
bash -c "cat > xulstore.json" <<'EOF'
{
"chrome://browser/content/browser.xul": {
"PersonalToolbar": {
"collapsed": "false"
},
"main-window": {
"height": "1040",
"screenX": "640",
"screenY": "92",
"sizemode": "normal",
"width": "1280"
},
"navigator-toolbox": {
"iconsize": "small"
},
"sidebar-title": {
"value": ""
},
"toolbar-menubar": {
"autohide": "false"
}
}
}
EOF
OPT[0]='.["toolbar-menubar"] = {"autohide" : "false"}'
OPT[1]='.["PersonalToolbar"] = {"collapsed" : "false"}'
for ((i = 0; i < ${#OPT[@]}; ++i)); do
OPTION="${OPT[$i]}"
jq "${OPTION}" xulstore.json > xulstore.json.new && \
mv -b xulstore.json.new xulstore.json
done