我试图让文件在与(MIME Type )*.htm
不同的应用程序中打开,如GNOME Help > Add a custom MIME type for all users中一般所述。我创建了:*.html
text/html
/usr/share/mime/packages/htm.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-html-notepad">
<sub-class-of type="text/html"/>
<comment>HTML Notepad</comment>
<glob pattern="*.htm"/>
</mime-type>
</mime-info>
并将桌面数据库更新为 root ( update-mime-database /usr/share/mime
)。它仍然显示带有扩展名的 HTML 文件的内置 HTML mime 类型*.htm
,好像上面的定义没有效果(删除<sub-class-of>
没有任何区别):
$ gio info saved-web-page.htm | grep standard::content-type
standard::content-type: text/html
即使文件中没有 HTML,它也会忽略自定义 MIME 类型定义:
$ touch empty-file.htm
$ gio info empty-file.htm | grep standard::content-type
standard::content-type: text/plain
请问,我错过了什么?我在 GNOME 3.28.2 / Ubuntu 18.04 上。
编辑:从那以后,我在另一个论坛上更根本地提出了这个问题: MIME type text/html: how & where defined?
正如对 OP 的评论所确定的那样,
text/html
MIME 类型在/usr/share/mime/packages/freedesktop.org.xml
. 用户可以通过text/html
在本地 MIME 文件夹中放置新的定义来覆盖它~/.local/share/mime/packages
。由于上述文件中的这些 XML 行,此 MIME 类型可能应用于两个目标文件扩展名:
因此,通过创建一个如下所示的文件,我已经能够根据扩展名拆分两种 MIME 类型
~/.local/share/mime/packages/html-split.xml
:我尚未测试的内容:
<magic>
XML 定义中剩余部分中的模式匹配text/html
可能会阻止 MIME 类型application/x-html-notepad
应用于*.htm
文件。因此,这里欢迎对<magic>
标签,尤其是它的priority=
属性发表评论。