我想知道在我的系统上创建和注册新的自定义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>
Run Code Online (Sandbox Code Playgroud)
据我了解,当包含glob-deleteall
在用户本地定义中时,它会删除任何现有的系统范围的 mime 关联。我想确认我的理解是正确的。
我也明白这个过程的第一步是检查是否存在带有我计划使用的文件扩展名的 MIME 类型。我不确定如何在 Arch 上做到这一点,因为 Arch 上没有/usr/share/applications/defaults.list并且(至少在我的系统上)没有系统范围的mimeapps.list
文件。
对于答案,我希望有一个分步指南,涵盖每个需要的步骤,并提到在 Arch Linux 系统上应该放置的特定目录。
从我目前的研究来看,我认为一般步骤是:
sudo xdg-mime install [options]
(我们应该解决系统模式和本地用户模式。我的目标是任何阅读此问题答案的人都将能够掌握在其系统上创建和安装自定义 mime 类型的所有完整过程。
我将首先引用中的示例部分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
Run Code Online (Sandbox Code Playgroud)
我希望了解为 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.
Run Code Online (Sandbox Code Playgroud)
当在用户本地定义中包含 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
Run Code Online (Sandbox Code Playgroud)
毕竟跑
update-mime-database ~/.local/share/mime/
Run Code Online (Sandbox Code Playgroud)
激活配置。
归档时间: |
|
查看次数: |
1568 次 |
最近记录: |