如何更改x-www-browser的优先级?

我使用的是15.04 64位的Lubuntu,并且从Chrome官网下载了Chrome浏览器,因为有时候它很有用。但是我想保持Firefox作为我的默认浏览器,尽管我已经将其设置为“默认浏览器”,但当我执行“x-www-browser”时它仍然无法运行。然后我手动使用“update-alternatives”脚本将Firefox设置为默认浏览器,但让我感到困惑的是为什么Chrome将自己的优先级设为200。我并不认为Chrome比他们自己高,那么我该如何更改优先级呢?
现在我已经将Firefox设置为默认应用程序,但实际上它不应该成为默认应用程序,因为我明确在Firefox界面中将其设置为默认。
  Selection    Path                           Priority   Status
------------------------------------------------------------
  0            /usr/bin/google-chrome-stable   200       auto mode
  1            /usr/bin/chromium-browser       40        manual mode
* 2            /usr/bin/firefox                40        manual mode
  3            /usr/bin/google-chrome-stable   200       manual mode

11+1 对于“我不认为Chrome自己那么高大上”;-) - mirabilos
在2022年,Brave浏览器是优先选择201。他们认为自己比Chrome更好。浏览器之战。 - Klimaat
这意味着浏览器软件包的维护者不应被赋予任何设置优先级的权力。这个权力应该授予发行版维护者委员会,并且默认优先级应该相对较低。例如,Debian 的逻辑选择是将所有开源浏览器的优先级设置得比任何闭源浏览器更高。 - Nikita Kipriyanov
3个回答

您可以通过以下方式更改优先级:
sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser google-chrome-stable <priority_as_integer>

例子:

之前

$ sudo update-alternatives --config x-www-browser 
There are 2 choices for the alternative x-www-browser (providing /usr/bin/x-www-browser).

  Selection    Path                         Priority   Status
------------------------------------------------------------
* 0            /usr/bin/google-chrome-beta   150       auto mode
  1            /usr/bin/firefox              150       manual mode
  2            /usr/bin/google-chrome-beta   150       manual mode

之后:

$ sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/google-chrome-beta 50
update-alternatives: using /usr/bin/firefox to provide /usr/bin/x-www-browser (x-www-browser) in auto mode

$ sudo update-alternatives --config x-www-browser                                                        
There are 2 choices for the alternative x-www-browser (providing /usr/bin/x-www-browser).

  Selection    Path                         Priority   Status
------------------------------------------------------------
* 0            /usr/bin/firefox              150       auto mode
  1            /usr/bin/firefox              150       manual mode
  2            /usr/bin/google-chrome-beta   50        manual mode

3这不是你的错,因为你的答案是正确的,但这个“解决方案”完全疯狂。肯定有人必须发明出比那更好的东西来。 - Tino
@Tino: 论点它。 - Marco Sulla
5只有最明显的几点:1)sudo:所以它是针对整个系统的,但应该是针对每个用户甚至更好地针对每个shell。2)绝对路径:所以它需要对系统有深入的了解,只要稍微打错一个字母就会完全搞砸。3)复杂而难以理解的命令行。4)意外的API:通常Prio 1是最高优先级。我不是说编号是错误的,但请不要称之为“优先级”。5)这是一个隐藏得很好的功能等等等等。在Linux/Debian中,这样重要的功能必须始终考虑到普通人的需求,那些不了解也不关心的人。 - Tino
1大多数“普通人”甚至都不会遇到x-www-browser,大多数图形界面应用程序会遵守您的桌面环境的文件关联规则,而大多数命令行工具会遵守BROWSER环境变量。 - Jonathan Baldwin
1@JonathanBaldwin 普通人对于x-www-browserEnvironment或者Variable一无所知。然而,在幕后,他们却受到了x-www-browser的影响。拿大众排放丑闻来比较:柴油卡车司机感到不满,因为他们知道自己受到了影响。但是,他们对AdBlue以及其工作原理一无所知。更重要的是:他们从来不想知道,也没有必要知道!普通人并非火箭科学工程师,即使是大多数火箭科学工程师也不需要了解汽车中的AdBlue。 - Tino
@Tino "然而,它们在幕后受到 x-www-browser 的影响" 受什么影响?找一个你所说的“普通人”会使用并依赖于 x-www-browser 的应用程序的例子,提交一个错误报告,我会给它点赞。大多数应用程序应该使用 xdg-open。x-www-browser 只适用于 Debian 及其衍生版本。 - Jonathan Baldwin
s/x-www-browser/update-alternatives/g - Tino
没有足够的声望来进行负评,但是这个回答似乎是错误的,因为问题是在问如何改变优先级,而不是重新安装一个新的优先级。@Maythux 给出了正确的答案。 - JoshuaCWebDeveloper

简而言之:编辑 /var/lib/dpkg/alternatives/x-www-browser 文件,并修改其中的优先级。

细节

最简单且必须的答案是编辑位于/var/lib/dpkg/alternatives的管理更新备选文件。

因此,请编辑x-www-browser文件。

sudo gedit /var/lib/dpkg/alternatives/x-www-browser

输出将会是这样的:
auto
/usr/bin/x-www-browser

/usr/bin/firefox
40
/usr/bin/google-chrome-stable
200
/usr/bin/vivaldi-stable
200

现在可以根据你想要的任意更改 Chrome 的优先级(200),然后保存。(我改成了 50)

检查新的设置。

update-alternatives --query x-www-browser 
Link: x-www-browser
Status: auto
Best: /usr/bin/vivaldi-stable
Value: /usr/bin/google-chrome-stable

Alternative: /usr/bin/firefox
Priority: 40

Alternative: /usr/bin/google-chrome-stable
Priority: 50

Alternative: /usr/bin/vivaldi-stable
Priority: 200

3虽然这个方法解决了我的问题,但我觉得A.B.的解决方案更加简洁,因为他通过update-alternatives界面来改变值。我更喜欢这种方式,因为除了像你说的那样改变文件之外,你永远不知道它还做了什么其他的事情。从技术上讲,他的解决方案更简单,因为他只使用了一个命令。你用一个命令打开文件,但之后必须进行编辑和保存,而update-alternatives --install会为你完成这些操作。 - Peter Raeves
3这个解决方案在Ubuntu 18.04仍然有效,并且似乎比重新运行安装命令要简单得多。除此之外,您还可以同时编辑多个优先级。 - Giles B
1在2022年的Debian 11.4版本中仍然有效。 我个人认为,出于与之前评论中所述的相同原因,这应该是被接受的解决方案。 - ChennyStar
可以确认这是Ubuntu 20.04的正确答案。 - JoshuaCWebDeveloper
我手动编辑了文件,现在出现了update-alternatives: error: /var/lib/dpkg/alternatives/x-www-browser corrupt: unexpected end of file while trying to read master file的错误。 - Nairum
警告:如果您手动编辑文件,请确保文件以两行空行结尾! - Nairum

我已经将qutebrowser安装到了~/.local/bin目录下,该目录已经添加到了我的$PATH环境变量中。我之前是通过输入可执行文件的完整路径来运行它的,也就是说我需要执行以下命令:
sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser $HOME/.local/bin/qutebrowser 200

而不是仅将qutebrowser作为倒数第二个参数使用(因为update-alternatives抱怨路径不是绝对路径) 然后

update-alternatives --config x-www-browser

编辑:我在Debian Buster/Sid上,无论如何希望对你有所帮助。 编辑2:解释为什么我必须指定qutebrowser的完整路径。

你能具体说明你的答案与被接受的答案有何不同吗? - Marc Vanhoomissen
1你是在问为什么你必须使用完整路径来运行qutebrowser吗? - Charles Green