GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir l'icône, le type MIME et l'application associés à un fichier dans le bureau Linux ?

Voici un exemple d'utilisation de GLib/GIO pour obtenir les informations souhaitées.

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

Vous pouvez utiliser les outils disponibles sur xdg pour cela, notamment xdg-mime query .

Pour connaître le type de fichier, par ex. un fichier index.html vous voudriez

$ xdg-mime query filetype index.html

Cela renverra le type mime. Pour demander quelle application est associée à ce mimétisme, utilisez par exemple

$ xdg-mime query default text/html

Cela renvoie epiphany.desktop ici, soit $APPNAME.desktop , il est donc facile d'obtenir le nom de l'application. Si vous souhaitez simplement ouvrir le fichier dans l'application par défaut, vous pouvez bien sûr simplement exécuter

$ xdg-open index.html

qui déclencherait l'épiphanie.

Les fonctions de requête pour les ressources d'icônes ne semblent pas être disponibles dans xdg-utils , mais vous pouvez écrire un petit script python en utilisant pyxdg qui offre également des tonnes de fonctionnalités supplémentaires.

Pour les liaisons C, vous devrez probablement consulter le code portland lié sur la page xdg.

MODIF :

Concernant libmagic et amis, vous devrez décider de vos préférences :alors que libmagic semble être plus complet (et précis) en termes de couverture des types de fichiers, il s'en moque complètement sur les applications ou les icônes par défaut. Il ne vous fournit pas non plus d'outils pour installer des types mime supplémentaires.


Dans Qt>=4.6, il y a une nouvelle fonction pour les systèmes X11

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

Vous pouvez utiliser cette fonction. Documentation ici / (Qt 5)


Linux
  1. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  2. Comment avez-vous commencé avec Linux ?

  3. Comment trouver l'application pour un type MIME sous Linux ?

  4. Comment utiliser les expressions régulières avec la commande cp sous Linux ?

  5. Comment obtenir la taille physique d'un fichier sous Linux ?

Construisez un bureau Apple rétro avec Linux MLVWM

Comment obtenir la date et l'heure actuelles en Python

Comment déterminer le type MIME d'un fichier sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Comment travailler avec des liens durs et des liens souples sous Linux

Comment obtenir la taille d'un fichier/dossier avec SSH sous Linux ?