如何以不同于 *.html 的方式打开 *.htm?

如何以不同于 *.html 的方式打开 *.htm?

我正在尝试让*.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/htmlMIME 类型在 中定义/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=

相关内容