在Linux桌面上使用C ++,获得图标,文档描述和与任意文件/文件路径“关联”的应用程序的最佳方法是什么?
我想使用最“规范”的方式在KDE和gnome上查找图标,mime类型/文件类型的描述以及相关的应用程序,我想 避免对命令行的任何“脱壳” 和“低级”例程,以及避免自己重新发明轮子(无需解析mime-types文件等)。
编辑和注释:
嘿,我最初是问有关QT文件信息对象的问题,并且就目前而言,“没有明确答案”的答案似乎是正确的。但是,这种情况太糟了,我在打开问题以寻求更多信息。
我不再特别在意QT,我只是在寻找一种 最 规范的方法,通过在KDE和gnome上通过C ++ / c函数调用来找到mime类型(尤其是Gnome,因为这是我最困惑的地方) 。我希望能够显示与Gnome和Konquerer /中的Nautilus相匹配的图标和描述,以及与KDE有关的任何内容,以及适当地打开文件等。
我想我可以分别为KDE和Gnome获得它。最大的问题是,为Linux桌面获取所有这些信息的最常见/最佳/规范的方法是什么?侏儒文档尤其不透明。gnome- vsf有mime例程,但已弃用,我找不到gnome-vsf的替代品GIO / GFS的mime例程。有一个模糊的含义是,一个人应该使用开放的桌面应用程序,但是不清楚地使用哪个。libmagic和xdg放在哪里?
指向总结这些问题的论文的指针很高兴被接受。同样,我知道三行答案是“没有这样的动物”,但我正在寻找 长 答案。
这是一个使用GLib / GIO获取所需信息的示例。
#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; }