Erstens sollten sich Apps nicht damit anlegendconf
Einführung von der dconf Projektseite:
dconf
ist ein einfaches Konfigurationssystem. Der Hauptzweck ist die Bereitstellung eines Backends für GSettings auf Plattformen, auf denen noch keine Konfigurationsspeichersysteme vorhanden sind.
Wo werden die Daten gespeichert? (Referenz: https://wiki.gnome.org/Projects/dconf/SystemAdministrators )
Ein Profil ist eine Liste von Konfigurationsdatenbanken. Wie es scheint, verwenden Gnome & Unity dasselbe Profil.
$ cat /etc/dconf/profile/gdm
user-db:user
system-db:gdm
user-db:user
: Die erste Datenbank im Profil ist schreibgeschützt rw
und wird im Basisverzeichnis des Benutzers erstellt.
$ file ~/.config/dconf/user
/home/sneetsher/.config/dconf/user: GVariant Database file, version 0
system-db:gdm
: schreibgeschützt
$ file /etc/dconf/db/gdm
/etc/dconf/db/gdm: GVariant Database file, version 0
dconf
könnte zusätzlich zu GVariant Database einen Textstilspeicher aus db.d/*
Ordner binden . Beispiel (Beachten Sie den Dateipfad, der Teil von ist 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
...
Schemadateien: Beziehung zwischen schema id
&schema path
( *.gschema.xml
)
Was ist die Schema-XML-Datei im Ordner data / glib-2.0 meiner Quickly-Anwendung? by trent zeigt ein schönes Beispiel für die Verwendung der GSettings-API in einer Quickly-Anwendung und seine Schlussfolgerung basiert auf seinen Erfahrungen.
Zurück zu Vino. Jede Anwendung, die GSsettings verwendet, sollte ihre Schemas definieren und diese speichern / installieren /usr/share/glib-2.0/schemas/
(es ist ein glib-Verzeichnis):
$ 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>
...
Wenn Sie bemerkt haben, wird das Schema mit einem id
und einem definiert path
. Der Name der Schemadatei folgt dem id
Wert.
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
*.enums.xml
Dateien sind für die benutzerdefinierte Aufzählungsdeklaration vorgesehen und können als neue Datentypen in *.gschema.xml
derselben verwendet werden 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'
Kompilieren von Schemas (Ref: Spielen mit dconf und gnome-tweak-tool )
Im Rahmen des Installationsprozesses (es hat einen dpkg-Trigger) werden Schemas mit dem glib-compile-schemas
Tool (aus glib) kompiliert.
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
*.gschema.xml
wird zu einer Binärdatei kompiliert /usr/share/glib-2.0/schemas/gschemas.compiled
Vendor Override Files ( *.gschema.override
)
glib-compile-schemas
Liest neben Schemadateien auch Vendor-Override- Dateien. Hierbei handelt es sich um Schlüsseldateien, die Standardwerte für Schlüssel in den Schemas überschreiben können (Ref man glib-compile-schemas
. :) . Sie enthalten die Änderungen, die von der Ubuntu-Distribution vorgenommen wurden, um die Standardeinstellungen des Upstream-Schemas zu überschreiben.
$ 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']
Beispiel für die Verwendung von Override-Dateien, siehe So passen Sie die Ubuntu Live-CD an (5. Anpassung 2: Hintergründe und Designs).
Dateien sperren
Derzeit unterstützt dconf nur das Sperren pro Schlüssel, keine Unterpfadsperre. Benutzerdefinierte Werte werden weiterhin in gespeichert user-db
, haben jedoch keine Auswirkungen auf Anwendungen. dconf / gsettings gibt stattdessen Standardwerte für diese gesperrten Schlüssel zurück. Sperrdateien werden in gespeichert db.d/locks/
. Beispiel:
$ 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
...
Führen Sie folgende Schritte aus, um die Änderung der Sperren wirksam zu machen:
sudo dconf update
Ein gutes Schaufenster: dconf Einstellungen: Standardeinstellungen und Sperren
Globale Einstellungen ändern
Die Standardeinstellung für gsettings
/ dconf-editor
ist das Bearbeiten der user-db
. system-db
Schreiben Sie zum Ändern eine neue Überschreibungsdatei und kompilieren Sie die Schemas neu.
Ich konnte das nicht zum Laufen bringen:
sudo su gdm -c 'gsettings ...'
Weder die anderen Antworten, die Sie hier unter " Standardeinstellungen / Globale Gnome-Einstellungen festlegen" (Gnome 3) finden , beziehen sich auf eine ältere Version.