当前位置: 首页>>技术教程>>正文


如何设置新的xdg-open设置?

问题描述

我想使用xdg-open打开irc://链接,如何设置所需的参数?

最佳答案

xdg-open基本上只是看您拥有的桌面环境,然后运行gnome-open,gvfs-open,xfce-open等。有关桌面环境的特定说明,请参见下文。

Gnome

Gnome使用gnome-open程序,该程序使用gconf存储所有内容。例如,在装有运行gnome-open的Ubuntu 10.10的计算机上,irx://blah会打开xchat,因为xchat包含一个gconf设置补丁,用于添加irc://处理程序。

这显示了gnome如何使用/desktop/gnome/url-handlers/中的gconf设置来做到这一点。请参见xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas作为示例。

KDE

对于KDE,您应该查看/usr /share /kde4 /services /中的.protocol文件,为您的新协议创建一个新协议,并将其放在〜/.kde /share /kde4 /services /中,如果它超级有用的话,那么考虑将其添加到软件包中以作为其他用户的修补程序。

KDE使用的是kde-open还是kfmclient,具体取决于可用的版本和所使用的KDE版本。

XFCE

XFCE使用一个名为exo-open的程序,该程序没有任何配置或添加uri处理程序的方法。查看源代码可以发现它使用桌面文件来仅指定三种类型的程序。 TerminalEmulator,WebBrowser和EmailClient。

使用XFCE4(可能还有其他),可以配置xdg-open来定义自定义协议处理程序。在某些情况下,您必须创建/编辑以下文件:

〜/.local /share /applications /protocolhandler.desktop〜/.local /share /applications /mimeapps.list

在stackexchange.com 2上提供了为ed2k协议添加处理程序的示例。

次佳答案

我将使用magnet: URI类型和传输(即bittorent的情况)对此进行描述,但是可以将相同的方法应用于任何方案或文件类型。

我也用Debian Jessie进行了检查,实际上我没有Ubuntu机器,但我认为它应该可以正常工作(至少对于xdg-open,请注意文件管理器可能会选择使用不同的逻辑)。

  1. 找出MIME类型字符串。对于文件MIME类型,可以使用file命令找到它:

    $ file -i Broken_Blossoms.webm
    Broken_Blossoms.webm: video/webm; charset=binary
    $

    对于上述文件,MIME类型为video/webm

    对于URI处理程序,类型为x-scheme-handler/<scheme>,其中<scheme>是冒号之前URI的一部分,例如”http”,”mailto”,”irc”或”magnet”。以下是有效的MIME类型的示例:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. 找出应用程序.desktop文件的名称。

    通常它与”official”名称不同,而是小写版本,或者名称完全不同。已安装的.desktop文件位于/usr /share /applications下。由于它们是普通的文本文件,并且包含”official”名称,因此以下命令可以为您提供帮助:

    $ grep "Transmission" -l -r /usr/share/applications
    /usr/share/applications/transmission-gtk.desktop
    $

    该命令有效地表示“列出此目录下包含单词’Transmission’的文件”。某些应用程序可能仅为用户安装,在这种情况下,路径为~/.local/share/applications

    如果您有”strange”应用程序,可能根本没有该文件,则可以始终创建一个文件(并可能将其发送给应用程序开发人员)。一种简单的方法是复制一个现有字段,重写您了解的字段,然后删除您不了解的字段。有关详细信息,请参考specification

  3. 使用xdg-mime命令进行分配:

    $ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet
    $

    请注意,无论文件实际位于何处(/usr/share/applications、~/.local/share/applications …),您始终仅使用名称,而不使用完整路径。

    通常,该命令不会输出任何内容-可以。如果要验证您刚才所做的事情,或者查看当前分配给任何MIME类型的内容而无需打开它:

    $ xdg-mime query default x-scheme-handler/magnet
    transmission-gtk.desktop
    $

注意1:如果要检出其他MIME类型,可以查看/etc/mime.types。它不包含世界上所有的类型;例如URI处理程序,但它可以用于处理关联的”aggressive”形式。例如:

grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop

将所有已知的视频格式与VLC相关联。

注意2:.desktop文件通常包含它们声称可以使用MimeType字段处理的MIME类型的列表。 xdg-mime手册页指出,.desktop文件必须声明MIME类型,然后上述命令才能起作用,但是对我来说,即使缺少该字段,它也似乎可以起作用。 (我的意思是,将应用关联并启动应用程序-如果它确实可以处理类型则是另一个问题)。我不确定什么是缺点(也许将来xdg-mime的限制会更多)。

第三种答案

我想将postman链接与手动安装的Postman应用程序(而不是chrome扩展名)相关联,以便可以从浏览器中打开Postman文档,如下所示:

我想要关联的链接如下所示:

postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...

要进行关联,我执行了以下步骤:

  1. /home/andrzej.rehmann/software/postman/中手动安装该应用程序(下载并解压缩tar.gz)

  2. /usr/share/applications/Postman.desktop中创建一个桌面文件

[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
  1. 通过运行以下命令将postman xdg链接与应用程序相关联:

xdg-mime default Postman.desktop x-scheme-handler/postman


如果有人感兴趣,我可以使用此配置:https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10330.html,未经允许,请勿转载。