C 如何使用GTK/GIO设置徽标?

C 如何使用GTK/GIO设置徽标?,c,gtk,gio,C,Gtk,Gio,我想用gio做一个标志 #include <gtk/gtk.h> #include <gdk/gdk.h> #include <glib.h> #include <gio/gio.h> #include <stdio.h> int main (int argc, char *argv[]) { GFile *gfile = NULL; g_type_init(); gfile = g_file_new_for_

我想用gio做一个标志

#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <glib.h>
#include <gio/gio.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
    GFile *gfile = NULL;
    g_type_init();
    gfile = g_file_new_for_path("./foo.txt");
    if (g_file_set_attribute_string(gfile, 
                                    "metadata::emblems", 
                                    "favorite", 
                                    G_FILE_QUERY_INFO_NONE, 
                                    NULL, NULL) == TRUE) {

        puts("Success");
    } else {
        puts("Fail");
    }

    return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
GFile*GFile=NULL;
g_type_init();
gfile=g_file_new_for_path(“./foo.txt”);
如果(g)文件设置属性字符串(gfile,
“元数据::标志”,
“最爱”,
G\u文件\u查询\u信息\u无,
NULL,NULL)==TRUE){
看跌期权(“成功”);
}否则{
看跌期权(“失败”);
}
返回0;
}

如果文件存在,函数将返回TRUE,根据文档,这意味着元数据已设置,但Nautilus(GNOME)不显示
收藏夹
徽标。网络上没有太多的例子,所以我有点被卡住了。

如果你想让Nautilus展示一个徽章,你需要提供Nautilus的一个扩展来做到这一点。您的扩展应该使用该接口,在函数中您可以调用该函数来添加徽章。

如果您希望Nautilus显示徽章,您需要实际为Nautilus提供一个扩展。您的扩展应该使用接口,在函数中您可以调用该函数来添加徽标。

看起来元数据::徽标需要一个字符串数组,即使您只设置了一个值。 这似乎有效:

char *value[] = {"favorite", '\0'};
[...]
g_file_set_attribute(file, "metadata::emblems",
                     G_FILE_ATTRIBUTE_TYPE_STRINGV,
                     &value[0],
                     G_FILE_QUERY_INFO_NONE,
                     NULL, NULL);

看起来元数据::徽标需要一个字符串数组,即使您只设置了一个值。 这似乎有效:

char *value[] = {"favorite", '\0'};
[...]
g_file_set_attribute(file, "metadata::emblems",
                     G_FILE_ATTRIBUTE_TYPE_STRINGV,
                     &value[0],
                     G_FILE_QUERY_INFO_NONE,
                     NULL, NULL);

我想让鹦鹉螺展示“最喜欢的”徽章,这是一个库存的,我不想创建一个新的徽章。我发现“metadata::徽章”的值必须是一个数组。这不会创建新的徽章,它将显示一个现有的命名徽章。我希望Nautilus显示“最喜欢的”徽章,这是一个库存徽章,我不想创建新的徽章。我发现“metadata::徽章”的值必须是一个数组。这不会创建新的徽章,它将显示现有的命名徽章。