異なるプロファイルで実行される 2 つの Firefox インスタンスがあります。
$ firefox -P default &
...
$ firefox -no-remote -P second &
これで、コマンドラインから新しいタブを開くことができます。
$ firefox -new-tab http://unix.stackexchange.com
しかし、2番目のプロファイルで新しいタブを開く方法は?
これ:
$ 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
別の設定ファイルを使用して2番目のインスタンスを開くには、次の手順に従ってください。
firefox -P second -new-instance
firefox
すでに実行されているオペレーティングシステムの2番目のインスタンスで新しいタブを開くには、次の手順を実行します。
firefox -P second -remote "openurl(http://example.com,new-tab)"
バラよりバグ 716110 - 既存の -no-remote フラグと -new-instance フラグを分離します。より多くのヒントを入手してください(例:Hayoの投稿)。
このバグレポートの説明で説明したように、最初のウィンドウと2番目のタブを同じ方法で開くために使用できるコマンドがありません。
これは、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がすでに実行されている間に
これを初めて実行すると、プロファイルが「2番目」の新しいブラウザが起動します。
firefox-profile-instance second "http://example.com"
同じコマンドを再実行すると、同じブラウザで2番目のタブが開きます。
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
さんの回答に基づいて@そうです。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
。)