Mime-Types

列出預設為給定 .desktop 文件的 mimetypes

  • June 3, 2020

我可以列出可能由.desktop文件處理的 mimetypes,如下所示:

$ 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 呢?

我不知道有什麼工具可以做到這一點。

你可以自己寫。這是一個非常簡單的 python3 腳本,可以在任何使用GIO的系統(例如 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 類型。


我想您也可以嘗試 parse mimeapps.listmimeinfo.cache或者defaults.list(後者已被棄用,請參閱freedesktop.org 規範以獲取可能的文件名和位置)並從那裡提取相關資訊,但您的結果可能會有所不同,因為在某些發行版中,其中一些文件失去了.

引用自:https://unix.stackexchange.com/questions/228720