我的问题是,许多程序调用 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
- 更多信息和参考