GNU/Linux >> Linux Esercitazione >  >> Linux

Come si ottengono l'icona, il tipo MIME e l'applicazione associati a un file nel desktop Linux?

Ecco un esempio di utilizzo di GLib/GIO per ottenere le informazioni desiderate.

#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;
}

Puoi utilizzare gli strumenti disponibili da xdg per questo, in particolare xdg-mime query .

Per scoprire il tipo di file ad es. un file index.html lo faresti

$ xdg-mime query filetype index.html

Questo restituirà il tipo mime. Per interrogare quale applicazione è associata a quel mimetye usa ad es.

$ xdg-mime query default text/html

Questo restituisce epiphany.desktop qui, cioè $APPNAME.desktop , quindi è facile ricavarne il nome dell'applicazione. Se desideri semplicemente aprire il file nell'app predefinita, puoi ovviamente eseguire

$ xdg-open index.html

che accenderebbe l'epifania.

Le funzioni di query per le risorse delle icone non sembrano essere disponibili in xdg-utils , ma potresti scrivere un piccolo script Python usando pyxdg che offre anche tantissime funzionalità aggiuntive.

Per i collegamenti C probabilmente dovrai dare un'occhiata al codice portland collegato alla pagina xdg.

MODIFICA:

A proposito di libmagic e amici, dovrai decidere le tue preferenze:mentre libmagic sembra essere più completo (e accurato) in termini di copertura per i tipi di file, non gli interessa affatto sulle applicazioni o icone predefinite. Inoltre, non ti fornisce gli strumenti per installare tipi mime aggiuntivi.


In Qt>=4.6, c'è una nuova funzione per i sistemi X11

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

Puoi usare questa funzione. Documentazione qui / (Qt 5)


Linux
  1. Trova file e directory su Linux con il comando find

  2. Come hai iniziato con Linux?

  3. Come estendere le funzionalità del tuo desktop Linux con PlexyDesk

  4. Come acquisire le sessioni del terminale e l'output con il comando di script Linux

  5. Come trovare il tipo di un file Img e montarlo?

Costruisci un desktop Apple retrò con Linux MLVWM

Come ottenere la data e l'ora correnti in Python

Come determinare il tipo MIME di un file in Linux

Come ottenere il nome del file dal percorso completo in Linux

Come lavorare con hardlink e softlink in Linux

Come ottenere le dimensioni di file/cartelle con SSH su Linux?