如何获得与Linux桌面中的文件关联的图标,MIME类型和应用程序?

在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;

}

以上是 如何获得与Linux桌面中的文件关联的图标,MIME类型和应用程序? 的全部内容, 来源链接: utcz.com/qa/415839.html

回到顶部