【问题标题】:G_Settings apply changesG_Settings 应用更改
【发布时间】:2013-11-04 21:59:07
【问题描述】:

我正在做一些 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 上试用(路径等正确)。

【问题讨论】:

  • 您说“路径等都是正确的”,但不要检查 g_settings_set() 返回值。
  • 返回值为真。

标签: settings gnome


【解决方案1】:

哦,我一开始看错了你的代码……如果你想确保你的更改被写入磁盘,我相信你应该打电话给g_settings_sync ()。显然,如果您在没有主循环的情况下运行(例如在您的示例中),则确实需要将东西放在磁盘上。

所以,要明确一点:带有 glib 主循环的普通应用程序不需要(也不应该真正使用)同步调用。

【讨论】:

  • 这很有帮助!我负债累累……如果你有时间来捷克,我会给你买啤酒:)
【解决方案2】:

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

使用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

【讨论】:

  • 输出是正确的,但改变不是永久的......尝试它是否永久改变你......(或使用org.gnome.background)(图片uri)......输出是正确的,但问题是,它不会影响背景(受python脚本影响)
  • code ''桌面字体用于桌面图标的字体_description。描述> code这是那个模式...如前所述,它只是暂时的
猜你喜欢
  • 2020-04-12
  • 2012-03-04
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
相关资源
最近更新 更多