2018/11/01

GSettings と dconf の関係

「GNOME 3 の設定は dconf という設定管理システムに保存されていて、GSettings はそのラッパー」という程度に理解していたのですが、 Vino の設定をしたり するうちに、理解が深まってきたのでまとめておこうと思います。

参考

First steps with GSettings – GTK+ Development Blog

GSettings とは

先に「GSettings は dconf のラッパー」と書いたのですが、 これはあまり正確な理解ではありませんでした。

正確に書くとすると「GSettings は dconfへのアクセスを提供する、GTK+1 のAPI群」といったところでしょうか。

具体的には g_settings_get_value() のように g_settings_ で始まる関数群のことです。

参考

GSettings: GIO Reference Manual

dconf「」 と書いたところが重要です。GSettings は各OSでバックエンドに使用する設定管理システムが異なるのです。

  • Windows だと レジストリ
  • Mac OS X だと plists
  • Linux2だと dconf

GTK+ はクロスプラットホームなので、OS非依存のAPIが用意されているというわけです。

gsettings

なお、全て小文字で書く gsettings は 「GSettings API を内部で使用して、dconf へアクセスするコマンドラインツールの名前」を表すことが多いようです。

例えば、以下のように使用します。

$ gsettings get org.gnome.Vino prompt-enabled
true

dconf-editor

gsettings はコマンドラインツールですが、GUIで参照・編集したい場合は、 dconf-editor を使用します。 dconf-editordconf を直接、編集するための GUI ツールです3

本来、dconf の設定はアプリケーションから行われるべきですが、変更する術がユーザーに提供されていないものもあります。 また、値がどうなっているのか確認したい時もあります。 そういった際に、このツールがあると便利です。

schema id と schema path

gsettings や dconf で設定を参照・変更する際に注意しなければいけないのが、schema idschema path の存在です。 別途記事にまとめたので、ご参照ください。

dconf の schema id と schema path の関係 | 穀風

GConf

余談ですが、GNOME の設定については GConf について書かれているものも多くあります。

この GConf (gconftool 等)は GNOME 2 で採用されていた設定管理システムです。 GTK+ 2 ではなく、GNOME 2 です。つまり、クロスプラットホームではありません。

GNOME 3 では dconf で置き換えられたので、ほとんど使う機会はありません。ただ、一部の古いアプリケーションでは使用されているようです。

  1. GTK+ 3 で導入 
  2. 正確には GNOME 関連だけ。OS としては Linux という意味。 
  3. gtk+ が GUI ツールキットなことを考えると、gsettings が GUI の方がしっくりくるけど… 
?

0 件のコメント: