Gconf, Dconf, Gsettings e a relação entre eles

65

Estou tentando entender como o Gconf, o Dconf e o Gsettings funcionam e qual é a relação entre eles.

Tudo o que sei é:

  • Gconf - banco de dados baseado em XML (sistema backend). O mais velho.
  • Dconf - banco de dados baseado em BLOB (sistema de back-end). O mais novo.
  • Gsettings - ferramenta CLI para editar configurações. Parece que funciona apenas com o Dconf (embora eu tenha visto em algum lugar que ele pode funcionar com o Gconf).

Eu sei que para o Gconf existe uma GUI - Gconf-editor, e para o Dconf - Dconf-editor.

Assim:

  1. Qual sistema de back-end é mais usado - Dconf ou Gconf?
  2. Gsettings funciona com os dois? E por que não mostra todos os esquemas Dconf?
  3. Onde o Dconf salva seus dados?
idgar
fonte
Eu estaria particularmente interessado em quais configurações são tratadas por qual ferramenta (dconf ou gsettings) e por que existem diferenças?
Johm 21/09

Respostas:

39

GConf é obsoleto. É a antiga API e sistema de configuração do GNOME 2.x, e foi substituída pelo DConf / GSettings em versões mais recentes. No entanto, alguns aplicativos ainda o usam.

GSettings é uma implementação GLib do DConf, que armazena seus dados em um banco de dados binário.

A gsettingsferramenta de linha de comando é simplesmente uma ferramenta para acessar ou modificar configurações por meio da API GSettings, da mesma maneira que a gconftoolferramenta de linha de comando mais antiga é para o GConf.

dobey
fonte
11
O GSettings também funciona com o GConf?
Idgar
3
Não, o GSettings é uma implementação da especificação DConf. A ferramenta de linha de comando não funciona com o gconf. No entanto, algumas camadas de compatibilidade atualmente em uso no Ubuntu, nas quais a alteração de uma configuração em gsettings ou gconf, resultará na propagação da alteração para a outra. Isso não é comum, porém, e não é algo em que confiar.
Dobey
Outra coisa, vi em algum lugar que o GSettings funciona com arquivos de configuração. há algo sobre isso? e por que o GSettings não mostra os mesmos esquemas que o DConf-editor?
Idgar
11
A parte interessante a saber seria quais configurações são gerenciadas por qual ferramenta? As chaves presentes ao usar o dconf ou o dconf-editor são diferentes daquelas acessíveis com gsettings, por exemplo, existe um menu de teclas / com / canonical / unity / sempre-show acessível através do dconf, mas não existe uma chave equivalente acessível através do gsettings no Ubuntu 15.04.
Johsm
11
@ Dobey: obrigado por ajudar com isso. O que realmente estou procurando é: como funciona o mapeamento entre a chave que eu tenho que usar no dconf e a chave que tenho que usar com o gsettings? Se eu conheço um, existe uma maneira algorítmica de encontrar o outro? No meu caso concreto, recebi / com / canonical / unity / always-show-menus - agora como eu encontraria a chave apropriada para as configurações? Se ambos usarem os mesmos dados subjacentes, não deve haver um mapeamento lógico? Ou ainda estou faltando alguma coisa?
Johsm
43

O Dconf é um repositório de dados projetado para armazenar configurações. É a substituição do Gconf , que foi usado para o mesmo propósito. Eventualmente, nenhum programa deve mais depender do Gconf.

Gsettings é uma biblioteca de desenvolvimento usada para ler e gravar em um back-end do armazenamento de configuração. No Linux, ele usa o Dconf, mas no Windows, no registro e no OS X, no armazenamento de dados nativo.

Recomenda-se que desenvolvedores de aplicativos e usuários finais usem Gsettings, não o Dconf diretamente.

Veja também:

Flimm
fonte