如何使用 CLI 工具在 Linux 系统上安装新的(自定义)mime 类型?

如何使用 CLI 工具在 Linux 系统上安装新的(自定义)mime 类型?

我想知道创建和注册新的完整步骤风俗我的系统上的 mime 类型。如果重要的话,我在 Arch Linux 上运行 KDE。

这些步骤应包括编写 XML 文件并将图标与文件类型以及我需要执行的其他操作相关联。我更喜欢仅使用xdg-mime命令行实用程序。

我希望了解为 1) 我的用户帐户以及 2) 系统范围添加此 mime 关联。

例如,假设我想使用名为 MyCertInspector 的自定义应用程序打开证书文件。我相信 XML 应该类似于以下内容:

<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/publickey">
    <glob-deleteall/>
    <glob pattern="*.crt"/>
    <glob pattern="*.cert"/>
  </mime-type>
</mime-info>

据我了解,当包含glob-deleteall在用户本地定义中时,它会删除任何现有的系统范围的 mime 关联。我想确认我的理解是正确的。

我还了解此过程的第一步是检查是否存在具有我计划使用的文件扩展名的 mime 类型。我不确定如何在 Arch 上做到这一点,因为没有/usr/share/applications/defaults.list在 Arch 上(至少在我的系统上)没有系统范围的mimeapps.list文件。

对于答案,我希望有一个分步指南,涵盖每个所需的步骤,并提到 Arch Linux 系统上的内容应位于的特定目录。

根据我迄今为止的研究,我认为一般步骤是:

  1. 检查是否存在具有我计划使用的文件扩展名的 mime 类型
  2. 为我想要的 mime 类型创建一个 XML 文件。
  3. sudo xdg-mime install [options]使用(并且我们应该解决系统模式和本地用户模式)注册我的 XML 文件。
  4. 将新的 mime 类型与用于打开它的应用程序相关联。
  5. 注册 mime 类型的图标。
  6. 其他任何事情(例如一个人应该执行的检查和验证步骤)

我的目标是,任何阅读此问题答案的人都能够掌握在其系统上创建和安装自定义 mime 类型的所有完整过程。

答案1

我将首先引用例子部分在man xdg-mime

EXAMPLES
           xdg-mime install shinythings-shiny.xml

       Adds a file type description for "shiny"-files. "shinythings-" is used as the vendor prefix. The file type description could look as follows.

           shinythings-shiny.xml:

           <?xml version="1.0"?>
           <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
             <mime-type type="text/x-shiny">
               <comment>Shiny new file type</comment>
               <glob pattern="*.shiny"/>
               <glob pattern="*.shi"/>
             </mime-type>
           </mime-info>

       An icon for this new file type must also be installed, for example with:

           xdg-icon-resource install --context mimetypes --size 64 shiny-file-icon.png text-x-shiny

我希望了解为 1) 我的用户帐户以及 2) 系统范围添加此 mime 关联。

来自同一man页面

xdg-mime install [--mode mode] [--novendor] mimetypes-file
--mode mode

mode can be user or system. In user mode the file is (un)installed for the current user only. In system mode the file is (un)installed for all users on the system. Usually only root is allowed to install in system mode.
The default is to use system mode when called by root and to use user mode when called by a non-root user.

当在用户本地定义中包含 glob-deleteall 时,它会删除任何现有的系统范围 MIME 关联

是的, glob-deleteall 用于覆盖 mimetype 定义的 glob 部分,但不仅有的全系统范围内。两者都取决于模式

提到了 Arch Linux 系统上的具体目录

系统模式将安装到/usr/share/mime/.用户模式.local/share/mime,文件列表是:

./.local/share/mime/generic-icons
./.local/share/mime/mime.cache
./.local/share/mime/types
./.local/share/mime/text
./.local/share/mime/text/x-shiny.xml
./.local/share/mime/version
./.local/share/mime/treemagic
./.local/share/mime/globs
./.local/share/mime/globs2
./.local/share/mime/aliases
./.local/share/mime/subclasses
./.local/share/mime/magic
./.local/share/mime/icons
./.local/share/mime/XMLnamespaces
./.local/share/mime/packages/shinythings-shiny.xml

毕竟,跑

update-mime-database ~/.local/share/mime/

激活配置。

相关内容