3年遅れの回答でごめんなさい、私はたった今このトピックに興味を持ち、この質問を見つけました。
文書化された解決策がどこにも見つからなかったため、ソースコードをチェックアウトしました。ここに、非常に関連性の高い部分があります。http:
//dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
ここで、行末のnullptrは、残念ながらプロファイル引数がSendCommandLine関数に渡されていないことを意味しているため、openurlメッセージを送信する正しいFirefoxウィンドウを選択することはできません。
ただし、ユーザー名が渡され、ユーザー名がLOGNAME環境変数から初期化されていることがわかります。これに基づいて、私は次の解決策を思いつきました:
- 私は、firefox.shと呼ばれるこのスクリプトでfirefoxをラップします。
FOX_PROFILE = facebook
エクスポートLOGNAME = errge。$ FOX_PROFILE
/ opt / firefox / firefox -profile〜/ .mozilla_profiles / $ FOX_PROFILES "$ @"
初めて実行すると、新しいインスタンスが開始され、〜/ .mozilla_profiles / facebookディレクトリが存在している必要があります。
facebookプロファイルが既に実行されている場合に2回目に実行すると、正しく接続されます。
複数の異なる実行中のプロファイルにコマンドを正しく送信できます(もちろん、異なるスクリプトの最初の行でFOX_PROFILEパラメータを変更する必要があります)。
私はこれをLinux上のFirefox 26でテストしましたが、動作します。
または、ここにあなたが使用したいまたは使用したくないかもしれない私の本格的なソリューションがあります:
#!/ bin / bash
セット-e
FOX = / opt / firefox / firefox
メッセージ= $ @
if [-z "$ FOX_PROFILE"]; その後
if [-z "$ {MESSAGE}"]; その後
FOX_PROFILE =デフォルト
そうしないと
FOX_PROFILE = $(kdialog --default default --menu "-$ {MESSAGE}-" default default google google facebook facebook errge errge spam spam)
fi
fi
FOX_PROFILEをエクスポート
#このハックが必要なのは、Firefoxのリモートコマンドラインが送信されるためです。
#プロファイルパラメータを無視します。nsAppRunner.cpp:1505を参照してください。
エクスポートLOGNAME = errge。$ FOX_PROFILE
#execの代わりにバックグラウンド実行を使用するため、動作は
#プロファイルがすでに実行されているときと、それがちょうど
# 起動。
$ FOX -profile〜/ .mozilla_profiles / $ FOX_PROFILE "$ @"
#大成功。
出口0
パラメーターを指定せずにスクリプトを実行すると、デフォルトのプロファイルが自動選択されますが、シェルでFOX_PROFILEを手動で設定することで、スクリプトを上書きできます。コマンドラインでURLが渡されると、それを開くためのプロファイルを常に求められます。これは、主にチャットとメールプログラムからクリックスルーし、その場合は常にプロファイルを選択したいためです(カレンダーのGoogleスパム、誕生日スパムのFacebookなど)。もちろん、使用方法に合わせてロジックを変更できます。これは単なる例であり、重要な知識はLOGNAMEトリックです。
そしてもちろん、このラッパースクリプトがマシンでブラウザーを起動する唯一の方法であることを確認する必要があります。正しいLOGNAMEを設定せずにプロファイルを開くと、そのプロファイルと通信できなくなるためです。このスクリプトを、x-www-browser、firefox、sensible-browserなどの複数のシンボリックリンク名を介してパスの最初に配置し、BROWSER環境変数にも配置しました。これを行う方法は、GNU / Linuxディストリビューションによって異なります。