列出给定 .desktop 文件的默认 mimetypes

列出给定 .desktop 文件的默认 mimetypes

我可以列出文件可能处理的 mime 类型,.desktop执行如下操作:

$ grep 'MimeType' /usr/share/applications/eog.desktop | tr ';' '\n'
MimeType=image/bmp
image/gif
image/jpeg
image/jpg
image/pjpeg
image/png
image/tiff
...

我可以使用以下命令显示给定 mimetype 的默认应用程序gvfs-mime

$ gvfs-mime --query image/tiff
Default application for 'image/tiff': eog.desktop
Registered applications:
        eog.desktop
        gimp.desktop
...
Recommended applications:
        eog.desktop
        gimp.desktop
...

或与gio

$ gio mime image/tiff
Default application for “image/tiff”: eog.desktop
Registered applications:
    eog.desktop
    gimp.desktop
...
Recommended applications:
    eog.desktop
    gimp.desktop
...

但是如何列出eog.desktop实际处理的 mimetypes 呢?

答案1

我不知道有什么工具可以做到这一点。
不过你可以自己写。这是一个非常简单的 python3 脚本,应该在任何使用的系统上运行吉奥下面(例如 Gnome 3):

#!/usr/bin/env python

from sys import argv
from gi.repository import Gio

app = argv[1]
glauncher = Gio.DesktopAppInfo.new_from_filename(app)
for mtype in Gio.AppInfo.get_supported_types(glauncher):
    ghandler = Gio.AppInfo.get_default_for_type(mtype, False)
    launcher = glauncher.get_executable()
    handler = ghandler.get_executable()
    if launcher == handler:
        print (mtype)

该脚本采用一个参数:桌面文件的完整路径

myscript /usr/share/applications/eog.desktop

该脚本获取应用程序支持的 mime 类型列表,然后,对于列表中的每个项目,它获取默认处理程序,如果是同一应用程序,它会打印 mime 类型。


我想你也可以尝试解析mimeapps.listmimeinfo.cache或者defaults.list(后者已被弃用,请参阅freedesktop.org 规范可能的文件名和位置)并从那里提取相关信息,但您的结果可能会有所不同,因为在某些发行版上某些文件丢失了。

相关内容