如何將新的(自定義)mime 類型與文件關聯(基於文件副檔名)?
這是如何使用 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。你可以在這裡看到它:<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
glob 模式,可能是為了避免與 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。這意味著具有 mimetype
application/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 儲存庫自行嘗試: