41 votes

dconf-editor et gsettings ne devraient-ils pas accéder à la même base de données ?

Il s'agit d'une question essentiellement "académique" --- pour essayer de mieux comprendre les rouages du système de configuration.

Je comprends que le dconf est le nouveau système de configuration de gnome3 qui a remplacé le système (déprécié) gconf ce qui ressort clairement de Gconf, Dconf, Gsettings et la relation entre eux .

Il me semblait que les programmes gsettings y dconf-editor qui sont juste deux façons différentes d'accéder au même dconf ce qui est corroboré dans
Qu'est-ce que dconf, quelle est sa fonction, et comment l'utiliser ?

EDIT : J'ai découvert que quelqu'un l'a remarqué comme une différence de casse dans un nom de schéma, voir ici --- Les noms de schémas dconf sont-ils sensibles à la casse ? Mais il semble que les différences ne se limitent pas à cela. Dans l'une des réponses, il y a un exemple d'inadéquation, mais je n'ai pas trouvé d'explication de l'expression "inadéquation". pourquoi .

Mais dernièrement, j'ai découvert que les clés accessibles à partir de gsettings y dconf-editor ne sont pas les mêmes. Par exemple, les paramètres de vino sont en dconf-editor sous org.gnome.desktop.remote-access (voir la capture d'écran ci-dessous) alors que dans gsettings ils sont sous org.gnome.Vino . Il existe une documentation qui explique la différence ?

En gsettings :

(0)samsung-romano:~/tmp/try% gsettings list-recursively org.gnome.Vino
org.gnome.Vino alternative-port uint16 5900
org.gnome.Vino authentication-methods ['none']
org.gnome.Vino disable-background false
[...]

et :

(0)samsung-romano:~/tmp/try% gsettings list-recursively org.gnome.desktop.remote-access
No such schema 'org.gnome.desktop.remote-access'

Mais en dconf-editor :

dconf-editor

45voto

user.dz Points 45060
  • dconf-editor utilise schema path pour afficher l'arbre de données des paramètres. Même structure que celle utilisée pour stocker les données dans la base de données GVariant.

  • gsettings (de glib-2.0) utilise schema id pour afficher/obtenir les données de paramétrage. De la même manière que toute autre application qui utilise l'API GSetttings.

  • C'est au développeur de l'application de définir les deux comme il/elle le souhaite. (avec quelques restrictions pour le nommage canonique). Donc path pourrait être différent de id mais la plupart des développeurs d'applications préfèrent utiliser des séries/combinaisons de mots identiques. Certains ne préservent pas la même capitalisation. Exemple Projet de suivi de Gnome

    <schema id="org.freedesktop.Tracker.Miner" path="/org/freedesktop/tracker/miner/" />

    En outre, certaines applications alternatives partagent les mêmes paramètres que le bureau Gnome. Exemple : input-sources


  • D'abord, Les applications ne doivent pas se mêler de dconf

    Introduction de dconf page du projet :

    dconf est un système de configuration de bas niveau. Son objectif principal est de fournir un backend à GSettings sur les plateformes qui n'ont pas encore de système de stockage de configuration.

  • Où sont stockées les donné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 et Unity utilisent le même profil.

    $ cat /etc/dconf/profile/gdm
    user-db:user
    system-db:gdm
    1. user-db:user : La première base de données du profil est en lecture-écriture rw et il est créé dans le répertoire personnel de l'utilisateur.

      $ file ~/.config/dconf/user
      /home/sneetsher/.config/dconf/user: GVariant Database file, version 0
    2. system-db:gdm : en lecture seule

      $ file /etc/dconf/db/gdm
      /etc/dconf/db/gdm: GVariant Database file, version 0

      dconf pourrait lier un magasin de style de texte en plus de la base de données GVariant de db.d/* dossier. Exemple (Notez le chemin du fichier, il fait donc partie de 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 ? par trent montre un bel exemple d'utilisation de l'API GSettings dans une application Quickly, et sa conclusion basée sur son expérience.

    Retour au Vino. Chaque application qui utilise GSsettings doit définir ses schémas et les stocker/installer dans le répertoire /usr/share/glib-2.0/schemas/ (C'est un répertoire de la désinvolture) :

    $ 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 le id valeur.

    <schema id='org.gnome.Vino' path='/org/gnome/desktop/remote-access/'>
  • *.enums.xml sont destinés à la déclaration d'énumérations personnalisées, qui seront utilisées comme nouveaux types de données dans le système de gestion des données. *.gschema.xml avec le même 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 des schémas (Réf : Jouer avec dconf et gnome-tweak-tool )

    Dans le cadre du processus d'installation (il a un déclencheur dpkg), les schémas sont compilés avec glib-compile-schemas outil (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 dérogation du vendeur ( *.gschema.override )

    En plus des fichiers de schéma, glib-compile-schemas lit remplacement du vendeur qui sont des fichiers de clés pouvant remplacer les valeurs par défaut des clés dans les schémas (réf : man glib-compile-schemas ). Ils contiennent les changements effectués par la distribution Ubuntu pour remplacer les schémas par défaut 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 des fichiers d'annulation, voir Comment personnaliser le Live CD d'Ubuntu ? (5. Personnalisation 2 : Arrière-plans et thèmes).

  • Verrouiller les fichiers

    Actuellement, dconf ne supporte que le verrouillage par clé, pas de verrouillage par sous-chemin. Les valeurs définies par l'utilisateur seront toujours stockées dans user-db mais n'aura aucun effet sur les applications. dconf/gsettings retourne des valeurs par défaut à la place 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 serrures, pour être efficace courir :

    sudo dconf update

    Une bonne vitrine : dconf Paramètres : valeurs par défaut et verrous

  • Modifier les paramètres globaux

    La valeur par défaut pour gsettings / dconf-editor est d'éditer le user-db . Pour changer system-db écrire un nouveau fichier de remplacement et recompiler les schémas.

    Je n'ai pas réussi à le faire fonctionner :

    sudo su gdm -c 'gsettings ...'

    ni les autres réponses ici Définir les préférences par défaut/globales de Gnome (Gnome 3) Peut-être que c'était pour une ancienne version.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X