AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 565353
Accepted
MountainX
MountainX
Asked: 2020-02-02 18:35:19 +0800 CST2020-02-02 18:35:19 +0800 CST 2020-02-02 18:35:19 +0800 CST

Como associar um novo tipo mime (personalizado) a arquivos (com base na extensão do arquivo)?

  • 772

Esta é a parte 2 de Como instalar um novo tipo mime (personalizado) no meu sistema Linux usando ferramentas CLI?

Usando as etapas na resposta aceita na pergunta acima, criei o seguinte 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>

Eu instalei em todo o sistema com este comando:

# xdg-mime install --mode system mx-publickey.xml

Eu adicionei o ícone desejado:

xdg-icon-resource install --context mimetypes --size 256 x-publickey-icon.png text-x-publickey

Então eu testei. Meus arquivos '*.pub` ainda têm a associação antiga:

$ xdg-mime query filetype id_rsa_test.pub
text/plain

$ xdg-mime query default text/plain
org.kde.kate.desktop

Quais etapas adicionais são necessárias para associar arquivos '*.pub' ao meu novo tipo mime?

Editar:

Executei as etapas a seguir, mas *.pubos arquivos de chave pública ainda não estão sendo abertos por padrão com o Kate dos aplicativos Electron.

# 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

Em seguida, usei as ferramentas da GUI (Configurações do sistema KDE > Aplicativos > Associações de arquivos) e *.pub os arquivos de chave pública associados ao Kate. Os aplicativos Electron ainda se recusam a abrir *.pubarquivos com o Kate.

Os aplicativos Electron usavam anteriormente o Okular. Após o xdg-mime defaultcomando mostrado acima, a associação do Okular desapareceu, mas nada a substituiu . Os aplicativos Electron agora apresentam uma caixa de diálogo KIO solicitando que eu escolha o aplicativo a ser usado. (Isso é melhor do que me forçar a usar o aplicativo errado, mas ainda não é o comportamento correto. Parece que os aplicativos Electron estão procurando em outros lugares as associações de arquivos. Eu gostaria de entender isso.)

Estou faltando um .desktoparquivo necessário em algum local?

Outro pensamento: Após as etapas acima, acredito que agora devo ver uma entrada para text/x-publickeyin /usr/share/applications/mimeinfo.cache. No entanto, não há um.

xdg-open mime-types
  • 1 1 respostas
  • 1999 Views

1 respostas

  • Voted
  1. Best Answer
    Nathaniel M. Beaver
    2020-05-19T11:56:50+08:002020-05-19T11:56:50+08:00

    O shared-mime-inforepositório já especifica o application/pgp-keystipo mime. Você pode vê-lo aqui:

    <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

    ou aqui em sua própria máquina:

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

    No entanto, ele não usa o *.pubpadrão glob, provavelmente para evitar conflitos com o formato MS Publisher. Uma solução é apenas renomear os arquivos como, por exemplo, *.ascarquivos. Mas vamos continuar, assumindo que renomear os arquivos não é uma opção. Aqui está o arquivo mimeinfo que precisamos (observe que ele deve ser nomeado 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>
    

    A vantagem da parte "mágica" é que ela procurará no início do arquivo por essa string e, em seguida, determinará o mimetype com base na correspondência ou não. Isso significa que arquivos com tipo mime application/vnd.ms-publisher ainda podem ter a .pubextensão de arquivo e viver em relativa harmonia ao lado de chaves públicas que também possuem a .pubextensão de arquivo. Para conseguir isso, devemos instalar o arquivo mimeinfo.

    Para instalá-lo para um único usuário:

    xdg-mime install --mode user pgp-keys.xml
    update-mime-database ~/.local/share/mime
    

    Para instalá-lo em todo o sistema:

    sudo xdg-mime install --mode system pgp-keys.xml
    sudo /usr/bin/update-mime-database /usr/share/mime
    

    Eu testei o resultado com uma chave pública de exemplo daqui:

    https://www.intel.com/content/www/us/en/security-center/pgp-public-key.html

    e um exemplo de arquivo MS Publisher daqui:

    https://github.com/apache/tika/blob/0bf11aec86079b8f1ae2f1ea680910ba79665c4f/tika-parsers/src/test/resources/test-documents/testPUBLISHER.pub

    Você pode tentar você mesmo com o repositório git aqui:

    https://github.com/nbeaver/custom-pub-file-mimetype

    • 1

relate perguntas

  • Arquivos de configuração para configurações de mime

  • Como definir o Midnight Commander como o gerenciador de arquivos padrão?

  • Como aumentar a caixa de diálogo OpenWith nativa do sistema para um arquivo específico?

  • bloco xdg-open até que o processo gerado seja morto

  • Clicar em um tipo MIME executa um script para abrir o arquivo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve