Firefox on Linux

来自Tsetien’s Wiki
跳转到导航 跳转到搜索
NB
此處所提及的 Linux 解決方案僅適用於 Debian 系列的、使用 KDE 桌面環境的 Linux 發行版。

安裝以及 Profile 相關

使用——

install-firefox.sh
#!/bin/bash
sudo apt remove --autoremove firefox -y
[ -d "$HOME/.mozilla" ] && rm -rf "$HOME/.mozilla"
[ -d "$HOME/.cache/mozilla" ] && rm -rf "$HOME/.cache/mozilla"
sudo apt update
sudo apt install firefox-esr -y
sleep 2
firefox-esr &
sleep 5
pkill -f firefox

來解除現有的 Fire­fox 安裝,並安裝 Fire­fox ESR. 安裝完成後會自動開啟 5 秒然後關閉,以確保其預設的 Pro­file 資料夾建立。之後使用——

firefox-grab-profile.sh
#!/bin/bash
PF=$(grep Path= ~/.mozilla/firefox/profiles.ini | grep default-esr | cut -d= -f2)
if [ -d "$HOME/.mozilla/firefox/$PF" ]; then
	find "$HOME/.mozilla/firefox/$PF" -mindepth 1 -delete
	wget -O /tmp/myfirefoxprofilebackup.7z https://your.domain.com/path/to/your_firefox_profile.7z
	7z x -y /tmp/myfirefoxprofilebackup.7z -o"$HOME/.mozilla/firefox/$PF"
	chmod -R 755 "$HOME/.mozilla/firefox/$PF"
	rm /tmp/myfirefoxprofilebackup.7z
fi

來從 https://your.domain.com/path/to/your_firefox_profile.7z 處下載已經打包好的 Pro­file 壓縮檔(很明顯此處的連結位址需要使用真實的個人 Pro­file 壓縮檔所在位址取代之),然後自動解壓縮至預設 Pro­file 資料夾中。這一步也可以用來日後從網路來源更新(取代)Pro­file 資料夾。

NB
前述之內容已合併至 inst 一篇,故此處將不再更新,只做為歷史保留。

不過,在從網路來源更新 Pro­file(而不是初始安裝時灌入 Pro­file)之前,可能還想要將現有資料夾中的 content-prefs.sqlite, cookies.sqlite, favicons.sqlite, formhistory.sqlite, key4.db, logins.json, permissions.sqlite, places.sqlite 先備份起來。要這麼做,可以手動進入 Fire­fox 的 Pro­file 資料夾然後使用下方第一個 bash 檔來將它們打包,或是使用下方第二個 bash 檔在任意位址將預設的 Pro­file 資料夾內的這幾個檔案打包。(需要將這兩個 bash 檔放入 /usr/local/bin/ 中並將其設為可執行模式。)

fpk
#!/bin/bash
files=("content-prefs.sqlite" "cookies.sqlite" "favicons.sqlite" "formhistory.sqlite" "key4.db" "logins.json" "permissions.sqlite" "places.sqlite")
7z a -t7z -mx=9 -aoa -mfb=273 -md=1024m -ms=on -mqs=on -mtc -mta -mtm -stl -mhe $1 "FxPD_$(date '+%y%m%d-%H%M').7z" "${files[@]}"
fpk-f
#!/bin/bash
PF=$HOME/.mozilla/firefox/$(grep Path= ~/.mozilla/firefox/profiles.ini | grep default-esr | cut -d= -f2)
files=("$PF/content-prefs.sqlite" "$PF/cookies.sqlite" "$PF/favicons.sqlite" "$PF/formhistory.sqlite" "$PF/key4.db" "$PF/logins.json" "$PF/permissions.sqlite" "$PF/places.sqlite")
7z a -t7z -mx=9 -aoa -mfb=273 -md=1024m -ms=on -mqs=on -mtc -mta -mtm -stl -mhe $1 "FxPD_$(date '+%y%m%d-%H%M').7z" "${files[@]}"

使用第一個 bash 檔的好處是,它可以打包任意位址的 Fire­fox 或者 Fire­fox-based 瀏覽器的 Pro­file 資料夾中的這八個檔案,只要手動進入 Fire­fox 或者 Fire­fox-based 瀏覽器的 Pro­file 資料夾所在之處,便可簡單地使用 fpk 來打包。而第二個 bash 檔則鎖定了 Mo­zil­la Fire­fox 這款瀏覽器在作業系統內的預設位址所建立的屬於 Fire­fox ESR 的預設 Pro­file 資料夾。用第二個的好處是,可以在任意位址開啟命令提示然後使用 fpk-f 來將這一預設 Profile 資料夾內的這八個檔案打包到在地。

無論使用哪一個,都可在輸入 fpkfpk-f 時透過追加 -p 來令 7z 提示請求為壓縮檔設定密碼,或者直接使用比如 -p123WSX 來為壓縮檔設定密碼為 ‘123WSX’.

CSS Modification

在 Win­dows 下做好的 Fire­fox Pro­file 可直接放到 Lin­ux 下面去使用,反之亦然。(但對於另一款我連名字都不想提的十分難用的反人類作業系統則不然,嘗試將別的作業系統下做好的 Fire­fox Pro­file 直接放過去會有無盡的問題。)唯 CSS 部分需要在已經調好的 Windows 版本上再做一些小的修改(Windows 下的 CSS 調修可參照此篇): 首先將 userChrome.css 在 Windows 版本之上做如下調整——

userChrome.css (EXCERPENDVM; CSS ver: 4.7.3)
/* @import "./css/appbutton/appbutton_in_titlebar.css"; /**/

然後在 Win­dows 版的 my_userChrome.css 的基礎上,為所有左側沒有小圖示的被改過名字的輔鍵選單 (con­text menu) 項目添加一列 padding-inline-start: 21px;, 具體來說就是要修改下面這些(淡黃色背景突顯列為比照 Win­dows 版本新加的)——

NB
自 Firefox 140 起已無需做此部分修改,因為在 Linux 上已無法實現令圖示與文字分別對齊(或者說實現起來巨麻煩)。
my_userChrome.css (EXCERPENDVM; CSS ver 4.7.1; Firefox ver: 115–138)
#copytabtitleurl_bugbugnow_net-menuitem-_menu0::after {
	content: "Both";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#copytabtitleurl_bugbugnow_net-menuitem-_menu1::after {
	content: "Title(s) only";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#copytabtitleurl_bugbugnow_net-menuitem-_menu2::after {
	content: "URL(s) only";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}

#context-openlinkprivate {
	-webkit-box-ordinal-group: -11 !important;
	-moz-box-ordinal-group: -11 !important;
	-box-ordinal-group: -11 !important;
	order: -11 !important;
}
#context-openlinkprivate label {
	visibility: collapse !important;
	display: none !important;
}
#context-openlinkprivate::after {
	content: "Open in Private Window";
	display: -moz-box;
	padding-inline-start: 21px;
}

#context-stripOnShareLink label {
	visibility: collapse !important;
	display: none !important;
}
#context-stripOnShareLink::after {
	content: "Copy Clean Link (U)";
	display: -moz-box;
	padding-inline-start: 21px;
}

#strip-on-share label {
	visibility: collapse !important;
	display: none !important;
}
#strip-on-share::after {
	content: "Copy Clean (N)";
	display: -moz-box;
	padding-inline-start: 21px;
}

#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-wayback label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-wayback::after {
	content: "Wayback Machine";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-archive label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-archive::after {
	content: "archive.today";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-ghost-archive label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-ghost-archive::after {
	content: "Ghost Archive";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-both label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-url-both::after {
	content: "All above";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-wayback label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-wayback::after {
	content: "Image > Wayback Machine";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-wayback label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-wayback::after {
	content: "Link > Wayback Machine";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-archive label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-archive::after {
	content: "Image > archive.today";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-archive label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-archive::after {
	content: "Link > archive.today";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-ghost-archive label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-ghost-archive::after {
	content: "Image > Ghost Archive";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-ghost-archive label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-ghost-archive::after {
	content: "Link > Ghost Archive";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-both label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-image-url-both::after {
	content: "Image > All above";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-both label {
	visibility: collapse !important;
	display: none !important;
}
#_save-url-to-wayback-machine-firefox-addon-menuitem-_archive-link-url-both::after {
	content: "Link > All above";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}

[id^="_ee9507aa-5b54-4548-a8b1-f1840b6d5c26_"] label {
	visibility: collapse !important;
	display: none !important;
}
[id^="_ee9507aa-5b54-4548-a8b1-f1840b6d5c26_"]::after {
	content: "Background Image";
	display: -moz-box;
	padding-inline-end: 0.8rem;
	padding-inline-start: 21px;
}

這裡當然可以 con­so­li­da­te 一下,原版其實也可以 con­so­li­da­te, 但是我懶得動了。

由於在 Linux 上的 Fire­fox 最好不要去用那個「復刻版」的「Fire­fox 按鈕」,因此有關 app­but­ton 的那些 CSS 修改可以完全跳過——如果是參照此篇來新建 Profile 並新(改)寫 CSS 的話。但是如果是直接使用已經改好的 Win­dows 版的 CSS 檔案,則改動過的 app­but­ton 部分因為也用不到,倒也沒有必要「恢復原樣」。