GConf2

GConfは、プログラム終了後も保持したいアプリケーションの設定情報を保持する補助アプリケーション。MomongaではFedoraと名前を合わせるためGConf2になっている。

Unix系のOSでは、ドットファイル(名前が"."ではじまるファイルで、通常$HOME以下に保存される)に設定を保存する場合が多いのだが、多いと分からなくなるので、このようなフレームワークがあると助かる場合もある。しかし、xchatの様に、設定はGConfを使うけどログは.xchat2以下に保存されており、なんだかな〜と思うこともある。レジストリという名前で管理しているOSもあるらしい。

設定情報はxml形式?のファイル(接尾子は.schemas)でデフォルトとして設定されていて、Momongaでは"/etc/gconf/schemas"以下にインストールされる。

$ rpm -qf /etc/gconf/schemas/* | sort -u

このようなコマンドで、どのアプリケーションがGConfで設定を保持しているかが分かる。

schemasファイルは最低でもKeyとValueの組みになっている。参考に、GConfのGUIフロントエンドであるgconf-editorのschemasファイル(gconf-editor.schemas.in)を見てみる。

<gconfschemafile>
  <schemalist>
    <schema>
      <key>/schemas/apps/gconf-editor/bookmarks</key>
      <applyto>/apps/gconf-editor/bookmarks</applyto>
      <owner>gconf-editor</owner>
      <type>list</type>
      <list_type>string</list_type>
      <default>[]</default>
      <locale name="C">
        <short>Bookmarks</short>
        <long>gconf-editor folder bookmarks</long>
      </locale>
    </schema>
 </schemalist>
</gconfschemafile>

まぁ、雰囲気は分かると思うので、説明は省略する(/usr/share/sgml/gconf/gconf-1.0.dtdDTDファイル)。

上記のファイルの接尾子に.inというのがついているが、これはintltoolなどでうまく翻訳してくれる。intltoolの話は別の機会にする。
このキーの値を見るために、gconftool-2コマンドを利用する。

$ gconftool-2 --get /schemas/apps/gconf-editor/bookmarks
型: list
リスト型: string
Car 型: *invalid*
Cdr 型: *invalid*
初期値: []
オーナー: gconf-editor
説明(短文): ブックマーク
説明(長文): GConf エディタのフォルダ式ブックマークです。

オーナーになっているアプリケーションは、この値を見て動作を変更する。
GConfがschemasを探す場所は、"/etc/gconf/2/path"に書いている。空白行(改行しかないもの)とコメント(#ではじまる行)を削除して表示してみる。

$ grep -v "^#" /etc/gconf/2/path | grep -v "^$"
xml:readonly:/etc/gconf/gconf.xml.mandatory
include /etc/gconf/2/local-mandatory.path
include "$(HOME)/.gconf.path"
xml:readwrite:$(HOME)/.gconf
xml:readonly:/etc/gconf/gconf.xml.system
include /etc/gconf/2/local-defaults.path
xml:readonly:/etc/gconf/gconf.xml.defaults

書き込み可能なのは$(HOME).gconfのみで、それ以外は読み込み専用になっている。また、pathはincludeできることがわかる。

疲れたから、ここまで。。。