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

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

我想使用xdg-open打开irc://链接,如何才能生成所需的参数?

答案1

我将用magnet:URI 类型和传输(即 bittorent 的情况)来描述这一点,但相同的方法可以应用于任何方案或文件类型。

我也用 Debian Jessie 检查了这个问题,我实际上没有 Ubuntu 机器,但我相信它应该可以正常工作(至少对于xdg-开放,请注意文件管理器可能选择使用不同的逻辑)。

  1. 找出 MIME 类型字符串。 对于文件 MIME 类型,你可以使用以下方法查找文件命令:

    $ 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 文件的名称。

    通常它与“官方”名称不同,而是它的小写版本,或完全不同的名称。已安装的 .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...),您总是使用 只有名字,而不是完整路径。

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

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

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

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

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

笔记2:.desktop 文件通常包含他们声称能够使用MimeType字段处理的 MIME 类型列表。 xdg-mime 手册页说,.desktop 文件必须声明 MIME 类型,上述命令才能运行,但对我来说,即使缺少该字段,它似乎也能工作。(我的意思是,关联将被应用,应用程序将启动——如果它确实可以处理类型是另一个问题)。我不确定缺点是什么(也许将来xdg-mime将更加严格)。

答案2

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 如何通过 中的 gconf 设置来实现这一点/desktop/gnome/url-handlers/。请参阅xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas作为示例。

桌面环境

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

KDE 使用 kde-open 或 kfmclient,具体取决于可用的版本以及您拥有的 KDE 版本。

西门子

XFCE 使用一个名为 exo-open 的程序,该程序无法配置或添加 uri 处理程序。查看源代码显示它使用桌面文件仅指定三种类型的程序。TerminalEmulator、WebBrowser 和 EmailClient。

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

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

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

答案3

我想将postman链接与我手动安装的 Postman 应用程序(而不是 chrome 扩展程序)关联起来,以便我可以像这样从浏览器打开 Postman 文档:

在此处输入图片描述

在此处输入图片描述

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

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

为了建立关联,我执行了以下步骤:

  1. 手动安装应用程序(下载并解压为 tar.gz)/home/andrzej.rehmann/software/postman/
  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

相关内容