====== Scripter firefox ====== Automatiser des changement des profil firefox via script. Testé sur 78.15-esr Piste alternative pour faire mieux que mes hacks : https://github.com/mozilla/policy-templates (merci @smortex) ===== Changers about:config ===== reconf(){ find "$HOME/.mozilla/firefox/" -name "prefs.js" | while read f do if ! grep -q "$1" "$f" then echo "user_pref(\"$1\", $2);" >> "$f" else #dumbest workaround for browser.uiCustomization.state antislashes a=$(echo $2 | sed "s|\\\|\\\\\\\\\\\|g") sed -i 's|^user_pref("'$1'",.*);|user_pref("'$1'", '$a');|' "$f" fi done } Exemple : #firefox : activer les extensions ajoutées via script reconf "extensions.autoDisableScopes" "0" #firefox : désactiver les brèves/+visité/+highlight reconf "browser.newtabpage.activity-stream.feeds.snippets" "false" reconf "browser.newtabpage.activity-stream.feeds.section.highlights" "false" reconf "browser.newtabpage.activity-stream.feeds.topsites" "false" #firefox : cacher le moteur de recherche ebay reconf "browser.search.hiddenOneOffs" '"eBay"' #firefox : Pocket à désactiver reconf "extensions.pocket.enabled" "false" #firefox : pouvoir cycler entre les onglets avec ctrl+tab/ctrl+maj+tab reconf "browser.ctrlTab.recentlyUsedOrder" "false" #firefox : ne pas avoir les menus qui clignotent dès qu'on utilise tab reconf "ui.key.menuAccessKeyFocuses" "false" #firefox : pas de pub, merci reconf "browser.newtabpage.activity-stream.showSponsored" "false" #firefox : correction fr reconf "spellchecker.dictionary" '"fr"' #firefox : je désactiverai aussi le bouton "profil" de ff & accès zarbos aux marque-page (ça définit tous les placements du coup) reconf "browser.uiCustomization.state" '"{\"placements\":{\"widget-overflow-fixed-list\":[],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"urlbar-container\",\"downloads-button\",\"ublock0_raymondhill_net-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"https-everywhere-eff_eff_org-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"developer-button\"],\"dirtyAreaCache\":[\"nav-bar\",\"widget-overflow-fixed-list\"],\"currentVersion\":16,\"newElementCount\":2}"' ===== Changer les marque pages ===== sudo apt install -y sqlite3 addBookmark(){ fk=$(echo "INSERT INTO moz_places (url, title) VALUES('$1', '$2'); select last_insert_rowid();" | sqlite3 "$f") guid=$(uuidgen | cut -d"-" -f5) echo "INSERT INTO moz_bookmarks (type, fk, parent, position, title, guid) VALUES(1,$fk,3,0,'$2','$guid');" | sqlite3 "$f" } delBookmark(){ echo "DELETE FROM moz_bookmarks WHERE title='$1';" | sqlite3 "$f" } Exemple : find "$HOME/.mozilla/firefox/" -name "places.sqlite" -type f | while read f do delBookmark "Debian" delBookmark "Débuter avec Firefox" addBookmark "https://www.agendadulibre.org/pages/filter" "Agenda du Libre" done ===== Ajouter une extension ===== Pour que les extensions soient activées automatique, vérifiez que "extensions.autoDisableScopes" "0" dans about:config ! Sinon ça devra être activé manuellement dans ff. iAddon() { xpi=$(curl "$1" | grep -o "https://[a-z./0-9_+-]*.xpi") || exit 1 temp=$(mktemp) wget "$xpi" --output-document="$temp" id=$(unzip -p "$temp" "manifest.json" | grep '"id": "' | sed -r 's|.*"(.*)".*|\1|') find "$HOME/.mozilla/firefox/" -name "extensions" -type d | while read f do if ! test -f "$f/$id.xpi" then ln "$temp" "$f/$id.xpi" fi done rm "$temp" } Exemple : #I don't care about cookies iAddon "https://addons.mozilla.org/en-US/firefox/addon/i-dont-care-about-cookies/" #RSS preview iAddon "https://addons.mozilla.org/en-US/firefox/addon/rsspreview/"