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


Answers:


17

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

对于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协议添加处理程序的示例。


您能提及所有官方DE的做法吗?
Oxwivi 2011年

与问题不完全相关,但是您可以在屏幕快照底部完整引用目录吗?谢谢。
Oxwivi 2011年

4
xdg-open基本上只是看您拥有的桌面环境,然后运行gnome-open,gvfs-open,xfce-open等。---我不这么认为。首先,联机帮助页没有这样说,其次,xdg-open在没有桌面环境的情况下也可以完美运行。例如,我将其与i3窗口管理器一起使用。
Alois Mahdal 2014年

在安装应用程序期间,是否有通用的方法来创建新的url /应用程序关联?
jayarjo

14

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

我也用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文件的名称。

    通常,它与“正式”名称不同,而是小写形式,或者完全不同的名称。已安装的.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文件通常包含它们声称可以使用using MimeType字段处理的MIME类型列表。 xdg-mime 手册页说,.desktop文件必须声明MIME类型,然后上述命令才能起作用,但是对我来说,即使缺少该字段,它也似乎可以起作用。(我的意思是,将应用关联并启动应用程序-如果它确实可以处理类型则是另一个问题)。我不确定什么是缺点(也许将来xdg-mime的限制会更多)。



这个答案是最好的方法。提示:1)xdg-mime query filetype FILE是XDG查找哑剧类型的方法。2)您也可以自己编辑默认值,以使事情井井有条,并在以后备份它们:.config/mimeapps.list是文件。
Ciro Santilli新疆改造中心法轮功六四事件

回滚2编辑:@frank,关心解释xdg-mime如何“更好地工作”?IMO 文件是MIME类型的自动执行工具,xdg-mime query filetype xyz.wbemOTOH提供的信息较少,输入的方式更多。
阿洛瓦·马哈德

1
很好的解释和使用桌面文件唯一名称的提示是我一直在寻找的解决方案,谢谢!
安德里亚·里奇阿迪

1
该建议最终帮助我解决了无法使用Linux上的Slack桌面应用程序登录的问题。松弛重定向到浏览器,但随后浏览器使用URI方案重定向回松弛。您的技巧帮助我看到了松弛的URI xdg-mime映射已消失。很高兴,经过一个小时的搜索,我发现了这个!谢谢!
食虫性

2

我想将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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.