Pregunta

Estoy tratando de configurar un emblema usando 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;
}

Si el archivo existe, la función devuelve verdadero, que, según los documentos, significa que los metadatos se establecieron, pero Nautilus (GNOME) no muestra el favorite emblema. No hay muchos ejemplo en la red, así que estoy un poco atascado.

¿Fue útil?

Solución

Parece que Metadata :: Emblems necesita una variedad de cuerdas, incluso si solo está configurando un valor. Esto parece funcionar:

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

Otros consejos

Si desea que Nautilus muestre un emblema, debe proporcionar una extensión a Nautilus para hacerlo. Su extensión debe usar el nautilus-info-proveedor interfaz y en el nautilus_info_provider_update_file_info () función puede llamar al nautilus_file_info_add_emblem () función para agregar un emblema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top