xdg-open命令如何知道要使用哪个应用程序打开文件?


21

我希望xdg-open命令使用在默认文件管理器中双击文件时打开的同一应用程序,但这并不总是正确的。

例如,我的DE是XFCE,我的文件管理器是Thunar,而我的默认图片查看器是Ristretto。但是,xdg-open example.png在Pinta中打开示例PNG文件。为什么?

Answers:


23

xdg-open是独立于桌面的工具,用于配置用户的默认应用程序。许多应用程序在内部调用xdg-open命令。在桌面环境(例如GNOME,KDE或Xfce)中,xdg-open只是将参数传递给那些桌面环境的文件打开器应用程序(例如gvfs-open,kde-open或exo-open)。这意味着关联由桌面环境决定。如果未检测到桌面环境(例如,运行诸如Openbox之类的独立窗口管理器),则xdg-open将使用其自己的配置文件。

archwiki

特定于您的问题,您可以尝试设置与png文件关联的默认应用程序:

xdg-mime default <ristretto.desktop> image/png

您需要找出Ristretto桌面文件的确切名称。之后,您可以使用以下命令进行检查:

xdg-mime query default image/png

1
可以正式地认为这是一个答案,但实际上并不能解释我提到的现象。
伊万2015年

更新,请再次检查
oxnz 2015年

谢谢。这很有趣:xdg-mime query default image/png返回wine-extension-png.desktop:-)
Ivan

2

@Ivan可能会发生这种情况,因为在请求默认应用程序时您没有提供正确的文件类型。重要的是xdg如何调用该特定文件类型。可以通过运行轻松找到

xdg-mime query filetype example.png

举例来说,如果我使用计算机上的特定png文件执行此操作,它将返回image/x-apple-ios-png。确定了实际的文件类型后,即可运行

xdg-mime query default <new filetype>

并获取xdg用于此特定文件类型的应用程序。如果没有为该文件类型定义应用程序,则xdg-open检查文件/etc/debian_version是否可用,如果可以,它将启动run-mailcap(与xdg-open非常相似)并尝试查找一个程序来打开文件。

仅当这也失败时,xdg-open才会要求用户定义一个程序来打开文件。


这不是oxnz已经写的吗?
杰夫·

oxny仅提及如何设置和检查应用程序中的已知文件类型。他缺少xdg-mime query filetype example.png检查特定文件的文件类型的参考,因为仅假设.png文件也属于image / png类别并不总是正确的。查看伊万的评论,我认为他的问题尚未解决。
lauve
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.