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文件就可以更改文件的默认打开程序。

posted @ 2020-03-07 23:33  elon_wang  阅读(2173)  评论(0编辑  收藏  举报