試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

バージョン2.26以上のGIOライブラリにおけるGSettingsの機能とその設定を扱うツールについて

GConfとGSettings

GNOMEなどのアプリケーションが設定を保存するための仕組みとしてGConfというものがあり、階層構造を持った設定データベースに対して設定を読み書きする。このGConfは外部のGConfライブラリ(libgconf)が必要で、設定デーモン(gconfd)も動作する。
これとは別に、バージョン2.26以上のGIOライブラリではGSettingsという高レベルな設定の読み書きの仕組みが用意され、GLib/GIOのライブラリから見た外部のライブラリに依存せずにGConfのような階層構造を持った設定データベースの操作を行うことができるようになっている。
このGSettingsでは実際にデータを扱うバックエンド(低レベルな設定データ管理システム)を複数持つ(使用時にいずれかを選択する)ことができ、標準的なものとしては軽量なdconf(https://live.gnome.org/dconf)がある。

GSettingsのツール(gsettingsコマンド)について

バージョン2.26以上のGLibに付属するgsettingsというツール(コマンド)を用いると、バックエンドに依存せず共通した方式で設定データベースの項目を操作できる。このツールは、Debian/Ubuntuでは「libglib2.0-bin」パッケージに含まれる。
設定は

  1. スキーマ」と呼ばれる「[ドメイン...].[設定階層...]」形式の階層(例:org.gnome.yelp)
  2. 「キー」と呼ばれる各設定項目(例:font-adjustment)

といった形で階層部分と設定項目部分に分かれており、設定データの読み書きの際にはこの2つを用いる。
スキーマのデータは/usr/share/glib-2.0/schemas/以下の.gschema.xmlファイルに書かれている。
以下、作業例とその出力を貼り付けるが、出力は環境によって異なる。また、以下で扱う操作(内部コマンド)は一部で、全てではない。

スキーマ一覧の取得作業例

内部コマンド名は「list-schemas」,引数は付けない。

$ gsettings list-schemas
org.gnome.yelp
org.gnome.Evince.Default
org.gnome.system-tools.users
com.canonical.indicator.datetime
(中略)
org.gnome.system.smb
org.gnome.desktop.lockdown
スキーマ内のキー(設定項目)一覧の取得作業例

内部コマンド名は「list-keys」,引数にはスキーマを指定する。

$ gsettings list-keys org.gnome.yelp
font-adjustment
show-cursor
キー(設定項目)の値の取得作業例

内部コマンド名は「get」,引数にはスキーマとキーを指定する。

$ gsettings get org.gnome.yelp font-adjustment
0
$ gsettings get org.gnome.yelp show-cursor
false

キーの値には整数や文字列,真偽値(true/false)などの色々な型があり、配列型の場合は

['dog', 'rabbit', 'crocodile', 'lion']

のような(シングルクォートされた文字列をコンマ(+半角スペース)区切りにして角括弧で囲んだ)形で表示される。

キー(設定項目)の値の書き込み作業例

内部コマンド名は「set」,引数にはスキーマ,キー,新しい値を指定する。

(以下はyelpの設定を変更するので、実行には注意が必要)
$ gsettings set org.gnome.yelp font-adjustment 4
$ gsettings set org.gnome.yelp show-cursor true

配列型のデータを指定する場合、値の全体をクォートする。

(このスキーマは存在しないので、実行しても意味はない)
$ gsettings set com.example.magic.greeting friends "['eel', 'mouse', 'skunk', 'headfish', 'mouse', 'rhinoceros']"

関連記事:

使用したバージョン:

  • GLib 2.28.6

関連URL: