Introducción a gsettings

  • 833 views
Uploaded on

Presentacion usada en mi charla sobre gsettings y dconf en la GUADEC-es 2011 en Sevilla

Presentacion usada en mi charla sobre gsettings y dconf en la GUADEC-es 2011 en Sevilla

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
833
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introducción a GSettings, DConf y otras historias Juanjo Marín jjmarin@gnome.org
  • 2. ¿Qué es GSettings? GNOME 1 → GNOME 2 → GNOME 3✔ gnome_config ✔ GConf ✔ Gsettings✔ Ficheros de texto ✔ Fragmentar la complejidad ✔ Separación entre la API y similares a los .INI de de un fichero de texto en el almacenamiento Windows una estructura de directorio ✔ Mejora el rendimiento y ✔ Facilitar la gestión para mayor flexibilidad✔ Solución simple mayor volúmen de ✔ Opciones avanzadas: configuraciones. • sin restricciones de tipo con ✔ Introduce los esquemas y GVariant y enum las notificaciones de cambios • inicialización retardada
  • 3. GSettingsBackends● DConf (por defecto en GNOME)● Windows Registry (por defecto en Windows)● Memory (sólo lectura, básicamente es un GHashTable. Es el fallback backend)● Keyfile (ficheros tipo .ini)● Delayed que se usa de forma interna para las aplicación retardada de configuraciones● Null para bloquear cualquier intento de escritura● Plist (ficheros plist, propierty list)
  • 4. GVariant● La piedra angular sobre el que se basa Gsettings/Dconf es el tipo de datos Gvariant● Almacena un valor junto con información de su tipo● Puede ser consultado concurrentemente● Serialización eficiente● GVariant se basa en el tipo de datos de Dbus, pero introduce los tipos maybe/nullables(m) y los tipos indefinidos (*,?,r)● b=boolean, y=byte, n=int16, q=uint16, i=int32, u=uint32, x=int64, t=uint64, d=double, s=string●
  • 5. DConf● Propuesto como estándar en freedesktop● Optimizado para lectura (un inicio de sesión en GNOME supone cientos de lecturas y sólo 2 escrituras)● Aprovecha el planificador de E/S del kernel inundándolo con todas las peticiones de lectura de las aplicaciones en lugar de hacer las peticiones de una en una● Mediante el uso de un formato binario se eliminan los problemas de fragmentación de Gconf de ficheros xml en una estructura de directorios● Sólo 7 veces más lento GHashTable (1 µs por búsqueda)
  • 6. Esquemas● Ficheros XML bien definidos mediante un DTD● Extensión .gschema.xml● Se sigue las reglas de nombres de Dbus● Tipos de datos flexibles: ● Gvariant ● enumerados mediante los elementos <choice>, <enum> o <flags>● Esquemas compilados con glib-compile-schemas
  • 7. Esquemas II<?xml version="1.0" encoding="UTF-8"?><schemalist> <schema id="org.guadec-es.ej-gsettings" path="/org/guadec-es/ej-gsettings/"> <key type="b" name="fluzo"> <default>false</default> <summary>Condensador de fluzo</summary> <description>Estado de activación del condensador de fluzo</description> </key> </schema></schemalist>
  • 8. Distribuidores● Es habitual que los distribuidores quieran modificar algunos de los valores por defecto● En lugar de parchear los esquemas se usan “vendor overrides”● En el mismo directorio que los esquemas● Usan la extensión .gschema.override
  • 9. AdministradoresDCONF_PROFILE/etc/dconf/profile/nombre_perfil: user_database system1_database .... system_nuser: ${XDG_CONFIG_HOME}/dconf/ (normalmente ~/.config/dconf/). formato binario GVDBsystem: /etc/dconf/db/ formato binario GVDB
  • 10. Gsettings: APIFunciones más importantes● g_settings_new()● g_settings_get()● g_settings_set()● g_settings_bind()GSETTINGS_BACKEND