我正在尝试让*.htm
文件在不同于*.html
(MIME 类型text/html
)的应用程序中打开,如GNOME 帮助 > 为所有用户添加自定义 MIME 类型. 我已经创建/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 类型 text/html:如何以及在哪里定义?
答案1
正如对 OP 的评论所述,text/html
MIME 类型在 中定义/usr/share/mime/packages/freedesktop.org.xml
。用户可以通过text/html
在本地 MIME 文件夹中放置 的新定义来覆盖此定义~/.local/share/mime/packages
。
由于上述文件中的 XML 行,此 MIME 类型可能适用于两个目标文件扩展名:
<mime-type type="text/html">
...
<glob pattern="*.html"/>
<glob pattern="*.htm"/>
</mime-type>
因此,我可以通过创建~/.local/share/mime/packages/html-split.xml
如下文件来根据扩展名拆分两种 MIME 类型:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/html">
<comment>HTML document</comment>
... INCLUDING EVERYTHING UP UNTIL <glob> FROM THE OLD DEFINITION ...
<glob pattern="*.html"/>
</mime-type>
<mime-type type="application/x-html-notepad">
<sub-class-of type="text/html"/>
<comment>HTML Notepad</comment>
<glob pattern="*.htm"/>
</mime-type>
</mime-info>
我没有测试过:<magic>
XML 定义中剩余部分的模式匹配text/html
可能会阻止将 MIME 类型application/x-html-notepad
应用于文件。因此,欢迎在此处*.htm
评论标签<magic>
,尤其是其属性。priority=