GNU/Linux >> Znalost Linux >  >> Linux

Jak získáte ikonu, typ MIME a aplikaci přidruženou k souboru na ploše Linux?

Zde je příklad použití GLib/GIO k získání požadovaných informací.

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

K tomu můžete použít nástroje dostupné z xdg, zejména xdg-mime query .

Chcete-li zjistit typ souboru např. soubor index.html byste

$ xdg-mime query filetype index.html

Tím se vrátí mimetype. Chcete-li zjistit, která aplikace je spojena s tímto mimetye, použijte např.

$ xdg-mime query default text/html

To vrátí epiphany.desktop zde, tj. $APPNAME.desktop , takže je snadné z něj získat název aplikace. Pokud byste chtěli soubor otevřít ve výchozí aplikaci, můžete samozřejmě spustit

$ xdg-open index.html

což by vyvolalo zjevení.

Zdá se, že funkce dotazů na zdroje ikon nejsou v xdg-utils dostupné , ale můžete napsat malý python skript pomocí pyxdg, který také nabízí spoustu dalších funkcí.

Pro vazby C budete pravděpodobně muset nahlédnout do portlandského kódu odkazovaného na stránce xdg.

UPRAVIT:

O libmagic a přátelé, budete se muset rozhodnout podle svých preferencí:Zatímco libmagic se zdá být úplnější (a přesnější), pokud jde o pokrytí typů souborů, je to úplně jedno o výchozích aplikacích nebo ikonách. Také vám neposkytuje nástroje pro instalaci dalších mimetypes.


V Qt>=4.6 je nová funkce pro systémy X11

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

Tuto funkci můžete použít. Dokumentace zde / (Qt 5)


Linux
  1. Linux – Jak zobrazit typ souborového systému přes terminál?

  2. Jak najít aplikaci pro typ mime v systému Linux?

  3. Jak zazipujete soubor a uchováte soubor .gz?

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak jste začali s Linuxem?

  3. Jak zachytit terminálové relace a výstup pomocí příkazu skriptu Linux

  1. Jak zjistit typ souboru Img a připojit jej?

  2. Jak mohu zadat ikonu s RELATIVNÍ cestou pro soubor se záznamem plochy Linux?

  3. Jak získat název souboru pouze pomocí Linuxu „najít“?