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.