NixOSでデフォルトのブラウザを設定する方法は?

NixOSでデフォルトのブラウザを設定する方法は?

私はGnomeでNixOSを使用しており、Chromiumをデフォルトのブラウザに設定したいと思います。

[マイ設定]の[詳細]セクションにあるメインアプリの下には、次のものが表示されます。

ここに画像の説明を入力してください。

ChromiumとFirefoxの両方がシステムにインストールされていますが(Chromium v​​ia ia $ nix-env -i chromium)、「Web」ドロップダウンメニューには表示されず、1つのオプションしか表示されません。

Chromiumをデフォルトのブラウザに設定するにはどうすればよいですか?

答え1

XDG仕様に準拠したアプリケーションの場合

NixOS 21.11以降では、これを設定できますxdg.mime.defaultApplications。たとえば、QutebrowserをデフォルトのWebブラウザとして設定できます。

xdg.mime.defaultApplications = {
  "text/html" = "org.qutebrowser.qutebrowser.desktop";
  "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
  "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
  "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
  "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
}

xdg.mime.enableisがtrueデフォルト値であることを確認してください。それ以外の場合、上記のコードスニペットは機能しません。

電子アプリケーションの場合:

Electronベースのデスクトップアプリケーションは、デフォルトのブラウザインスタンスを取得してDEFAULT_BROWSER環境変数へのリンクを開くように見えます。で見つけることができるバイナリPATHまたは使用するバイナリのフルパスに設定されることが期待されます。

qutebrowserをリセットする別の例:

environment.sessionVariables.DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"

答え2

NixOSはユーザー固有の構成を管理しません。期間。

設定ダイアログボックスに見つからないブラウザの/etc/nixos/configuration.nix場合nix-env

ヒント

パッケージを宣言的および命令的にインストールする場合は、最終的に2つの依存関係ツリーを管理する必要があります。一方は通過しnixos-rebuild --upgrade boot、もう一方は通過しますnix-channel --update && nix-env -u。これは、アップデート手順のいずれかを忘れてしまうと、最終的に古いパッケージをインストールすることになります。

答え3

ホームマネージャの場合:

nrdxpの回答のシステム全体の設定は何らかの理由で無視される可能性があるため、機能せずにホーム管理者を使用している場合は、ユーザーごとに設定してみてください。これを行うにはデフォルトで無効になっているので、に置き換えてmime設定mimeAppsする必要があります。enable = trueフラグメントを調整すると、次のような結果が得られます。

home-manager.users.<YOUR_USER_NAME>.xdg.mimeApps = {
  enable = true;
  
  defaultApplications = {
    "text/html" = "org.qutebrowser.qutebrowser.desktop";
    "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
    "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
    "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
    "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
  };
};

この機能を構成する必要がある各ユーザーに対してこれを行う必要があります。

答え4

@nrdxpの答えにスペルエラーがあります。 sが多すぎますsessionsVariables。やるべきこと:残念ながら、私はコメントする評判が十分ではありません。

environment.sessionVariables.DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"

関連情報