这是如何使用CLI工具在Linux系统上安装新的(自定义)MIME类型的第2部分?
使用上述问题的可接受答案中的步骤,我创建了以下mime类型的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一起使用。电子应用程序仍然拒绝*.pub
使用Kate打开文件。
电子应用程序以前使用Okular。按照xdg-mime default
上面显示的命令,Okular关联已消失,但是没有任何东西可以代替它。电子应用程序现在显示一个KIO对话框,要求我选择要使用的应用程序。(这比强迫我使用错误的应用程序要好,但是这仍然不是正确的行为。Electron应用程序正在寻找其他地方进行文件关联。我想了解这一点。)
我.desktop
在某个位置缺少所需的文件吗?
另一个想法:经过上述步骤,我相信我现在应该text/x-publickey
在中看到的条目/usr/share/applications/mimeinfo.cache
。但是,没有一个。
该shared-mime-info
存储库已经指定了application/pgp-keys
mimetype。在这里你可以看到它:
<mime-type type="application/pgp-keys">
<comment>PGP keys</comment>
<acronym>PGP</acronym>
<expanded-acronym>Pretty Good Privacy</expanded-acronym>
<sub-class-of type="text/plain"/>
<generic-icon name="text-x-generic"/>
<magic priority="50">
<match type="string" value="-----BEGIN PGP PUBLIC KEY BLOCK-----" offset="0"/>
<match type="string" value="-----BEGIN PGP PRIVATE KEY BLOCK-----" offset="0"/>
<match type="big16" value="0x9501" offset="0"/>
<match type="big16" value="0x9500" offset="0"/>
<match type="big16" value="0x9900" offset="0"/>
<match type="big16" value="0x9901" offset="0"/>
</magic>
<glob pattern="*.skr"/>
<glob pattern="*.pkr"/>
<glob pattern="*.asc" weight="10"/>
<glob pattern="*.pgp"/>
<glob pattern="*.gpg"/>
<glob pattern="*.key"/>
</mime-type>
或在您自己的机器上:
/usr/share/mime/packages/freedesktop.org.xml
但是,它不使用*.pub
全局模式,可能是为了避免与MS Publisher格式冲突。一种解决方法是将文件重命名为*.asc
文件。但是,让我们继续,假设重命名文件不是一种选择。这是我们需要的mimeinfo文件(请注意,它必须命名为pgp-keys.xml
):
$ cat pgp-keys.xml
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/pgp-keys">
<comment>PGP keys</comment>
<acronym>PGP</acronym>
<expanded-acronym>Pretty Good Privacy</expanded-acronym>
<sub-class-of type="text/plain"/>
<generic-icon name="text-x-generic"/>
<magic priority="10">
<match value="-----BEGIN PGP PUBLIC KEY BLOCK-----" type="string" offset="0"/>
</magic>
<glob weight="10" pattern="*.pub"/>
</mime-type>
</mime-info>
“魔术”部分的优点在于,它将在文件的开头查找该字符串,然后根据其是否匹配来确定mimetype。这意味着具有mimetypeapplication/vnd.ms-publisher
的.pub
文件仍可以具有文件扩展名,并且与也具有.pub
文件扩展名的公共密钥保持相对和谐的关系。为此,我们必须安装mimeinfo文件。
要为单个用户安装它:
xdg-mime install --mode user pgp-keys.xml
update-mime-database ~/.local/share/mime
要在系统范围内安装它:
sudo xdg-mime install --mode system pgp-keys.xml
sudo /usr/bin/update-mime-database /usr/share/mime
我从此处通过示例公共密钥测试了结果:
https://www.intel.com/content/www/us/en/security-center/pgp-public-key.html
以及来自此处的示例MS Publisher文件:
您可以在git存储库中自行尝试:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句