我正在尝试使用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;
}
如果文件存在,则函数返回TRUE,根据文档表示元数据已设置,但Nautilus(GNOME)不显示favorite
标志。网上的例子不多,所以我有点卡住了。
答案 0 :(得分:1)
看起来,即使您只设置一个值,metadata :: emblems也需要一个字符串数组。 这似乎有效:
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);
答案 1 :(得分:0)
如果您希望Nautilus显示徽章,您需要实际为Nautilus提供扩展程序。您的扩展程序应使用nautilus-info-provider界面,在nautilus_info_provider_update_file_info() 功能中,您可以调用nautilus_file_info_add_emblem()功能添加徽标。