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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducción a gsettings

875
views

Published 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


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

  • Be the first to like this

No Downloads
Views
Total Views
875
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
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

×