尽管传递了一个 URL,xdg-open 只在新的 Chromium 窗口中打开一个新选项卡

Léo*_*Lam 11 chromium xdg-open

当我使用xdg-open在 Chromium 中打开链接时,它只会导致一个新的 Chromium 窗口,只有新的标签页,没有其他内容。

例如,xdg-open 'https://askubuntu.com'只会打开一个新的 Chromium 窗口,而不会打开 AskUbuntu。

似乎 URL 没有传递给 Chromium,因为直接调用 Chromium确实可以工作并打开所需的页面:chromium-browser 'https://askubuntu.com' works

显然,Chromium 是默认浏览器。

问题可能出在哪里,我该如何解决?当某些程序用于xdg-open打开链接而您无法转到所需页面,甚至无法查看打开的内容时,这尤其令人讨厌。

Léo*_*Lam 16

问题确实是xdg-open没有将请求的 URL 传递给 Chromium,所以它不是运行chromium-browser url-here,而是执行chromium-browser它只是打开一个新窗口。

在互联网上搜索后,我发现xdg-open使用了一些位于/usr/share/applications.

/usr/share/applications/chromium-browser.desktop 似乎是正确的,因为它被配置为正确地将 URL 传递给 Chromium:

$ grep Exec /usr/share/applications/chromium-browser.desktop
Exec=chromium-browser %U
...
Run Code Online (Sandbox Code Playgroud)

那么出了什么问题呢?事实证明,还有另一个位置xdg-open使用并且优先于/usr/share/applications.

$ grep Exec ~/.local/share/applications/chromium-browser.desktop
Exec=/usr/lib/chromium-browser/chromium-browser --use-system-title-bar --ppapi-flash-path=/usr/lib/pepflashplugin-installer/libpepflashplayer.so --ppapi-flash-version=14.0.0.125
Run Code Online (Sandbox Code Playgroud)

我不知道为什么还有另一个 Chromium-browser.desktop,但请注意,此 Exec 行不传递 URL;它缺少%U. 所以我只是简单地附加%U到这一行。这立即解决了xdg-openChromium 的所有问题。