첫째, 앱은 엉망이되어서는 안됩니다.dconf
dconf 프로젝트 페이지 소개 :
dconf
저수준 구성 시스템입니다. 주요 목적은 구성 스토리지 시스템이없는 플랫폼에서 GSettings에 백엔드를 제공하는 것입니다.
데이터는 어디에 저장되어 있습니까? (참고 : https://wiki.gnome.org/Projects/dconf/SystemAdministrators )
프로파일은 구성 데이터베이스 목록입니다. Gnome & Unity가 동일한 프로파일을 사용하는 것 같습니다.
$ cat /etc/dconf/profile/gdm
user-db:user
system-db:gdm
user-db:user
: 프로파일의 첫 번째 데이터베이스는 읽기-쓰기 rw
이며 사용자의 홈 디렉토리에 작성됩니다.
$ file ~/.config/dconf/user
/home/sneetsher/.config/dconf/user: GVariant Database file, version 0
system-db:gdm
: 읽기 전용
$ file /etc/dconf/db/gdm
/etc/dconf/db/gdm: GVariant Database file, version 0
dconf
db.d/*
폴더 에서 GVariant 데이터베이스 외에 텍스트 스타일 저장소를 바인딩 할 수 있습니다. 예 (알림 파일 경로이므로 일부입니다 system-db:gdm
) :
$ cat /etc/dconf/db/gdm.d/00-upstream-settings
# This file is part of the GDM packaging and should not be changed.
#
# Instead create your own file next to it with a higher numbered prefix,
# and run
#
# dconf update
#
[org/gnome/desktop/a11y/keyboard]
enable=true
[org/gnome/desktop/background]
show-desktop-icons=false
...
스키마 파일 : schema id
&schema path
( *.gschema.xml
)의 관계
Quickly 애플리케이션의 data / glib-2.0 폴더에있는 스키마 XML 파일은 무엇입니까? by trent 는 Quickly 애플리케이션에서 GSettings API를 사용하는 좋은 예와 그의 경험에 따른 결론을 보여줍니다.
비노 돌아 가기 GSsettings를 사용하는 각 애플리케이션은 스키마를 정의하고이를 /usr/share/glib-2.0/schemas/
glib 디렉토리 에 저장 / 설치해야합니다 .
$ dpkg -L vino | grep -i glib-2.0
/usr/share/glib-2.0
/usr/share/glib-2.0/schemas
/usr/share/glib-2.0/schemas/org.gnome.Vino.enums.xml
/usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
$ more /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
<schemalist>
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
<key name='enabled' type='b'>
<summary>Enable remote access to the desktop</summary>
<description>
If true, allows remote access to the desktop via the RFB
protocol. Users on remote machines may then connect to the
desktop using a VNC viewer.
</description>
<default>false</default>
</key>
<key name='prompt-enabled' type='b'>
<summary>Prompt the user before completing a connection</summary>
<description>
If true, remote users accessing the desktop are not allowed
access until the user on the host machine approves the
connection. Recommended especially when access is not password
protected.
</description>
<default>true</default>
</key>
...
눈치 채면 스키마는 id
및로 정의됩니다 path
. 스키마 파일 이름은 id
값 뒤에옵니다 .
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
*.enums.xml
파일은 사용자 정의 열거 선언을위한 새로운 데이터 유형으로 사용되는 *.gschema.xml
동일로 schema id
.
$ cat /usr/share/glib-2.0/schemas/org.gnome.Vino.enums.xml
<!-- Generated data (by glib-mkenums) -->
<schemalist>
<enum id='org.gnome.Vino.VinoIconVisibility'>
<value nick='never' value='0'/>
<value nick='always' value='1'/>
<value nick='client' value='2'/>
</enum>
</schemalist>
<!-- Generated data ends here -->
$ gsettings range org.gnome.Vino icon-visibility
enum
'never'
'always'
'client'
$ gsettings get org.gnome.Vino icon-visibility
'client'
스키마 컴파일 (참고 : dconf 및 gnome-tweak-tool 사용 )
설치 프로세스의 일부로 (dpkg 트리거가 있음) 스키마는 glib-compile-schemas
도구 (glib에서) 로 컴파일됩니다.
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
*.gschema.xml
이진 파일로 컴파일됩니다 /usr/share/glib-2.0/schemas/gschemas.compiled
공급 업체 재정의 파일 ( *.gschema.override
)
스키마 파일 외에도 공급 업체 재정의 파일을 glib-compile-schemas
읽습니다. 이 파일은 스키마의 키에 대한 기본값을 재정의 할 수있는 키 파일입니다 (참조 :) . 업스트림 스키마 기본값을 재정의하기 위해 Ubuntu 배포에서 수행 한 변경 사항이 포함되어 있습니다.man glib-compile-schemas
$ ls /usr/share/glib-2.0/schemas/*.gschema.override
/usr/share/glib-2.0/schemas/10_compiz-gnome.gschema.override
/usr/share/glib-2.0/schemas/10_desktop-base.gschema.override
/usr/share/glib-2.0/schemas/10_evolution-common.gschema.override
/usr/share/glib-2.0/schemas/10_gnome-settings-daemon.gschema.override
/usr/share/glib-2.0/schemas/10_gnome-shell.gschema.override
/usr/share/glib-2.0/schemas/10_gnome-system-log.gschema.override
/usr/share/glib-2.0/schemas/10_gsettings-desktop-schemas.gschema.override
/usr/share/glib-2.0/schemas/10_libgtk-3-common.gschema.override
/usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override
/usr/share/glib-2.0/schemas/20_ubuntu-gnome-default-settings.gschema.override
$ cat /usr/share/glib-2.0/schemas/10_gnome-settings-daemon.gschema.override
[org.gnome.desktop.wm.keybindings]
switch-input-source=['<Super>space']
switch-input-source-backward=['<Shift><Super>space']
대체 파일 사용의 예는 Ubuntu Live CD를 사용자 정의하는 방법을 참조하십시오 . (5. 사용자 정의 2 : 배경 및 테마).
파일 잠금
현재 dconf는 키당 잠금 만 지원하고 하위 경로 잠금은 지원하지 않습니다. 사용자 정의 값은 계속 저장 user-db
되지만 응용 프로그램에는 영향을 미치지 않습니다. dconf / gsettings는 잠긴 키 대신 기본값을 반환합니다. 잠금 파일은에 저장됩니다 db.d/locks/
. 예:
$ cat /etc/dconf/db/gdm.d/locks/00-upstream-settings-locks
/org/gnome/desktop/a11y/keyboard/enable
/org/gnome/desktop/background/show-desktop-icons
/org/gnome/desktop/lockdown/disable-application-handlers
/org/gnome/desktop/lockdown/disable-command-line
/org/gnome/desktop/lockdown/disable-lock-screen
/org/gnome/desktop/lockdown/disable-log-out
/org/gnome/desktop/lockdown/disable-printing
/org/gnome/desktop/lockdown/disable-print-setup
/org/gnome/desktop/lockdown/disable-save-to-disk
/org/gnome/desktop/lockdown/disable-user-switching
...
잠금을 수정 한 후 효과적으로 실행하려면 다음을 수행하십시오.
sudo dconf update
좋은 쇼케이스 : dconf 설정 : 기본값 및 잠금
전역 설정 변경
gsettings
/ 의 기본값 dconf-editor
은을 편집하는 것 user-db
입니다. 를 변경하려면 system-db
새 재정의 파일을 작성하고 스키마를 다시 컴파일하십시오.
나는 이것을 작동시키지 못했습니다.
sudo su gdm -c 'gsettings ...'
다른 답변은 여기에서 기본 / 전역 그놈 환경 설정 (Gnome 3) 설정 은 이전 릴리스에 대한 것일 수도 있습니다.