Introducción a GSettings,  DConf y otras historias         Juanjo Marín        jjmarin@gnome.org
¿Qué es GSettings?    GNOME 1               →       GNOME 2                     →       GNOME 3✔    gnome_config          ...
GSettingsBackends●   DConf (por defecto en GNOME)●   Windows Registry (por defecto en Windows)●   Memory (sólo lectura, bá...
GVariant●   La piedra angular sobre el que se basa Gsettings/Dconf es el    tipo de datos Gvariant●   Almacena un valor ju...
DConf●   Propuesto como estándar en freedesktop●   Optimizado para lectura (un inicio de sesión en GNOME supone    cientos...
Esquemas●   Ficheros XML bien definidos mediante un DTD●   Extensión .gschema.xml●   Se sigue las reglas de nombres de Dbu...
Esquemas II<?xml version="1.0" encoding="UTF-8"?><schemalist> <schema id="org.guadec-es.ej-gsettings" path="/org/guadec-es...
Distribuidores●    Es habitual que los distribuidores quieran modificar    algunos de los valores por defecto●    En lugar...
AdministradoresDCONF_PROFILE/etc/dconf/profile/nombre_perfil:  user_database  system1_database ....  system_nuser:  ${XDG_...
Gsettings: APIFunciones más importantes●    g_settings_new()●    g_settings_get()●    g_settings_set()●    g_settings_bind...
Upcoming SlideShare
Loading in...5
×

Introducción a gsettings

905

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
905
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introducción a gsettings

  1. 1. Introducción a GSettings, DConf y otras historias Juanjo Marín jjmarin@gnome.org
  2. 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. 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. 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. 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. 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. 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. 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. 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. 10. Gsettings: APIFunciones más importantes● g_settings_new()● g_settings_get()● g_settings_set()● g_settings_bind()GSETTINGS_BACKEND
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×