我有兩個 Firefox 實例在不同的設定檔下運行:
$ firefox -P default &
...
$ firefox -no-remote -P second &
現在我可以使用以下命令從命令列開啟一個新分頁:
$ firefox -new-tab http://unix.stackexchange.com
但是如何在第二個設定檔中開啟新選項卡?
這:
$ firefox -P second -new-tab http://unix.stackexchange.com
在預設設定檔中開啟一個選項卡,同時:
$ firefox -no-remote -P second -new-tab http://unix.stackexchange.com
抱怨已經有一個實例在該設定檔下運行。
答案1
現在它可以firefox
在 Linux 上運行 29.0:
要開啟firefox
具有不同設定檔的第二個實例:
firefox -P second -new-instance
firefox
要在已運行的作業系統的第二個實例中開啟新分頁:
firefox -P second -remote "openurl(http://example.com,new-tab)"
看Bug 716110 - 將 -new-instance 標誌從現有 -no-remote 標誌中分離出來取得更多提示(例如:Hayo 的貼文)。
正如此錯誤報告的評論中所解釋的,缺少的是可用於以相同方式開啟第一個視窗和第二個選項卡的命令:
這可以透過如下 ( firefox-profile-instance
) 的腳本來完成:
#!/bin/bash
PROFILE="$1"
URL="$2"
if firefox -P "$PROFILE" -remote "ping()" >/dev/null 2>&1 ; then
firefox -P "$PROFILE" -remote "openurl($URL,new-tab)"
else
firefox -P "$PROFILE" -new-instance "$URL" &
fi
現在,雖然具有預設設定檔的 Firefox 已經在運行,但
第一次運行會啟動一個設定檔為「second」的新瀏覽器:
firefox-profile-instance second "http://example.com"
再次執行相同的命令會在同一瀏覽器中開啟第二個選項卡:
firefox-profile-instance second "http://example.com"
答案2
這個答案很大程度上是一個延伸沃克·西格爾上面的答案,我很高興兩者合併。我寫這篇文章只是為了格式化一個新腳本,因為 Firefox 不再支援-remote
.
新版本的 Firefox(使用版本 52 進行測試)支援-new-instance
產生支援遠端呼叫的新實例的選項。對 Firefox 的後續呼叫(如果給定參數-P
)將在正在運行的 Firefox 設定檔中使用給定的設定檔名稱執行操作。
如果您希望將生成和連結開啟合併到一個腳本中,則可以使用pgrep
如下所示的方法來實現:
#!/bin/bash
profile=profile-name
if pgrep --full "^firefox-esr\b.*$profile" > /dev/null; then
firejail --profile=$HOME/.firejail/firefox.jail.profile firefox -P "$profile" "$@" > /dev/null
else
firejail --profile=$HOME/.firejail/firefox.jail.profile firefox -new-instance -P "$profile" "$@"
disown $!
fi
(警告此腳本尚未經過測試,但改編自我使用的腳本)
答案3
根據來自的答案@Att右我開發了以下解決方案,它會根據 URL 自動選擇正確的設定檔。
此包裝器腳本在 Ubuntu Linux 20.04.6 和 Mozilla Firefox 104.0 上進行了測試。
#!/bin/bash
if [[ "$@" =~ .*"google."|"facebook.com"|"instagram.com".* ]]
then
profile=for_evil_sites
else
profile=default
fi
if pgrep --full "firefox\b.*$profile" > /dev/null; then
/usr/bin/firefox -P "$profile" "$@" > /dev/null
else
/usr/bin/firefox --new-instance -P "$profile" "$@" > /dev/null
disown $!
fi
使用名稱firefox
例如 in儲存腳本$HOME/bin/
並確保將載入它而不是標準的 Firefox。 (該目錄必須位於變數 中的原始目錄之前$PATH
。)