새로운(사용자 정의) 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 애플리케이션은 여전히 *.pub​​Kate를 사용하여 파일 열기를 거부합니다.

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 모드를 사용하지 않습니다 . 한 가지 해결 방법은 파일 이름을 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

관련 정보