Onde o Nautilus obtém sua descrição do tipo de arquivo

3

Eu criei e registrei alguns arquivos shared-mime-info para tipos de arquivos personalizados. Por exemplo, em

~/.local/share/mime/packages

Eu adicionei arquivos como

x-myokit.xml

contendo uma descrição do tipo mime, por exemplo

<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/x-myokit">
    <comment xml:lang="en">Myokit model definition</comment>
    <glob pattern="*.mmt"/>
  </mime-type>
</mime-info>

O Nautilus agora reconhece meus arquivos, mas ainda exibe o tipo de arquivo como "Desconhecido". Como faço para mostrar algo mais útil nesta coluna?

    
por Michael Clerx 06.01.2015 / 16:40

2 respostas

3

Este foi codificado em Nautilus , de acordo com a decisão dos desenvolvedores de mostrar apenas o tipo básico informações na coluna Type por padrão, para que a classificação por tipo agrupe famílias de tipos.
Os tipos básicos são definidos em nautilus-file.c baseado em genéricos Nomes de ícones (simbólicos) 1 :

struct {
        const char *icon_name;
        const char *display_name;
} mime_type_map[] = {
    { "application-x-executable", N_("Program") },
    { "audio-x-generic", N_("Audio") },
    { "font-x-generic", N_("Font") },
    { "image-x-generic", N_("Image") },
    { "package-x-generic", N_("Archive") },
    { "text-html", N_("Markup") },
    { "text-x-generic", N_("Text") },
    { "text-x-generic-template", N_("Text") },
    { "text-x-script", N_("Program") },
    { "video-x-generic", N_("Video") },
    { "x-office-address-book", N_("Contacts") },
    { "x-office-calendar", N_("Calendar") },
    { "x-office-document", N_("Document") },
    { "x-office-presentation", N_("Presentation") },
    { "x-office-spreadsheet", N_("Spreadsheet") },
};

Os tipos que não se enquadram nas categorias acima são mostrados como Unknown :

if (basic_type == NULL) {
    basic_type = g_strdup (_("Unknown"));

Como resultado, um arquivo com tipo mime application/x-myokit (com um nome de ícone simbólico correspondente application-x-generic ) será listado como Unknown na coluna Type , enquanto um arquivo com tipo mime text/x-myokit (com um nome de ícone simbólico correspondente text-x-generic ) será listado como Text na coluna Type (consulte também vários arquivos de sistema como *.so arquivos em /usr/lib ou *.mo arquivos em /usr/share/locale - eles são todos listados como Unknown , mas se você selecionar um deles e pressionar Alt + Digite para obter informações detalhadas e precisas).

Você pode fazer o Nautilus listar outra coisa se você usar generic-icon name no seu arquivo xml . Embora suas opções estejam limitadas às categorias acima mencionadas. Então, por exemplo Se você quiser que cada um dos seus arquivos *.mmt sejam listados como Program na coluna Type , edite seu x-myokit.xml da seguinte forma:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="application/x-myokit">
        <comment>Myokit model definition</comment>
        <generic-icon name="text-x-script"/>
        <glob pattern="*.mmt"/>
    </mime-type>
</mime-info>

Não se esqueça de atualizar o banco de dados mime com:

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

Se você precisar de mais informações úteis, poderá ativar / verificar a coluna MIME type em Nautilus preferences (ou com dconf / gsettings : adicionar mime_type to org.gnome.nautilus.list-view default-visible-columns ).

1: execute gio info -a standard::symbolic-icon file para ver os nomes dos ícones simbólicos correspondentes (em configurações mais antigas, substitua gio info por gvfs-info )

    
por 07.01.2015 / 16:07
1

Acredito que o Nautilus obtenha a descrição do arquivo a partir do local /usr/share/applications . Você pode encontrar informações mais úteis da minha outra resposta aqui . Particularmente, esta resposta em Ask Ubuntu discute como as assosiciations de arquivo são armazenadas em detalhes.

The file manager (Nautilus, by default) uses the MIME type of a file to determine which program to open it with. When an application is installed, it can specify what MIME types it can open and the command to use to open the files in the .desktop file which is placed in /usr/share/applications. This is the file used for menus, desktop shortcuts, etc.

    
por 06.01.2015 / 17:01