新しい(カスタム)MIMEタイプをファイルに関連付ける方法(ファイル拡張子ベース)は何ですか?

新しい(カスタム)MIMEタイプをファイルに関連付ける方法(ファイル拡張子ベース)は何ですか?

これはパート2ですCLIツールを使用してLinuxシステムに新しい(カスタム)MIMEタイプをインストールする方法は?

上記の質問で許可されている回答の手順を使用して、次の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タイプに関連付けるには、どのような追加手順が必要ですか?

編集する:

次の手順を実行しましたが、*.pubElectronアプリの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アプリケーションはまだ*.pubKateを使用してファイルを開くことを拒否します。

Electronアプリは以前Okularを使用していました。上記のコマンドを実行した後xdg-mime defaultオークラ会は消えたけど何も代えられない。 Electronアプリケーションは、使用するアプリケーションを選択するように求めるKIOダイアログボックスを表示します。 (間違ったアプリを使用するよう強制するよりも優れていますが、それでも正しい動作ではありません。Electronアプリが他の場所でファイルの関連付けを探しているようです。ご理解ください。)

.desktop必要なファイルをどこかで失いましたか?

text/x-publickeyもう一つの考え:上記のステップを経た後、私は今の項目を見ることができるようです/usr/share/applications/mimeinfo.cache。しかし、一つもありません。

ベストアンサー1

これshared-mime-infoリポジトリ MIMEタイプが指定されましたapplication/pgp-keys。ここで見ることができます:

<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>

https://gitlab.freedesktop.org/xdg/shared-mime-info/-/blob/6bf9e4ff0fb7eff11a02bd937045bf5dc291841a/data/freedesktop.org.xml.in#L282

または自分のコンピュータから:

/usr/share/mime/packages/freedesktop.org.xml

*.pubただし、おそらくMSパブリッシャ形式との競合を避けるためにglobモードを使用しません。 1つの回避策は、ファイル名をfile.hに変更することです*.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>

「魔法」部分の良いところは、ファイルの先頭で対応する文字列を見つけ、一致するかどうかによってMIMEタイプを決定することです。これは、MIMEタイプのファイルが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パブリッシャファイルの例は次のとおりです。

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

おすすめ記事