GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo se obtiene el ícono, el tipo MIME y la aplicación asociados con un archivo en el escritorio de Linux?

Este es un ejemplo del uso de GLib/GIO para obtener la información que desea.

#include <gio/gio.h>
#include <stdio.h>

int
main (int argc, char **argv)
{
    g_thread_init (NULL);
    g_type_init ();

    if (argc < 2)
        return -1;

    GError *error;
    GFile *file = g_file_new_for_path (argv[1]);
    GFileInfo *file_info = g_file_query_info (file,
                                              "standard::*",
                                              0,
                                              NULL,
                                              &error);

    const char *content_type = g_file_info_get_content_type (file_info);
    char *desc = g_content_type_get_description (content_type);
    GAppInfo *app_info = g_app_info_get_default_for_type (
                                  content_type,
                                  FALSE);

    /* you'd have to use g_loadable_icon_load to get the actual icon */
    GIcon *icon = g_file_info_get_icon (file_info);

    printf ("File: %s\nDescription: %s\nDefault Application: %s\n",
            argv[1],
            desc,
            g_app_info_get_executable (app_info));

    return 0;
}

Puede usar las herramientas disponibles de xdg para eso, en particular xdg-mime query .

Para averiguar el tipo de archivo de, p. un archivo index.html lo harías

$ xdg-mime query filetype index.html

Esto devolverá el tipo MIME. Para consultar qué aplicación está asociada con ese uso de mimetye, por ejemplo,

$ xdg-mime query default text/html

Esto devuelve epiphany.desktop aquí, es decir, $APPNAME.desktop , por lo que es fácil obtener el nombre de la aplicación. Si solo desea abrir el archivo en la aplicación predeterminada, puede, por supuesto, simplemente ejecutar

$ xdg-open index.html

lo que encendería la epifanía.

Las funciones de consulta de recursos de iconos no parecen estar disponibles en xdg-utils , pero podría escribir un pequeño script de python usando pyxdg que también ofrece toneladas de funcionalidad adicional.

Para los enlaces C, probablemente necesitará echar un vistazo al código de Portland vinculado en la página xdg.

EDITAR:

Sobre libmagic y amigos, deberán decidir sus preferencias:mientras que libmagic parece ser más completa (y precisa) en términos de cobertura para tipos de archivo, no le importa en absoluto sobre aplicaciones o iconos predeterminados. Tampoco le proporciona herramientas para instalar mimetypes adicionales.


En Qt>=4.6, hay una nueva función para sistemas X11

QIcon QIcon::fromTheme ( const QString & name, const QIcon & fallback = QIcon() ) [static]

Puede utilizar esta función. Documentación aquí / (Qt 5)


Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. ¿Cómo empezaste con Linux?

  3. Cómo ampliar la funcionalidad de su escritorio Linux con PlexyDesk

  4. Cómo capturar sesiones de terminal y salida con el comando de script de Linux

  5. ¿Cómo encontrar la aplicación para un tipo Mime en Linux?

Cree un escritorio retro de Apple con Linux MLVWM

Cómo obtener la fecha y hora actuales en Python

Cómo determinar el tipo MIME de un archivo en Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

Cómo trabajar con enlaces duros y suaves en Linux

¿Cómo obtener el tamaño de archivo/carpeta con SSH en Linux?