如何获得与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