Tout d'abord, les applications ne doivent pas jouer avecdconf
Introduction de la page du projet dconf :
dconf
est un système de configuration de bas niveau. Son objectif principal est de fournir un backend à GSettings sur des plates-formes qui ne disposent pas déjà de systèmes de stockage de configuration.
Où sont les données stockées? (Réf.: Https://wiki.gnome.org/Projects/dconf/SystemAdministrators )
Un profil est une liste de bases de données de configuration. Il semble que Gnome & Unity utilise le même profil.
$ cat /etc/dconf/profile/gdm
user-db:user
system-db:gdm
user-db:user
: La première base de données du profil est en lecture-écriture rw
et elle est créée dans le répertoire de base de l'utilisateur.
$ file ~/.config/dconf/user
/home/sneetsher/.config/dconf/user: GVariant Database file, version 0
system-db:gdm
: lecture seulement
$ file /etc/dconf/db/gdm
/etc/dconf/db/gdm: GVariant Database file, version 0
dconf
pourrait lier un magasin de styles de texte en plus de la base de données GVariant à partir d'un db.d/*
dossier. Exemple (Remarquez le chemin du fichier, il en fait donc partie 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
...
Fichiers de schéma: relation entre schema id
&schema path
( *.gschema.xml
)
Quel est le fichier XML du schéma dans le dossier data / glib-2.0 de mon application Quickly?by trent montre un bel exemple d'utilisation de GSettings API dans une application Quickly, ainsi que sa conclusion basée sur son expérience.
Retour à Vino. Chaque application utilisant GSsettings doit définir son schéma et les stocker / installer dans/usr/share/glib-2.0/schemas/
(c'est un répertoire 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>
...
Si vous avez remarqué, le schéma est défini avec un id
et un path
. Le nom du fichier de schéma suit la id
valeur.
<schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
*.enums.xml
les fichiers sont destinés à une déclaration d'énumération personnalisée, à utiliser comme nouveaux types de données *.gschema.xml
avec les mêmes 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'
Compilation de schémas (Réf: Jouer avec dconf et gnome-tweak-tool )
Dans le cadre du processus d’installation (avec un déclencheur dpkg), les schémas sont compilés avec glib-compile-schemas
tool (à partir de glib)
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
*.gschema.xml
sera compilé dans un fichier binaire /usr/share/glib-2.0/schemas/gschemas.compiled
Fichiers de substitution de fournisseur ( *.gschema.override
)
En plus des fichiers de schéma, glib-compile-schemas
lit les fichiers de substitution du fournisseur , qui sont des fichiers de clé pouvant remplacer les valeurs par défaut des clés dans les schémas (Ref:) man glib-compile-schemas
. Ils contiennent les modifications apportées par la distribution Ubuntu pour remplacer les valeurs par défaut du schéma en amont.
$ 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']
Exemple d'utilisation de fichiers de substitution, voir Comment personnaliser le CD Ubuntu Live? (5. Personnalisation 2: Arrière-plans et thèmes).
Verrouiller les fichiers
Actuellement, dconf ne prend en charge que le verrouillage par clé, pas de verrouillage de sous-chemin. Les valeurs définies par l'utilisateur seront toujours stockées dans, user-db
mais n'auront aucun effet sur les applications. dconf / gsettings renvoie les valeurs par défaut pour ces clés verrouillées. Les fichiers de verrouillage sont stockés dans db.d/locks/
. Exemple:
$ 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
...
Après la modification des verrous, pour être efficace:
sudo dconf update
Une bonne vitrine: Paramètres dconf: valeurs par défaut et verrous
Modification des paramètres globaux
La valeur par défaut pour gsettings
/ dconf-editor
est de modifier le fichier user-db
. Changersystem-db
, écrivez un nouveau fichier de remplacement et recompilez le schéma.
Je n'arrivais pas à faire fonctionner ça:
sudo su gdm -c 'gsettings ...'
ni les autres réponses ici Définir les préférences par défaut / globales du gnome (gnome 3) , cela peut être une ancienne version.
dconf dump /
toutes les entrées modifiées par l'utilisateur sont vidées. Les entrées jamais modifiées ou réinitialisées ne sont pas incluses. (par exemple, les entrées ont été modifiées ou définies même si leurs valeurs sont identiques à celles par défaut). Voir askubuntu.com/q/420527/26246 . Aussi n'est pas la base de données entière, vous pouvez définir le chemin. ex:dconf dump /com/
dconf load / < file
sans se connecter en tant qu'utilisateur.sudo su username2 -c "dconf load / < file"