这是如何使用 CLI 工具在我的 Linux 系统上安装新的(自定义)mime 类型的第 2 部分?
使用上述问题的已接受答案中的步骤,我创建了以下 mime-type mx-publickey.xml
<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/x-publickey">
<comment>Custom type for public key files (plain text)</comment>
<glob-deleteall/>
<glob pattern="*.pub"/>
</mime-type>
</mime-info>
我使用以下命令在系统范围内安装了它:
# xdg-mime install --mode system mx-publickey.xml
我添加了所需的图标:
xdg-icon-resource install --context mimetypes --size 256 x-publickey-icon.png text-x-publickey
然后我测试了它。我的 '*.pub` 文件仍然有旧的关联:
$ xdg-mime query filetype id_rsa_test.pub
text/plain
$ xdg-mime query default text/plain
org.kde.kate.desktop
将“*.pub”文件与我的新 mime 类型相关联需要哪些额外步骤?
编辑:
我执行了以下步骤,但*.pub
默认情况下,公钥文件仍未使用来自 Electron 应用程序的 Kate 打开。
# xdg-mime default org.kde.kate.desktop text/x-publickey
# xdg-mime query default text/x-publickey
org.kde.kate.desktop
$ xdg-mime query default text/x-publickey
org.kde.kate.desktop
接下来,我使用 GUI 工具(KDE 系统设置 > 应用程序 > 文件关联)和*.pub
与 Kate 关联的公钥文件。Electron 应用程序仍然拒绝*.pub
使用 Kate 打开文件。
电子应用程序以前使用 Okular。在上面显示的xdg-mime default
命令之后,Okular 关联消失了,但没有任何东西取代它。Electron 应用程序现在显示一个 KIO 对话框,要求我选择要使用的应用程序。(这比强迫我使用错误的应用程序要好,但这仍然不是正确的行为。看来 Electron 应用程序正在其他地方寻找文件关联。我想了解这一点。)
我是否.desktop
在某个位置缺少所需的文件?
另一个想法:经过上述步骤,我相信我现在应该看到text/x-publickey
in的条目/usr/share/applications/mimeinfo.cache
。但是,没有一个。
shared-mime-info
存储库已经 指定了application/pgp-keys
mimetype。在这里你可以看到它:https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/6bf9e4ff0fb7eff11a02bd937045bf5dc291841a/data/freedesktop.org.xml.in#L282
或在您自己的机器上:
/usr/share/mime/packages/freedesktop.org.xml
但是,它不使用
*.pub
glob 模式,可能是为了避免与 MS Publisher 格式冲突。一种解决方法是将文件重命名为例如*.asc
文件。但是让我们继续,假设重命名文件不是一个选项。这是我们需要的 mimeinfo 文件(注意必须命名为pgp-keys.xml
):“魔术”部分的优点是它会在文件的开头查找这个字符串,然后根据它是否匹配来确定 mimetype。这意味着具有 mimetype
application/vnd.ms-publisher
的文件仍然可以具有.pub
文件扩展名,并且与也具有文件扩展名的公钥一起相对和谐地存在.pub
。为此,我们必须安装 mimeinfo 文件。要为单个用户安装它:
要在系统范围内安装它:
我已经使用此处的示例公钥测试了结果:
https://www.intel.com/content/www/us/en/security-center/pgp-public-key.html
以及来自此处的示例 MS Publisher 文件:
https://github.com/apache/tika/blob/0bf11aec86079b8f1ae2f1ea680910ba79665c4f/tika-parsers/src/test/resources/test-documents/testPUBLISHER.pub
您可以在此处使用 git 存储库自行尝试:
https://github.com/nbeaver/custom-pub-file-mimetype