ImageMagick 和 Eye of GNOME 广泛支持图像类型(例如image/jpeg
等image/png
),因此我认为为 EOG 设置优先级的唯一方法是检查其支持的格式并将.desktop
其列出在默认应用程序部分mimeapps.list
或维护自定义链接,update-alternatives
但某些格式不能被一个应用程序支持,但可以被其他应用程序支持。
也许有一种更简单的方法来处理“未解析的”MIME 类型的应用程序优先级,并受多个应用程序支持?
答案1
这个想法是每个 GUI 应用程序都应该提供一个.desktop
文件来描述它将能够处理哪些 MIME 类型。
使用xdg-mime query default <MIME type>
,您可以找出特定 MIME 类型的当前默认应用程序。它返回在.desktop
该应用程序的文件中指定的应用程序 ID 。
您还xdg-mime default <application id> <MIME type...>
可以将特定应用程序设置为一种或多种 MIME 类型的默认应用程序。
通过 MIME 类型设置优先级比通过应用程序设置优先级更有意义:例如,图像浏览器可能能够“打开”一个目录以生成其中所有图像的缩略图视图,因此它将inode/directory
列出一个 MIME 类型它。但您通常可能不希望图像浏览器成为打开通用目录的主要工具。
某些实用程序可能适用于所有文件,例如可用于通过蓝牙发送文件的工具。此类实用程序将all/allfiles
为其列出伪 MIME 类型。如果您可以轻松地说“让该实用程序对它可以处理的所有内容具有优先级”,而不先验证这些类型是什么,那么如果应用于这样的实用程序,可能会产生灾难性的后果。
如果您确定特定程序的所有 MIME 类型都适合设为主要类型,则可以使用以下命令执行此操作:
#!/bin/sh
APP_ID=$(basename "$1" .desktop)
xdg-mime default $APP_ID $(grep ^MimeType "$1" | cut -d = -f 2- | tr ';' ' ')
例如,如果应用程序桌面文件是/usr/share/applications/org.kde.gwenview.desktop
(假设桌面文件名包含应用程序 ID),那么您可以启动此脚本,name-of-script.sh /usr/share/applications/org.kde.gwenview.desktop
它将将该应用程序设置为它可以处理的任何 MIME 类型的默认应用程序,在脚本运行的用户帐户。