firefox 是 ubuntu 20.04+ 默认浏览器,但默认值由 xdg-settings(桌面环境级)、update-alternatives(系统命令级)和 ~/.config/mimeapps.list(用户级 mime 关联)三机制共同决定,任一配置错误均可能导致行为不一致。

Firefox 是 Ubuntu 20.04 及更新版本的默认浏览器,但“默认”不是写死的,而是由三套机制共同决定:xdg-settings、update-alternatives 和 ~/.config/mimeapps.list。改错其中任何一个,都可能让设置不生效或行为不一致。
用 xdg-settings 设置桌面环境级默认浏览器
这是 GNOME、KDE 等现代桌面环境真正读取的配置,控制点击链接、xdg-open https://example.com 等行为。
- 查看当前值:
xdg-settings get default-web-browser—— 输出应为类似firefox.desktop或google-chrome.desktop - 设为 Chrome:
xdg-settings set default-web-browser google-chrome.desktop - 设为 Firefox:
xdg-settings set default-web-browser firefox.desktop - 注意:
.desktop文件名必须准确,大小写敏感;Chrome 安装后通常注册为google-chrome.desktop,而非chrome.desktop或chromium-browser.desktop - 该命令只影响当前用户,无需
sudo;若执行后无反应,说明对应.desktop文件未被系统识别(常见于手动解压安装的 Chrome)
用 update-alternatives 设置系统级命令别名
它不直接决定“点击链接开哪个浏览器”,而是管理 x-www-browser 这个符号链接,供脚本或旧工具(如某些 IDE、终端命令)调用。和 xdg-settings 并行存在,但优先级更低。
- 列出所有候选:
sudo update-alternatives --config x-www-browser - 交互选择后,它会把
/usr/bin/x-www-browser指向你选的可执行文件(如/usr/bin/firefox) - 非交互式设置(适合脚本):
sudo update-alternatives --set x-www-browser /usr/bin/google-chrome - 如果
google-chrome不在列表里,需先用--install注册(见下条) - 常见坑:
update-alternatives不感知.desktop文件,只认二进制路径;误配会导致sensible-browser或某些开发工具打开错误程序
手动修复 mimeapps.list 防止配置漂移
当 xdg-settings 失效(比如桌面环境缓存未刷新、远程 SSH 会话中执行)、或你想彻底绕过上层抽象时,直接编辑这个文件最可靠。
- 路径:
~/.config/mimeapps.list - 确保
[Default Applications]小节下有这两行:x-scheme-handler/http=google-chrome.desktopx-scheme-handler/https=google-chrome.desktop - 如果该文件不存在,新建即可;若存在但没这两个键,添加进去;若已有其他值(如
firefox.desktop),直接覆盖 - 改完后无需重启,但部分应用(如 Nautilus 文件管理器)可能需要重新打开才能生效
- 注意:不要动
[Added Associations]或[Removed Associations]节,它们用于 MIME 类型关联,和浏览器无关
验证是否真的生效
别只信“设置成功”提示,真实场景才见真章。
- 终端里运行:
xdg-open https://httpbin.org/html—— 应该弹出目标浏览器窗口 - 在文件管理器里双击一个
.html文件 —— 应打开目标浏览器,而非其他 - 检查:
grep -A2 "\[Default Applications\]" ~/.config/mimeapps.list和xdg-settings get default-web-browser输出是否一致 - 如果仍跳转到错误浏览器,大概率是
mimeapps.list里http/https行没对齐,或 Chrome 的.desktop文件权限不对(应为 644,且内容含Exec=...和Terminal=false)
最常被忽略的是:Chrome 官方 .deb 包安装后自动注册 google-chrome.desktop,但通过 Snap 或 Flatpak 安装的版本使用不同 ID(如 google-chrome-stable.desktop 或 com.google.Chrome.desktop),xdg-settings 必须用对名字,否则静默失败。











