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

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

xdg-open基本上只是看看你有哪个桌面环境,然后运行gnome-open,gvfs-open,xfce-open等。请参阅下面的桌面环境特定说明……

地精

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

gconf-editor显示带有xchat配置的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:描述这个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/ ,其中是冒号前URI的一部分,例如“http”,“mailto”“irc”或“magnet”。 以下是有效MIME类型的示例:

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

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

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

    该命令实际上意味着“列出该目录下包含单词’Transmission’的文件”。 某些应用程序可能仅为用户安装,在这种情况下,路径将是~/.local/share/applications

    如果您的“奇怪”应用程序可能根本没有该文件,您可以随时创建一个(并可能将其发送给应用程序开发人员)。 简单的方法是复制现有的字段,重写您理解的字段并删除不存在的字段。 有关详细信息,请参阅规范 。

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

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

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

    通常命令不会输出任何东西 – 没关系。 如果您想validation刚刚执行的操作,或者在不打开任何MIME类型的情况下查看当前分配给任何MIME类型的内容:

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

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

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

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

注意2: .desktop文件通常包含他们声称能够使用MimeType字段处理的MIME类型列表。 xdg-mime手册页说.desktop文件必须在上述命令工作之前声明MIME类型,但对我来说,即使字段丢失也似乎有效。 (我的意思是,关联将被应用,应用程序将启动 – 如果它真的可以处理类型是一个不同的问题)。 我不确定什么是缺点(也许将来xdg-mime会更具限制性)。