我想使用xdg-open
打开irc://
链接,如何才能生成所需的参数?
答案1
我将用magnet:
URI 类型和传输(即 bittorent 的情况)来描述这一点,但相同的方法可以应用于任何方案或文件类型。
我也用 Debian Jessie 检查了这个问题,我实际上没有 Ubuntu 机器,但我相信它应该可以正常工作(至少对于xdg-开放,请注意文件管理器可能选择使用不同的逻辑)。
找出 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
找出应用程序 .desktop 文件的名称。
通常它与“官方”名称不同,而是它的小写版本,或完全不同的名称。已安装的 .desktop 文件位于 /usr/share/applications 下。由于它们是普通文本文件并包含“官方”名称,因此以下命令可以帮助您:
$ grep "Transmission" -l -r /usr/share/applications /usr/share/applications/transmission-gtk.desktop $
该命令实际上意味着“列出此目录下包含单词‘Transmission’的文件”。某些应用程序可能仅为用户安装,在这种情况下路径将是
~/.local/share/applications
。如果您有“奇怪”的应用程序可能根本没有该文件,您可以随时创建一个(并将其发送给应用程序开发人员)。简单的方法是复制一个现有的,重写您理解的字段并删除您不理解的字段。请参阅 规格了解详情。
分配任务使用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:// 处理程序。
这显示了 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...
为了建立关联,我执行了以下步骤:
- 手动安装应用程序(下载并解压为 tar.gz)
/home/andrzej.rehmann/software/postman/
- 在中创建桌面文件
/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
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