Gsettings プログラム

GSettings を用いたプログラムを書いているのだが、現状 /usr/share/glib-2.0/schemas 以下に xml ファイルをインストールしないと、うまく認識できないみたい。
基本的には、 を include してビルドすれば良いみたい。 configure.ac で、

GLIB_GSETTINGS
PKG_CHECK_MODULES([GIO],[gio-2.0])

して、
Makefile.am で、

CFLAGS = $(GIO_CFLAGS)
LDASS = $(GIO_LIBS)

gsettings_in_file = apps.hoge.gschema.xml.in
gsettings_SCHEMAS = $(gsettings_in_file:.xml.in=.xml)
@INTLTOOL_XML_NOMERGE_RULE@
@GSETTINGS_RULES@

しておけばリンクされ、 glib-compile-schemas コマンドまで実行してくれます。apps.hoge.gschema.xml.in が設定ファイルです。内容は適当に作ってください。手元では、以下のようにしました。

<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
  <schema path="/apps/mnpb/" id="apps.mnpb" gettext-domain="mnpb">
    <key type="s" name="mnpb-rootdir">
      <default>"~/.mnpb"</default>
      <summary>mnpb root directory</summary>
      <description>Momonga Nonfree Package Builder's root directory.</description>
    </key>
  </schema>
</schemalist>

一応、 gettext-domain しているので、 po/POTFILE.in に書いてますが、実際に使えるかどうかは微妙です。 @INTLTOOL_XML_NOMERGE_RULE@ を Makefile.am に書いている所が怪しすぎです。

プログラムの一部は、

#include <gio/gio.h>
...
	/* gsettings */
	{
		GSettings *settings;
		gchar *rootdir;

		settings = g_settings_new ("apps.mnpb");
		rootdir = g_settings_get_string (settings, "mnpb-rootdir");
		g_print ("%s\n", rootdir);
	}
...

こんな感じで、 default の ~/.mnpb という文字列を出力してくれます。
設定などは、 devhelp などで後々確認する予定です。

今回の肝は、 configure.ac で GLIB_GSETTINGS を書いておくと、 Makefile.am の
@GSETTINGS_RULES@ が展開されて、うまく動いてくれるところでしょうか?詳細は、 /usr/share/aclocal/gsettings.m4 を参照してください。