当前位置: 首页 > 面试题库 >

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

周和志
2023-03-14
问题内容

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


 类似资料:
  • 显然,可以仅通过程序的名称来引用程序的图标,如下所示: 尝试用替换,图标将会改变,甚至可以删除引号。显然,这里有某种抽象在起作用(我喜欢那些)。(我知道。Desktop文件和xdg工具)1.但是是否有一个CLI要显示(甚至更hefpul:如果找不到就不显示,抛出错误))这些图标的方式,比如?(不起作用。)我想这样做,显示我所显示的程序的图标,有时说程序来自更大的包,所以我没有真正的方法知道它是否安

  • 问题内容: 我正在创建一个Java swing应用程序,需要将我的程序设置为文件扩展名(MIME类型)的默认程序。这 必须 在Windows上运行,如果在OS X / Linux上也可以运行,那就太好了。我对Java有点陌生(3或4个月),所以请不要用各种专家级的语言来轰炸我。 我已经看到在Windows中将自定义文件扩展名与Java应用程序相关联,但是我不希望不使用Java Web Start。

  • 程序“可执行”权限被设置,双击图标确实启动了它。 我在想,这不是我在程序代码中做的事情,而是图标或Linux的一些配置。当从终端运行时,程序代码接受命令行参数。但是把文件放在图标上,除了把文件移到堆在程序图标顶部的桌面上之外,什么也不做。从来没有尝试过启动这个程序。 我错过了什么?

  • 问题内容: 我只是想知道大多数人如何从Java文件中获取mime类型?到目前为止,我已经尝试了两个工具:。 第一个给我内存异常,第二个没有正确关闭其流。我只是想知道其他人是否拥有他们使用和正常工作的方法/库? 问题答案: 不幸, 之所以无法使用,是因为URL的这种使用将文件锁定了,例如,它是不可删除的。 但是,你有: 还有以下内容,其优点是不仅可以使用文件扩展名,而且还可以浏览内容 但是,正如上面

  • 我正在尝试使用共享意图共享一个文件。如果我将“text/平原”设置为mime类型,它会像文本而不是文本文件一样读取内容,那么共享菜单中给出的选项是Whatsapp、Line等。 有人知道如何配置共享意图,使共享选项仅是能够发送<代码>的程序吗。txt文件(Gmail、Dropbox等,但不是Whatsapp等)?谢谢

  • 问题内容: 我曾经使用过“ 文件信息”,但从未成功。我想现在将cURL与PHP一起使用,并获取托管在另一个域上的文件的标头,然后提取并确定类型是否为MP3。(我认为MP3的mime类型是) 简而言之,我知道,但是我不知道如何应用它:) 谢谢 问题答案: PHP curl_getinfo() 卷曲 输出