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/
까다로운 부분은 특정 디렉토리를 사용하도록 응용 프로그램을 구성하는 것입니다. 이를 수행하는 두 가지 방법이 있습니다.
-
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)