Linux MIME Type


https://www.jianshu.com/p/4617e8e600ad

上面這篇文章寫的很詳細了,這次也是參考於此。

先了解一下MIME Type:

1.MIME Type 是用於描述文件的類型的一種表述方法。

2.MIME Type指定了文件的類型名稱、描述、圖標信息,同時通過與.desktop應用程序描述文件整合,指定了文件的打開方式。

3.MIME type是被file manager使用,而不是Gnome或者Ubuntu系統本身。

應用程序描述文件(/usr/share/applications/.desktop),這個文件描述了系統上安裝的應用程序的參數特征(名稱、啟動方法、圖標、支持的MIME type)。

文件類型描述數據庫,這個數據庫描述了每一個文件類型(MIME type)的參數特征(名稱、、別名、描述、圖標),以及滿足何種條件才能將其划分到對應的MIME類別。

每個應用程序描述文件雖然已經指定了各自支持的MIME type,但是如果每次文件打開前都去遍歷一邊所有的描述文件,執行效率將會非常低下。所以就需要一個關聯數據庫,負責將application(應用程序描述文件)與MIME type(Shared MIME Database)對應起來。這個數據庫是一個文本文件靜態數據庫(/usr/share/applications/mimeinfo.cache)。

用戶可以自定義應用程序的打開方式到/usr/share/appliacaions/(.desktop),並通過update-desktop-database /usr/share/applications/命令更新到數據庫中。

如果一個MIME type對應到多個.desktop應用程序描述文件,通過抓取而來的mimeinfo.cache並不能決定誰更優先,因為多個.desktop文件之間並沒有優先級定義。面對這個場景,最終的默認程序是由mimeapps.list文件定奪的,其由用戶人工配置,決定同一個MIME type對應多個.desktop程序時,哪個程序優先級更高,更高優先級的程序即是族中的默認程序。

mimeapps.list在系統中有多個路徑存在,如下(文件優先級自高到底):

$XDG_CONFIG_HOME/$desktop-mimeapps.list
$XDG_CONFIG_HOME/mimeapps.list
$XDG_CONFIG_DIRS/$desktop-mimeapps.list
$XDG_CONFIG_DIRS/mimeapps.list
$XDG_DATA_HOME/applications/$desktop-mimeapps.list
$XDG_DATA_HOME/applications/mimeapps.list
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list
$XDG_DATA_DIRS/applications/mimeapps.list

順便了解一下環境變量

XDG環境變量 默認值
$XDG_DATA_HOME $HOME/.local/share
$XDG_CONFIG_HOME $HOME/.config
$XDG_DATA_DIRS /usr/local/share/:/usr/share/
$XDG_CONFIG_DIRS /etc/xdg
$XDG_CACHE_HOME $HOME/.cache

如何查看文件的MIME Type:mimetype filename (mimetype命令需要安裝)

根據文件的MIME Type找到打開方式:gvfs-mime –query filetype

所以通過自定義應用程序描述文件,文件中指定啟動方法和支持的MIME Type,將其更新到數據庫中,並通過修改mimeapps.list文件就可以更改文件的默認打開程序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM