如何告诉Chrome如何处理磁铁链接?

现在Chrome将它的围裙扔到头上并调用Firefox,它打开了与rtorrent的链接。 我需要做些什么来消除Firefox步骤?

Chrome(或Chromium)协议处理的工作方式与Firefox不同。 Firefox基本上跟踪所有这些,这就是为什么你可以在Preferences的Applications部分配置协议处理(如磁链接)。 但是,Chrome依赖于xdg-open

xdg-open正确处理磁链接之前,您需要做几件事。

  1. 找到要处理磁体链接的程序的桌面文件的名称。 我们假设程序是传输。 它(像往常一样)将其桌面文件放在/usr/share/applications/中,事实上,通过仔细阅读目录列表,我发现我的传输版本实际上是gtk版本,所以它的桌面文件称为transmission-gtk.desktop

  2. 桌面文件可能搞砸了。 因此,您可以检查/usr/share/applications/transmission-gtk.desktop包含以下行:

     Exec=transmission-gtk %U [some lines omitted] MimeType=application/x-bittorrent;x-scheme-handler/magnet; 

    注意Exec行中的%U 。 这是绝对必要的。 MimeType行应如上所示。

  3. 现在是使用Transmission告诉xdg-open打开磁链的关键步骤。 在终端中,键入:

     xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet 
  4. 如果您使用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更改为gnomekdexfcelxde 。 我选择了xfce因为我实际上有一个Xfce会话,我已经配置并偶尔使用它。

    这种方法的缺点是,如果xdg-open获得更新,你将不得不重做这个。 Arch wiki提出了另一种避免这种缺陷的方法(但有其自身的缺点)。

    警告:最后一步中的选择比看起来更重要。 挑选lxde对我不起作用! xdg-open ,辅助函数open_lxde依赖于pcmanfm (lxde文件管理器),而open_lxde的代码或者pcmanfm的错误pcmanfm

只需将磁铁链接拖动到传输窗口,它就可以正常工作而无需任何调整….我正在使用Lubuntu 12.10的库存版本,没什么特别的….

在Lubuntu中使用qBitorrent从Chrome打开磁铁非常好

xdg-mime默认qBittorrent.desktop x-scheme-handler / magnet

如果你使用xfce并且不想弄乱任何东西,你可以使用我的解决方案。 我通过手动编辑xdg-open修复如下:

首先确保你有mime关联(如前所述,使用xdg-mime)

然后以root身份备份xdg-open(如果适用则为sudo)

# cp /usr/bin/xdg-open /usr/bin/xdg-open.old

最后,编辑为root / 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上使用gnome-open为我解决了问题。

这可以通过编辑/ usr / bin / xdg-open和更改来强制执行

 if [ x"$DE" = x"" ]; then DE=generic fi 

 if [ x"$DE" = x"" ]; then DE=generic fi DE=gnome 

我混合了几个答案(不幸的是,这对我不起作用),并提出了一些使它像魅力一样工作的东西! 无论如何,它在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-open更新时编辑它,但是,嘿,它的工作原理!

我已经尝试了多年来解决这个问题并切换到Chrome,但似乎没有任何效果。 我终于想到了我不知道为什么我之前没有想到它并且效果很好。 我在Mint中使用Tixati,但它应该普遍适用。 Chrome指向usr / bin / transmission-gtk的磁力链接,所以我将其重命名为transmission-gtk.old并将tixati重命名为transmission-gtk并选择chrome中的选项以始终执行此操作并点击启动应用程序,现在mag链接直接进入Tixati就像Firefox一样。 问题终于解决了!