GSettings : API

Comment utiliser un schéma GSettings chargé dans une application : lecture / écriture des clés et écoute des modifications.

Présentation

Il n'est pas question ici de faire un tour complet de l'API de GSettings ; la documentation Gnome le fait très bien. Ne sont abordés ici que 2 points essentiels : la lecture / écriture des clés d'un schéma et l'écoute des changements de valeur de ces clés. Un troisième point, la liaison entre une clé et un composant graphique, est traité en détail dans l'article suivant : GSettings : écran de configuration.

Les exemples de code suivants partent du principe que la méthode d'acquisition d'un objet Gsettings (get_settings) décrite dans l'article précédent est disponible.

Lecture / écriture de clé

settings = get_settings('org.myapp', '/path/to/myapp/data/schema')

# Lecture de valeurs
strvalue = settings.get_string('strkey')
boolvalue = settings.get_boolean('boolkey')
intvalue = settings.get_int('intkey')

# Nouvelles valeurs
settings.set_string('strkey', 'new string')
settings.set_boolean('boolkey', False)
settings.set_int('intkey', 10)
Exemple de lecture / écriture de clés GSettings en python.
var settings = get_settings('org.myapp', '/path/to/myapp/data/schema');

// Lecture de valeurs
var strvalue = settings.get_string('strkey');
var boolvalue = settings.get_boolean('boolkey');
var intvalue = settings.get_int('intkey');

// Nouvelles valeurs
settings.set_string('strkey', 'new string');
settings.set_boolean('boolkey', false);
settings.set_int('intkey', 10);
Exemple de lecture / écriture de clés GSettings en javascript.

Ecoute des modifications

L'événement changed est émis lors de la modification d'une clé de l'objet GSettings. Pour être uniquement à l'écoute des modifications d'une clé particulière « x », il faut plutôt écouter l'événement changed::x.

def on_settings_changed(settings, key, data = None):
    print key + ' has changed'

def on_strkey_changed(settings, key, data = None):
    print 'strkey has changed'

settings = get_settings('org.myapp', '/path/to/myapp/data/schema')
settings.connect('changed', on_settings_changed)
settings.connect('changed::strkey', on_strkey_changed)
Exemple d'écoute des événements changed en python.
var on_settings_changed = function (settings, key, data) {
    print(key + ' has changed');
};

var on_strkey_changed = function (settings, key, data) {
    print('strkey has changed');
};

var settings = get_settings('org.myapp', '/path/to/myapp/data/schema');
settings.connect('changed', on_settings_changed);
settings.connect('changed::strkey', on_strkey_changed);
Exemple d'écoute des événements changed en javascript.

Ressources et références

GIO Reference Manual. Gnome Dev Center. GSettings

GIO Reference Manual. Gnome Dev Center. Running GIO applications

BASTIAN, Waldo ; LORTIE, Ryan ; POETTERING, Lennart. XDG Base Directory Specification. freedesktop.org

GConf Reference Manual. Gnome Dev Center

CARRICK, Micah. Using GSettings with Python/PyGObject. micahcarrick.com,

Extensions. Gnome Live, . Extension Preferences