web-dev-qa-db-ja.com

新しい(カスタム)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-typeに関連付けるには、どのような追加手順が必要ですか?

編集:

以下の手順を実行しましたが、ElectronアプリケーションのKateを使用しても、デフォルトで*.pub公開鍵ファイルが開かれていません。

# 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に関連付けました。 電子アプリケーションは、Kateを使用して*.pubファイルを開くことを拒否します。

以前はOkularを使用していたElectronアプリ。上記のxdg-mime defaultコマンドの後、Okularの関連付けはなくなりましたが、それに置き換わるものはありません。 Electronアプリは、使用するアプリケーションを選択するように要求するKIOダイアログを表示します。 (これは、間違ったアプリケーションを使用するように強制するよりはましですが、それでも正しい動作ではありません。Electronアプリケーションは、ファイルの関連付けについて他の場所を探しているようです。それを理解したいと思います。)

必要な.desktopファイルがどこかにありませんか?

別の考え:上記の手順の後、text/x-publickey/usr/share/applications/mimeinfo.cacheのエントリが表示されるはずです。ただし、1つはありません。

2
MountainX

shared-mime-infoリポジトリ はすでにapplication/pgp-keysmimetypeを指定しています。あなたはそれをここで見ることができます:

<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

ただし、おそらくMS Publisher形式との競合を避けるために、*.pubグロブパターンは使用しません。 1つの回避策は、ファイルの名前を変更するだけです。 *.ascファイル。ただし、ファイルの名前を変更するオプションがないと仮定して、続行しましょう。必要なmimeinfoファイルは次のとおりです(mustという名前が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

ここからのMSPublisherファイルの例:

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

1