Introducción a gsettings
Upcoming SlideShare
Loading in...5
×
 

Introducción a gsettings

on

  • 1,056 views

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

Statistics

Views

Total Views
1,056
Views on SlideShare
1,054
Embed Views
2

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 2

http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Introducción a gsettings Introducción a gsettings Presentation Transcript

  • 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 ✔ 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
  • 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)
  • 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●
  • 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)
  • 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
  • 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>
  • 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
  • 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
  • Gsettings: APIFunciones más importantes● g_settings_new()● g_settings_get()● g_settings_set()● g_settings_bind()GSETTINGS_BACKEND