Pertama, Aplikasi tidak boleh dipusingkandconf
Pengantar dari halaman proyek dconf :
dconf
adalah sistem konfigurasi tingkat rendah. Tujuan utamanya adalah untuk memberikan backend ke GSettings pada platform yang belum memiliki sistem penyimpanan konfigurasi.
Di mana data disimpan?(Ref: https://wiki.gnome.org/Projects/dconf/SystemAdministrators )
Profil adalah daftar database konfigurasi. Sepertinya Gnome & Unity menggunakan profil yang sama.
$ cat /etc/dconf/profile/gdm
user-db:user
system-db:gdm
user-db:user
: Database pertama di profil adalah baca-tulis rw
dan dibuat di direktori home pengguna.
$ file ~/.config/dconf/user
/home/sneetsher/.config/dconf/user: GVariant Database file, version 0
system-db:gdm
: hanya-baca
$ file /etc/dconf/db/gdm
/etc/dconf/db/gdm: GVariant Database file, version 0
dconf
dapat mengikat toko gaya teks selain GVariant Database dari db.d/*
folder. Contoh (Perhatikan file path, jadi itu adalah bagian dari 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
...
File Skema: Hubungan antara schema id
&schema path
(*.gschema.xml
)
Apakah file XML skema di folder data / glib-2.0 aplikasi Quickly saya? oleh trent menunjukkan contoh yang bagus tentang penggunaan GSettings API dalam aplikasi Quickly, dan kesimpulannya berdasarkan pengalamannya.
Kembali ke Vino. Setiap aplikasi yang menggunakan GSsettings harus mendefinisikan skema dan harus menyimpan / menginstalnya di /usr/share/glib-2.0/schemas/
(Ini adalah direktori 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>
...
Jika Anda perhatikan, Skema didefinisikan dengan a id
dan a path
. Nama file skema mengikuti id
nilainya.
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
*.enums.xml
file untuk deklarasi enumerasi khusus, untuk digunakan sebagai tipe data baru *.gschema.xml
dengan yang sama 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'
Skema Kompilasi (Ref: Bermain dengan dconf dan gnome-tweak-tool )
Sebagai bagian dari proses instalasi (memiliki pemicu dpkg), skema dikompilasi dengan glib-compile-schemas
alat (dari glib)
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
*.gschema.xml
akan dikompilasi ke file biner /usr/share/glib-2.0/schemas/gschemas.compiled
Vendor Override Files (*.gschema.override
)
Selain file skema, glib-compile-schemas
membaca vendor menimpa file, yang merupakan file kunci yang dapat menimpa nilai default untuk kunci dalam skema (Ref:man glib-compile-schemas
. Mereka berisi perubahan yang dilakukan oleh distribusi Ubuntu untuk menimpa default skema hulu.
$ 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']
Contoh penggunaan override file, Lihat Bagaimana menyesuaikan CD Live Ubuntu? (5. Kustomisasi 2: Latar Belakang dan Tema).
Kunci file
Saat ini, dconf hanya mendukung penguncian per-kunci, tidak ada kunci sub-jalur. Nilai yang ditentukan pengguna akan tetap disimpan user-db
tetapi tidak akan berpengaruh pada aplikasi. dconf / gsettings mengembalikan nilai default sebagai gantinya untuk kunci yang dikunci. File kunci disimpan di db.d/locks/
. Contoh:
$ 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
...
Setelah modifikasi kunci, agar berjalan efektif:
sudo dconf update
Sebuah showcase yang bagus: Pengaturan dconf: default dan terkunci
Mengubah Pengaturan Global
Default untuk gsettings
/ dconf-editor
adalah mengedit user-db
. Untuk mengubah system-db
, tulis file override baru dan kompilasi ulang skema.
Saya tidak bisa mengaktifkan ini:
sudo su gdm -c 'gsettings ...'
tidak ada jawaban lain di sini Tetapkan Default / Global Gnome Preferences (Gnome 3) , mungkin itu untuk rilis lama.