如何使用 Firefox 開啟不同設定檔中的外部連結?

如何使用 Firefox 開啟不同設定檔中的外部連結?

我有兩個 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。)

相關內容