如何在NixOS中设置默认浏览器?

如何在NixOS中设置默认浏览器?

我正在使用带有 Gnome 的 NixOS,并且想将 Chromium 设置为默认浏览器。

我的设置的“详细信息”部分的“默认应用程序”下显示以下内容:

在此输入图像描述

Chromium 和 Firefox 均已安装在我的系统上(Chromium v​​ia $ nix-env -i chromium),但它们并未显示在“Web”下拉菜单中,该下拉菜单仅显示一个选项。

如何将 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

提示

如果您以声明式和命令式方式安装软件包,您最终将不得不管理两个依赖关系树。一个通过nixos-rebuild --upgrade boot,另一个通过nix-channel --update && nix-env -u。这意味着如果您忘记了任何一个更新过程,您最终都会安装旧的软件包。

答案3

对于家庭经理:

nrdxp 答案上的系统范围设置可能会因某种原因而被忽略,因此,如果它不起作用并且您正在使用家庭管理器,请尝试按用户设置它们。为此,您需要替换mimemimeApps并设置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"

相关内容