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

Pet*_*ves 29 browser lubuntu 15.04

我在 15.04 64 位 Lubuntu 上,我从他们的网站下载了 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
Run Code Online (Sandbox Code Playgroud)

A.B*_*.B. 29

您可以通过以下方式更改优先级:

sudo update-alternatives --install /usr/bin/x-www-browser x-www-browser google-chrome-stable <priority_as_integer>
Run Code Online (Sandbox Code Playgroud)

例子:

$ 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
Run Code Online (Sandbox Code Playgroud)

后:

$ 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
Run Code Online (Sandbox Code Playgroud)

  • 只有最明显的事情:1)`sudo`:所以它是每个系统的,但应该是每个用户的,甚至更好的每个 shell。2) 绝对路径:所以它需要对系统有深入的了解,只是一点点错别字就完全搞砸了。3) 复杂且难以理解的命令行。4) 意外的 API:Prio 1 通常是最高优先级。我不是说编号错误,但请不要称之为“优先级”。5) 它是一个很好隐藏的功能等等等等。Linux/Debian 中如此重要的功能必须始终为普通人设计,为那些不知道也不关心的人设计。 (3认同)
  • 这不是你的错,因为你的答案是正确的,但这个“解决方案”是完全疯狂的。肯定有人必须发明比这更好的东西。 (2认同)

May*_*hux 9

简而言之:编辑 /var/lib/dpkg/alternatives/x-www-browser 并更改内部优先级


细节

一个最简单也是必须的答案是编辑在 /var/lib/dpkg/alternatives

所以编辑x-www-browser文件

sudo gedit /var/lib/dpkg/alternatives/x-www-browser
Run Code Online (Sandbox Code Playgroud)

输出将是这样的:

auto
/usr/bin/x-www-browser

/usr/bin/firefox
40
/usr/bin/google-chrome-stable
200
/usr/bin/vivaldi-stable
200
Run Code Online (Sandbox Code Playgroud)

现在可以根据需要轻松更改 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
Run Code Online (Sandbox Code Playgroud)

  • 虽然这确实解决了我的问题,但我发现 AB 的解决方案更简洁,因为他通过 `update-alternatives` 界面更改了值。我更喜欢这种方式,因为你永远不知道它还能做什么,除了像你说的那样更改文件。另外从技术上讲,他的解决方案*更容易*,因为他只使用 1 个命令。您使用 1 个命令打开文件,但之后必须进行编辑和保存,而 `update-alternatives --install` 会为您完成此操作。 (3认同)
  • 该解决方案在 Ubuntu 18.04 中仍然有效,并且似乎比重新运行安装命令容易得多。除此之外,您可以一次编辑多个优先级。 (3认同)