无法将 xdg-open url-handler 更改为 Firefox

无法将 xdg-open url-handler 更改为 Firefox

我的问题是,许多程序调用 xdg-open 来打开网站,但在我的 Manjaro 系统(基于 Arch Linux)上,这在某种程度上绑定到了 cups :)

当这样的 xdg-open 调用发生时,CPU 使用率会上升很多,但没有任何反应。我重新启动,因为笔记本电脑很快就会变热。

~ $ xdg-settings get default-web-browser
cups.desktop

当我想改变它时,我得到以下响应:

~ $ xdg-settings set default-web-browser firefox.desktop
xdg-settings: $BROWSER is set and can't be changed with xdg-settings

我可以继续更改浏览器的环境变量,并且我已修复,但仅限于这一个终端。我如何才能使此更改永久生效或将其添加到自动启动中?

我正在使用:i3 4.12,鱼壳

答案1

我遇到了这个问题,因为每次我安装 Chromium 时它都会将自己设置为默认浏览器。

使用xdg-mime修复:

xdg-mime default firefox.desktop x-scheme-handler/https x-scheme-handler/http

在我的 Arch Linux 系统上,这向 中添加了两行~/.config/mimeapps.list,将 HTTP 和 HTTPS 与 Firefox 相关联。

现在我可以同时安装 Firefox 和 Chromium,并将 Firefox 作为默认浏览器。

答案2

/etc/profile检查和中的 BROWSER 变量/etc/environment,最终检查~/.bashrc.它可能已设置为/usr/bin/xdg-open,因此您应该考虑更改它以避免递归调用。

答案3

显然,xdg-settings不喜欢BROWSER在当前 shell 中设置该变量。删除它会让它高兴:

~ $ unset BROWSER
~ $ xdg-settings set default-web-browser firefox.desktop

上面的第一个命令将仅更改该终端的变量,但第二个命令(这是目标)将跨终端生效。

在我的机器上,它看起来像这样:

~ $ grep -sch BROWSER /etc/* ~/.*rc | uniq
0

~ $ xdg-settings get default-web-browser
cups.desktop

~ $ xdg-settings set default-web-browser firefox.desktop

xdg-settings: $BROWSER is set and can't be changed with xdg-settings

~ $ (
  unset BROWSER
  xdg-settings set default-web-browser firefox.desktop
)

~ $ xdg-settings get default-web-browser
firefox.desktop

答案4

对我来说有效的是编辑文件~/.config/mimeapps.list。这就是您使用前面提到的 xdg-mime 命令在后台执行的操作。好处是您可以轻松查看哪些是默认值以及哪些文件。更多细节:

  • 该目录~/.local/share/applications包含每个用户应用程序的 .desktop 文件,您可以将其“链接”到 xdg-open。
  • 正如我所提到的,要将这些应用程序之一设置为任何所需文件类型的默认应用程序,请编辑文件~/.config/mimeapps.list
  • 提示:尽管已弃用,但一些应用程序仍然可以读取/写入~/.local/share/applications/mimeapps.list.为了简化维护,只需将其符号链接到~/.config/mimeapps.list
  • 更多信息和参考

相关内容