
単一プロセスのデフォルト ブラウザをオーバーライドする必要があります。このプロセスは npm スクリプトから手動で開始されます。これをプログラムで実現するために、BROWSER
スクリプトの直前に環境変数をオーバーライドすることにしました。しかし、うまくいきません。システム全体のデフォルト ブラウザが開きます。 を試してみましたxdg-open
が、これもうまくいきません。
簡単に言うと、次のコマンドで、デフォルトのブラウザではなく、指定されたブラウザで指定された URL を開きたいのです。
BROWSER='path to desired browser' xdg-open 'any url'
PS: 私の問題についてもう少し説明します。私はすべてのマシンで Firefox をデフォルトのブラウザとして使用しており、かなり慣れています。しかし最近、ある Web アプリケーションをデバッグしているときに、Firefox 開発ツールで一部のブレークポイントが使用されていないことに気付きました。Chromium をインストールしたところ、そのデバッガは期待どおりに動作しました。開発には storybook を使用していますが、日常的な使用では Firefox をデフォルトの変数として使用しながら、Chromium で開きたいと思っています。
答え1
私は、間違ったブラウザ プロファイルを頻繁に使用するため$BROWSER
、を尊重する状況に限定されない同様のものが必要でした。xdg-open
次のコンポーネントを使用した回避策を次に示します。
BROWSER
変数を読み込み、適切なブラウザを起動するスクリプト。- 現在のデフォルト
.desktop
プロファイルをディレクトリにコピーして上書きします~/.local/share/applications
。 - カスタム スクリプトを使用するには、ファイル
Exec
内のステートメントを変更します。.desktop
BROWSER
フォールバックするには、ログイン シェルで変数を適切なデフォルトに設定します。
ステップバイステップ
次のようなスクリプトを~/bin
ディレクトリに追加しましたcustom-browser
:
$BROWSER "$@"
次に、現在の.desktop
プロファイルを次のように見つけます。
xdg-settings get default-web-browser
すると が得られたのでfirefox.desktop
、それをユーザーのホーム ディレクトリにコピーしました。
cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
Exec
のステートメントを に変更して~/.local/share/applications/firefox.desktop
起動しました/home/{user}/bin/custom-browser
。
今、私は以下を使うことができます:
BROWSER='chromium' xdg-open 'https://startpage.com'
BROWSER='firefox' xdg-open 'https://startpage.com'
変数に基づいて異なるブラウザを開きますBROWSER
。これが何らかの形で役立つことを願っています。
私の使い方
私が使うdirenv
[1]BROWSER
ディレクトリに基づいて変数を設定するには、たとえば、作業ディレクトリではブラウザに作業プロファイルを使用します。
もう 1 つは、アプリを起動してBROWSER=hardened-firefox signal-desktop
、特定のブラウザーでリンクを開くようにアプリを強制することです。
ノート
.desktop
ファイルは環境変数を読み込まないので、Exec=$BROWSER %u
直接追加しても機能しないため、スクリプトが必要です。BROWSER
ログイン シェルの代わりにスクリプト内でフォールバックを設定することもできます。- デフォルトをオーバーライドする代わりに、カスタム ファイルを作成して/
.desktop
でデフォルトを変更することも可能です。オーバーライドを使用すると、"正しく" 設定する方が簡単だとわかりました。xdg-settings
xdg-mime
- URL を最初の位置パラメータとして使用しないブラウザを使用している場合は、
.desktop
スクリプト内でのカスタム処理が簡単になる場合があります。 .desktop
プロファイルが にない場合/usr/share/applications
、または のオーバーライドが$HOME/.local/share/applications
機能しない場合は、代替パス[2] またはディストリビューションのドキュメントを参照してください。
リンク
答え2
export BROWSER='path to desired browser' && xdg-open 'any url'
うまくいくはずです。