Berikut adalah contoh penggunaan GLib/GIO untuk mendapatkan informasi yang Anda inginkan.
#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;
}
Anda dapat menggunakan alat yang tersedia dari xdg untuk itu, khususnya xdg-mime query
.
Untuk mengetahui tipe file mis. file index.html
Anda akan
$ xdg-mime query filetype index.html
Ini akan mengembalikan mimetype. Untuk menanyakan aplikasi apa yang dikaitkan dengan mimetye itu, gunakan mis.
$ xdg-mime query default text/html
Ini mengembalikan epiphany.desktop
di sini, yaitu $APPNAME.desktop
, sehingga mudah untuk mendapatkan nama aplikasi darinya. Jika Anda hanya ingin membuka file di aplikasi default, tentu saja Anda dapat menjalankannya
$ xdg-open index.html
yang akan membangkitkan pencerahan.
Fungsi kueri untuk sumber daya ikon sepertinya tidak tersedia di xdg-utils
, tetapi Anda dapat menulis skrip python kecil menggunakan pyxdg yang juga menawarkan banyak fungsi tambahan.
Untuk pengikatan C, Anda mungkin perlu melihat kode portland yang tertaut di halaman xdg.
EDIT:
Tentang libmagic
dan teman-teman, Anda harus memutuskan preferensi Anda:Meskipun libmagic tampaknya lebih lengkap (dan akurat) dalam hal cakupan untuk tipe file, itu tidak peduli sama sekali tentang aplikasi atau ikon default. Itu juga tidak memberi Anda alat untuk memasang tipe mime tambahan.
Di Qt>=4.6, ada fungsi baru untuk sistem X11
QIcon QIcon::fromTheme ( const QString & name, const QIcon & fallback = QIcon() ) [static]
Anda dapat menggunakan fungsi ini. Dokumentasi di sini / (Qt 5)