Gconf, Dconf, Gsettings y la relación entre ellos.

65

Estoy tratando de entender cómo funcionan Gconf, Dconf y Gsettings y cuál es la relación entre ellos.

Todo lo que sé es:

  • Gconf : base de datos basada en XML (sistema de fondo). El mayor
  • Dconf : base de datos basada en BLOB (sistema de fondo). El mas nuevo.
  • Gsettings : herramienta de CLI para editar configuraciones. Parece que solo funciona con Dconf (aunque vi en algún lugar que podría funcionar con Gconf).

Sé que para Gconf hay una GUI - Gconf-editor, y para Dconf - Dconf-editor.

Entonces:

  1. ¿Qué sistema de fondo se usa con más frecuencia: Dconf o Gconf?
  2. ¿Gsettings funciona con ambos? ¿Y por qué no muestra todos los esquemas de Dconf?
  3. ¿Dónde guarda Dconf sus datos?
idgar
fuente
Me interesaría particularmente qué configuraciones son manejadas por qué herramienta (dconf o gsettings) y por qué hay diferencias.
Johsm

Respuestas:

39

GConf es obsoleto. Es la API y el sistema de configuración GNOME 2.x anteriores, y ha sido reemplazado por DConf / GSettings en versiones más recientes. Sin embargo, algunas aplicaciones todavía lo usan.

GSettings es una implementación GLib de DConf, que almacena sus datos en una base de datos binaria.

La gsettingsherramienta de línea de comando es simplemente una herramienta para acceder o modificar la configuración a través de la API GSettings, de la misma manera que la gconftoolherramienta de línea de comando anterior es para GConf.

dobey
fuente
1
¿GSettings también funciona con GConf?
idgar
3
No, GSettings es una implementación de la especificación DConf. La herramienta de línea de comando no funciona con gconf. Sin embargo, hay algunas capas de compatibilidad actualmente en uso en Ubuntu, donde cambiar una configuración en gsettings o gconf, dará como resultado que el cambio se propague a la otra. Sin embargo, esto no es común y no es algo en lo que confiar.
dobey
Otra cosa, vi en algún lugar que GSettings funciona con archivos de configuración. ¿hay algo al respecto? ¿Y por qué GSettings no muestra los mismos esquemas que DConf-editor?
idgar
1
La parte interesante a saber sería qué configuraciones son administradas por qué herramienta. Las teclas que están presentes cuando se usa dconf o dconf-editor son diferentes de aquellas accesibles con gsettings, por ejemplo, hay una tecla / com / canonical / unity / always-show-menus accesible a través de dconf pero no hay una tecla equivalente accesible a través de gsettings en Ubuntu 15.04.
Johsm
1
@dobey: gracias por ayudar con esto. Sin embargo, lo que realmente busco es: ¿cómo funciona la asignación entre la clave que tengo que usar en dconf y la clave que tengo que usar con gsettings? Si conozco uno, ¿hay alguna forma algorítmica de encontrar el otro? En mi caso concreto, me dieron / com / canonical / unity / always-show-menus, ¿cómo puedo encontrar la clave adecuada para gsettings? Si ambos usan los mismos datos subyacentes, ¿no debería haber una asignación lógica? ¿O todavía me falta algo?
Johsm
43

Dconf es un almacén de datos diseñado para almacenar la configuración. Es el reemplazo de Gconf , que se utilizó con el mismo propósito. Finalmente, ningún programa debería depender más de Gconf.

Gsettings es una biblioteca de desarrollo que se usa para leer y escribir en un backend del almacén de configuración. En Linux, usa Dconf, pero en Windows, usa el registro, y en OS X, usa un almacén de datos nativo.

Se recomienda a los desarrolladores de aplicaciones y usuarios finales que utilicen Gsettings, no Dconf directamente.

Ver también:

Flimm
fuente