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

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

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

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

答案1

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

维基百科

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

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

您需要找出 Ristretto.txt 的桌面文件名到底是什么。之后,你可以用这个来检查:

xdg-mime query default image/png

答案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 才会要求用户定义一个程序来打开文件。

相关内容