G_Settings应用更改

时间:2013-11-04 21:59:08

标签: settings gnome

我做了一些C编码,但我无法永久存储g_settings!

#include <stdlib.h>
#include <locale.h>


#include <gio/gio.h>
int main(int argc, char **argv)
{
  GSettings *settings;
  g_type_init();
  settings = g_settings_new ("org.nemo.desktop");
  printf("%s\n", g_settings_get_string(settings, "font"));
  g_settings_set (settings, "font", "s", "Arial");
  if (g_settings_get_has_unapplied (settings)) printf("X");
  printf("%s\n", g_settings_get_string(settings, "font"));
  return 0;
}

尝试使用Linux Mint 13 Cinnamon(路径等)是正确的。

2 个答案:

答案 0 :(得分:1)

这不是一个最小的工作示例。你能提供你正在使用的架构文件吗?

使用gcc `pkg-config --cflags --libs gio-2.0` -o temp temp.c编译代码并使用以下架构:

<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
    <schema id="org.nemo.desktop" path="/org/nemo/desktop/">
        <key name="font" type="s">
            <default>''</default>
            <summary>Summary</summary>
            <description>Description.</description>
        </key>
    </schema>
</schemalist>
我安装的

sudo cp org.nemo.desktop.gschema.xml /usr/share/glib-2.0/schemas/
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

我得到以下输出,这似乎是正确的:

Arial

答案 1 :(得分:1)

哦,我最初误读了你的代码......如果你想确保你的更改被写入磁盘,我相信你应该调用g_settings_sync ()。显然,如果你在没有mainloop的情况下运行(就像在你的例子中一样),那么确实需要在磁盘上运行。

所以,为了清楚起见:带有glib主循环的普通应用程序不需要(也不应该真正使用)同步调用。