我可以列出文件可能处理的 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.list
,mimeinfo.cache
或者defaults.list
(后者已被弃用,请参阅freedesktop.org 规范可能的文件名和位置)并从那里提取相关信息,但您的结果可能会有所不同,因为在某些发行版上某些文件丢失了。