Gsettingsスキーマをインストールする一般的なワークフローは次のとおりです。
次のような内容で、拡張子.gschema.xml
でスキーマを作成します。
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="com.companyname.appname" path="/com/companyname/appname/">
<key type="b" name="mybool">
<default>false</default>
<summary>Example summary</summary>
<description>Example description</description>
</key>
</schema>
</schemalist>
スキーマを/usr/share/glib-2.0/schemas/
にコピーします。
次のコマンドを実行して、スキーマをコンパイルします。
Sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
ただし、/usr/share/glib-2.0/schemas/
への書き込みにはルート権限が必要です。スキーマを非グローバルユーザーディレクトリにインストールする方法はありますか?
Gsettingsスキーマをユーザーが書き込み可能なディレクトリにコピーしてコンパイルできます。
$ cp com.companyname.appname ~/schemas/
$ glib-compile-schemas ~/schemas/
難しいのは、特定のディレクトリを使用するようにアプリケーションを構成することです。これを行うには2つの方法があります。
GSETTINGS_SCHEMA_DIR
環境変数を使用する場合:
$ GSETTINGS_SCHEMA_DIR=~/schemas/ ./example.py
または、GSettingsSchemaSourceおよびGSettingSchemaオブジェクトを使用します。
プログラムのソースコードにアクセスできる場合は、任意のディレクトリからコンパイル済みスキーマをロードするようにプログラムを変更できます。 GObjectイントロスペクションを使用して任意のプログラミング言語でこれを行うことができますが、Pythonでこれを行う方法を次に示します。
schema_source = Gio.SettingsSchemaSource.new_from_directory(
os.path.expanduser("~/schemas"),
Gio.SettingsSchemaSource.get_default(),
False,
)
schema = schema_source.lookup('com.companyname.appname', False)
settings = Gio.Settings.new_full(schema, None, None)
settings.set_boolean('mybool', True)