现在,Chrome将其围裙扔到头上,并调用Firefox,后者打开了与rtorrent的链接。我需要做什么来消除Firefox步骤?
/usr/bin/xdg-open
按照“ 洪流磁力链接打开新窗口,但不传送 ” 的可接受答案中的建议打补丁,解决了问题。
现在,Chrome将其围裙扔到头上,并调用Firefox,后者打开了与rtorrent的链接。我需要做什么来消除Firefox步骤?
/usr/bin/xdg-open
按照“ 洪流磁力链接打开新窗口,但不传送 ” 的可接受答案中的建议打补丁,解决了问题。
Answers:
Chrome(或Chromium)协议的处理方式与Firefox不同。Firefox基本上会对其本身进行跟踪,这就是为什么您可以在Preferences的Applications部分中配置协议处理(如磁链)的原因。但是,Chrome依靠xdg-open
。
您需要做几件事,才能xdg-open
正确处理磁链。
找到要处理磁铁链接的程序的桌面文件名。假设程序是Transmission。它(像往常一样)具有其桌面文件,/usr/share/applications/
并且实际上,通过仔细阅读目录列表,我发现我的传输版本实际上是gtk版本,因此其桌面文件称为transmission-gtk.desktop
。
桌面文件可能被弄乱了。因此,您可以检查其中是否/usr/share/applications/transmission-gtk.desktop
包含以下行:
Exec=transmission-gtk %U
[some lines omitted]
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
注意%U
执行行中的。这是绝对必要的。MimeType行应如上所示。
现在是告知xdg-open
使用“变速箱”打开磁铁链接的基本步骤。 在终端中,键入:
xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet
(如果使用Gnome,KDE,Xfce或LXDE,则无需执行此步骤。)最后,xdg-open
假设您正在运行以下标准桌面环境之一:gnome,kde,xfce和lxde。如果不是,xdg-open
将无法在磁铁链接上工作。根据Arch Wiki的建议,您可以简单地进行修改/usr/bin/xdg-open
。在文件末尾,您将找到以下部分开头:
detectDE
if [ x"$DE" = x"" ]; then
DE=generic
更改generic
到之一gnome
,kde
,xfce
,或lxde
。我之所以选择它,是xfce
因为我实际上已经配置并偶尔使用过一个Xfce会话。
这种方法的缺点是,如果要xdg-open
获取更新,则必须重做。Arch Wiki建议了另一种避免此缺陷的方法(但有其缺点)。
警告:最后一步的选择比看起来更重要。选货lxde
对我不起作用!在中xdg-open
,helper函数open_lxde
依赖于pcmanfm
(lxde文件管理器),并且其中的代码有问题,open_lxde
或者可能是因为pcmanfm
错误。
xdg-mime default deluge.desktop x-scheme-handler/magnet
将其与Deluge关联。
mate
没有工作(我本来期望,因为我跑MATE),但gnome
做到了。
只需将磁铁链接拖动到“传输”窗口中,它对我来说就可以正常工作,而无任何调整。
如果您使用xfce并不想弄乱任何东西,则可以使用我的解决方案。我通过手动编辑xdg-open进行了修复,如下所示:
首先,确保您具有关联的mime(如前所述,与xdg-mime关联)
然后以root身份备份xdg-open(如果适用,则为sudo)
# cp /usr/bin/xdg-open /usr/bin/xdg-open.old
最后,以根目录/ usr / bin / xdg-open进行编辑,找到open_xfce()并添加带有+标记的行,例如带有nano的行
# nano /usr/bin/xdg-open
open_xfce()
+ if [ "\`echo $1 | sed -n 's/\(^[[:alnum:]+\.-]*\):.*$/\1/p'\`" == "magnet" ]; then
+ gnome-open "$1"
+ else
exo-open "$1"
+ fi
它只添加了磁链的例外,因此它们将使用gnome-open而不是exo-open来打开。
希望能帮助到你。
我发现没有其他建议对我有用,但这在Debian / Xfce(来自http://fluxcode.net/archives/57)下成功了:
在/ usr / bin / xdg-open中,将以下行添加到open_xfce()
open_xfce()
{
if(echo "$1" | grep -q '^magnet:'); then
transmission-gtk "$1"
if [ $? -eq 0 ]; then
exit_success
fi
fi
exo-open "$1"
alt.os.linux.slackware中的一个人找到了解决方案:
http://www.void.gr/kargig/blog/2012/01/24/open-magnet-urls-with-xdg-open/
我混了几个答案(不幸的是,这对我没用),并提出了使它像魔术一样起作用的东西!无论如何,它可以在XFCE下的Linux Mint 16上工作。
备份/ usr / bin下的xdg-open,使用sudo打开xdg-open,然后使open_xfce()函数完全像这样:
open_xfce()
{
if (echo "$1" | grep -q '^magnet:'); then
gnome-open "$1"
else
exo-open "$1"
fi
}
它很脏,您需要在每次打开xdg的更新中都对其进行编辑,但是,它可以正常工作!
google-chrome -version