Gsettings プログラム
GSettings を用いたプログラムを書いているのだが、現状 /usr/share/glib-2.0/schemas 以下に xml ファイルをインストールしないと、うまく認識できないみたい。
基本的には、
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 を参照してください。