dconf

dconf
開発者GNOME プロジェクト(アリソン・ローティ)
初回リリース2009年9月16日 (2009年9月16日
安定版リリース
0.49.0 [ 1 ] ウィキデータで編集する / 2025年9月15日 (2025年9月15日
リポジトリ
書かれたC
タイプ構成、設定管理
ライセンスGNU劣等一般公衆利用許諾書
Webサイトwiki .gnome .org /プロジェクト/dconf

dconf は、低レベルの設定システムおよび設定管理ツールです。主な目的は、設定ストレージシステムを持たないプラットフォームにおいて、GSettingsバックエンドを提供することです。dconfGLibに依存しています。GNOME バージョン 3 以降に含まれており、 GConfの代替となります。

概要

dconf はシンプルなキーベースの設定システムです。キーは非構造化データベースに存在します(ただし、論理的に同じものに属するキーはグループ化されるように設計されています)。

変更通知がサポートされています。

複数の設定ソースのスタックがサポートされています。必須キーもサポートされています。

スタックは「マウントポイント」で行うことができます。例えば、グローバルシステム設定は、各ユーザーの設定空間内の/system/以下にマウントできます。単一の設定ソースは、階層内の複数のポイントに出現する場合があります。例えば、通常のキーを/user/にスタックするだけでなく、システムのデフォルトキーを/default/にスタックし、システムポリシー設定ユーティリティによる検査や変更に利用することもできます。

PolicyKit の統合により、一般ユーザーが一時的に/system/(または/default/ )以下のキーへの書き込み権限などを取得できるようになります。これにより、GNOME ディスプレイマネージャ設定ユーティリティなどのプログラムを root 権限で実行する必要がなくなります。

dconf は、 Windows レジストリに相当する GNOME のようなものです。

ソフトウェアアーキテクチャ

GNOME Tweak Tool を使用すると、デスクトップ設定の特定の一般的なサブセットにアクセスできます。

典型的なGNOMEログインは数千回の読み取りと理想的には書き込みゼロで構成されているため、dconfは読み取りに最適化されています。通常、dconfからのキーの読み取りにはシステムコールもコンテキストスイッチも一切発生しません。これは、dconf内のデータの保存形式と、クライアントとサーバー間の IPCメカニズムの両方を兼ねるシンプルなファイル形式によって実現されています。

ラウンド トリップとコンテキスト スイッチを回避すること自体は望ましいことですが、本当の利点は、カーネル内の I/O スケジューラが、キーを読み取ろうとするすべてのアプリケーションからの要求を飽和させることで、より効率的に処理できるようになることです (共通の構成サーバーが 1 つのキーを連続的に要求する場合とは対照的です)。

すべてのキーを単一のコンパクトなバイナリ形式で保持すると、XML ファイルのディレクトリツリーのアプローチで現在発生している深刻な断片化の問題も回避されます。

dconf アーキテクチャ
dconf アーキテクチャ

書き込みは最適化があまり行われていません。バスを経由し、「ライター」(D-Busサービス)によって通常通りに処理されます。変更通知もライターによって処理されます。そもそもバスサービスが存在する理由は、書き込み時にクライアント間で同期を取るのが非常に困難だからです。

最初の書き込み操作が実行されるまで、ライター サービスをアクティブ化する必要はありません。

このサービスは完全にステートレスであり、動的に開始および停止できます。個々のクライアントが関心を持つ変更通知のリストは、バスデーモンによって(D-Busシグナルの監視/一致リストとして)管理されます。

dconfデータベース

1つのdconfデータベースは、バイナリ形式の単一ファイルで構成されます。つまり、テキストファイルではありません。この形式はgvdb(GVariantデータベースファイル)として定義されています。これは、文字列からGVariant値へのマッピングを、非常に効率的な検索方法で保存するシンプルなデータベースファイル形式です。

各ユーザーの GNOME データベース ファイルは~/.config/dconf/user、デフォルトでは GVDB 形式であることが想定されています。

Gバリアント

GVariant は、dconf に格納されるすべての値に使用される、 厳密に型指定されたバリアント データ型です。1 つ以上の値と、その値の型に関する情報を含めることができます。

GVariant には、整数やブール値などの単純な型、あるいは2つの文字列の配列やキーと値のペアの辞書などの複雑な型を含めることができます。GVariant は不変です。つまり、一度作成されると、その型も内容も変更できません。GVariant は、DBus でメソッドパラメータを送信する場合や、GSettings を使用して設定を保存する場合など、データをシリアル化する必要がある場合に便利です。

GVariant は GLib の一部です。

G設定

GSettings クラスは、アプリケーションが独自の設定を保存および取得するための高レベル API を提供します。

Debian では、ユーティリティ プログラムはlibglib2.0-bin/usr/bin/gsettingsパッケージに含まれています。

GSettingsはGIOの一部です。[ 2 ] GIOはGLibの一部です。libglib2.0-0

ドキュメント

dconfのシステム管理者向けガイドが利用可能です。バージョン0.2以降、dconfはLGPLバージョン2.1以降でライセンスされています。

歴史

リリース履歴

バージョン 発売日 重要な変更
0.12009年9月18日
0.22009年10月27日
0.32010年5月25日
0.42010年7月12日
0.52010年9月15日
0.62010年12月21日
0.72011年5月9日
0.82011年7月26日
0.92011年9月19日
0.102011年9月26日
0.112012年3月19日
0.122012年5月1日
0.132012年8月20日
0.142012年11月1日
0.152013年2月11日
0.162013年7月16日
0.172013年9月16日
0.182013年9月23日
0.192014年3月17日
0.202014年3月24日dconf コンパイル: 常にリトルエンディアンで書き込む
0.212014年7月22日
0.222014年9月19日
0.232015年3月16日dconf-editor を別のパッケージに分割する
0.242015年3月23日
0.252015年12月16日
0.262016年3月23日libdbus-1 バックエンドが削除されました。dconf は常にGDBus を使用するようになりました。
0.272017年10月17日Meson ビルド システムへの移植(#784910)

参考文献

  1. ^ 「リリース 0.49.0」 . 2025年9月15日. 2025年10月13日閲覧
  2. ^ "gio/gsettings.c · master · GNOME / GLib" . GitLab . 2018年4月22日閲覧