我做了一些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(路径等)是正确的。
答案 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主循环的普通应用程序不需要(也不应该真正使用)同步调用。