¿De dónde obtiene Nautilus la descripción del tipo de archivo?

¿De dónde obtiene Nautilus la descripción del tipo de archivo?

Creé y registré algunos archivos de información mime compartida para tipos de archivos personalizados. Por ejemplo, en

~/.local/share/mime/packages

He agregado archivos como

x-myokit.xml

que contenga una descripción de tipo mime, por ejemplo

<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>

Nautilus ahora reconoce mis archivos, pero aún muestra el tipo de archivo como "Desconocido". ¿Cómo hago para que muestre algo más útil en esta columna?

Respuesta1

Esto fue codificado Nautilussegún la decisión de los desarrolladores desolo muestra información de tipo básicoen la Typecolumna de forma predeterminada, de modo que la clasificación por tipo agruparía familias de tipos.
Los tipos básicos se definen enarchivo-nautilus.cbasado en nombres de iconos genéricos (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") },
};

Los tipos que no se incluyen en las categorías anteriores se muestran como Unknown:

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

Como resultado, un archivo con tipo mime application/x-myokit(con un nombre de icono simbólico correspondiente application-x-generic) aparecerá como Unknownen la Typecolumna, mientras que un archivo con tipo mime text/x-myokit(con un nombre de icono simbólico correspondiente text-x-generic) aparecerá como Texten la Typecolumna (consulte también varios sistemas archivos como *.soarchivos debajo /usr/libo *.moarchivos en /usr/share/locale: todos aparecen en la lista, Unknownpero si selecciona uno de ellos y presiona Alt+ Enterobtendrá información detallada y precisa).


Puede hacer que Nautilus enumere algo más si lo usa generic-icon nameen su xmlarchivo. Aunque sus opciones se limitan a las categorías mencionadas anteriormente. Entonces, por ejemplo, si desea que cada uno de sus *.mmtarchivos aparezca Programen la Typecolumna, deberá editarlo x-myokit.xmlde esta manera:

<?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>

No olvides actualizar la base de datos mime con:

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

Si necesita más información útil, puede habilitar/marcar la MIME typecolumna en Nautiluspreferencias (o con dconf/ gsettings: agregar mime_typea org.gnome.nautilus.list-view default-visible-columns).

1: ejecute gio info -a standard::symbolic-icon filepara ver los nombres de los iconos simbólicos correspondientes (en configuraciones anteriores, reemplácelo gio infocon gvfs-info)

Respuesta2

Creo que Nautilus obtiene la descripción del archivo de la ubicación /usr/share/applications. Podrías encontrar más información útil en mi otra respuesta.aquí. Particularmente,esteLa respuesta en Ask Ubuntu analiza en detalle cómo se almacenan las asociaciones de archivos.

El administrador de archivos (Nautilus, por defecto) utiliza el tipo MIME de un archivo para determinar con qué programa abrirlo. Cuando se instala una aplicación, puede especificar qué tipos MIME puede abrir y el comando que se utilizará para abrir los archivos en el archivo .desktop que se encuentra en /usr/share/applications. Este es el archivo utilizado para menús, accesos directos del escritorio, etc.

información relacionada