Como a determinação do tipo de arquivo por extensão de nome de arquivo além do trabalho de especificação XDG (mimeapps.list)

3

Estou tentando definir o aplicativo padrão para os arquivos R noweb, mas não consigo encontrar o local onde isso é especificado. A razão para isso é que meus gerenciadores de arquivos parecem determinar o tipo de arquivo por extensão de nome de arquivo (.Rnw) em vez de ou além do esquema especificado por freedesktop.org (isto é: mimeapps.list, mimeinfo.cache, defaults.list ...)

Eu tentei pcmanfm e thunar como gerenciadores de arquivos. Eles concordam na determinação do tipo de arquivo, mas diferem do utilitário xdg-mime query filetype . Veja abaixo exemplos mínimos e arquivos de configuração.

Além disso, o utilitário xdg-mime parece ignorar o local mimeapps.list , mas o gerenciador de arquivos o honra.

A pergunta é: A minha suposição é a de que os tipos de arquivo são determinados pela extensão de nome nesses gerenciadores de arquivos e onde eu encontro a configuração associada?

Eu uso o Awesome WM como gerenciador de janelas como pcmanfm como gerenciador de área de trabalho.

Atualização: encontrei este tutorial sobre extensões de arquivo em pcmanfm , mas meu problema ainda é o tipo mime e o tipo inferido por pcmanfm não correspondem ( rnoweb.Rnw é tipo MIME text/plain , rnoweb0.Rnw is inode/x-empty , ainda pcmanfm lista ambos como R Sweave file )

Update2 [RESOLVIDO]: @mji propôs um arquivo xml para ser colocado em ~/.local/share/mime/packages . Este arquivo já existe como /usr/share/mime/text/x-r-sweave.Rnw . Acontece que a alteração da tag <comment> nesse arquivo altera a coluna Descrição no thunar e no pcmanfm. Ele também atribui o tipo MIME x-r-sweave aos arquivos. Eu encontrei isso já na minha pergunta, mas esqueci isso (eu procurei por x-r-noweb )

Exemplo mínimo:

Eu criei quatro arquivos em um diretório vazio. Dois vazios, dois com conteúdo de amostra:

touch plain0 rnoweb0.Rnw

cat > plain <<EOF
text
EOF

cat > rnoweb.Rnw <<EOF
<<>>=
1+1
@
EOF

Eu corro xdg-mime query filetype e xdg-mime query default nesses arquivos para obter os seguintes resultados:

filename      MIME type           Default app
-------------------------------------------------
plain         text/plain          medit.desktop
plain0        inode/x-empty
rnoweb0.Rnw   inode/x-empty
rnoweb.Rnw    text/plain          medit.desktop

No entanto, thunar e pcmanfm listam o tipo dos arquivos *.Rnw como "Arquivo R Sweave" e os arquivos plain* como documento de texto simples ("Einfaches Textdokument" em alemão). O aplicativo padrão listado nos gerenciadores de arquivos é RStudio para *.Rnw e GVim para plain* .

Arquivos de texto simples são abertos com o GVim, discordando do utilitário xdg-mime , mas de acordo com as configurações do meu local .local/share/applications/mimeapps.list

Os únicos arquivos no meu sistema que correspondem a locate mimeinfo e locate mimeapps são

/etc/xdg/mimeapps.list
/usr/share/applications/mimeinfo.cache
~/.local/share/applications/mimeapps.list
~/.local/share/applications/mimeinfo.cache

grep ping para a ocorrência de rstudio (rstudio.desktop) nesses arquivos resulta (resultados semelhantes resumidos em {...} )

/usr/share/applications/mimeinfo.cache 
    application/x-r-data=rstudio.desktop;
    application/x-r-project=rstudio.desktop;
    text/css=rstudio.desktop;
    text/html=firefox.desktop;abiword.desktop;calibre-ebook-edit.desktop;rstudio.desktop;elinks.desktop;
    text/javascript=rstudio.desktop;
    text/x-R=rstudio.desktop;
    text/x-markdown=rstudio.desktop;
    text/x-r=rstudio.desktop;
    text/x-r-{doc,markdown,history,html,presentation,profile,source,sweave}\
    =rstudio.desktop;
    text/x-tex=texstudio.desktop;gvim.desktop;rstudio.desktop;

nenhum outro arquivo mencionado na especificação XDG contém qualquer ocorrência de rstudio .

grep ping para o tipo text/plain MIME, obtenho:

/etc/xdg/mimeapps.list : text/plain=medit.desktop;
/usr/share/applications/mimeinfo.cache : text/plain=medit.desktop;libreoffice-writer.desktop;gvim.desktop;abiword.desktop;
~/.local/share/applications/mimeapps.list : text/plain=gvim.desktop
~/.local/share/applications/mimeapps.list : text/plain=gvim.desktop;
    
por akraf 26.05.2015 / 12:17

1 resposta

3

Faça o arquivo mime-info

$ vi ~/.local/share/mime/packages/x-r-noweb.xml

$ cat ~/.local/share/mime/packages/x-r-noweb.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="text/x-r-noweb">
        <comment>R noweb</comment>
        <glob pattern="*.Rnw"/>
    </mime-type>
</mime-info>

Atualizar banco de dados mime

$ update-mime-database ~/.local/share/mime/

$ xdg-mime query filetype rnoweb0.Rnw 
text/x-r-noweb
$ mimetype -d rnoweb0.Rnw
rnoweb0.Rnw: R noweb
$ mimetype rnoweb0.Rnw
rnoweb0.Rnw: text/x-r-noweb

Agora, você pode definir o aplicativo padrão

$ xdg-mime default nice-app.desktop text/x-r-noweb
# (or edit ~/.local/share/applications/mimeapps.list)

$ xdg-mime query default text/x-r-noweb
nice-app.desktop
    
por 09.06.2015 / 18:29