1

GSettings value seems to change in my C code but it does not persist. dconf-editor shows that it remains the same (the default "picture-uri" setting).

Am I missing something?

#include <stdio.h>
#include <gio/gio.h>

int main() {
    GSettings * background_settings = g_settings_new("org.gnome.desktop.background");

    printf("\"picture-uri\" setting is writable? \n%d\n\n", g_settings_is_writable(background_settings, "picture_uri"));

    GVariant * picture_uri_setting = g_settings_get_value(background_settings, "picture-uri");
    char * picture_uri_setting_value;
    g_variant_get(picture_uri_setting, "&s", &picture_uri_setting_value);
    printf("Before: %s\n", picture_uri_setting_value);

    GVariant * new_picture_uri_setting = g_variant_new("&s", "file:///tmp/wall.jpg");
    g_settings_set_value(background_settings, "picture-uri", new_picture_uri_setting);

    picture_uri_setting = g_settings_get_value(background_settings, "picture-uri");
    g_variant_get(picture_uri_setting, "&s", &picture_uri_setting_value);
    printf("After: %s\n", picture_uri_setting_value);

    return 0;
}

This is the way I compile it:

gcc -Wall -g --save-temps main.c $(pkg-config --libs --cflags gtk+-3.0)

Thanks.

Jussi Kukkonen
  • 13,857
  • 1
  • 37
  • 54
Thom Thom Thom
  • 1,279
  • 1
  • 11
  • 21

0 Answers0