Gconf, Dconf, Gsettings и отношения между ними

65

Я пытаюсь понять, как работают Gconf, Dconf и Gsettings и каковы отношения между ними.

Все, что я знаю, это:

  • Gconf - база данных на основе XML (бэкэнд-система). Старшая
  • Dconf - База данных на основе BLOB (бэкэнд-система). Более новый.
  • Gsettings - инструмент CLI для редактирования настроек. Похоже, он работает только с Dconf (хотя я где-то видел, что он может работать с Gconf).

Я знаю, что для Gconf есть GUI - Gconf-редактор, а для Dconf - Dconf-редактор.

Так:

  1. Какая бэкэнд-система используется чаще - Dconf или Gconf?
  2. Gsettings работает с ними обоими? И почему он не показывает все схемы Dconf?
  3. Где Dconf сохраняет свои данные?
idgar
источник
Мне было бы особенно интересно узнать, какие настройки обрабатываются каким инструментом (dconf или gsettings) и почему существуют различия?
Johsm

Ответы:

39

GConf устарел. Это более старый API и система конфигурации GNOME 2.x, и в более новых версиях его заменили DConf / GSettings. Тем не менее, некоторые приложения все еще используют его.

GSettings - это GLib-реализация DConf, которая хранит свои данные в двоичной базе данных.

Инструмент gsettingsкомандной строки - это просто инструмент для доступа или изменения настроек через API-интерфейс GSettings, точно так же, как более старый gconftoolинструмент командной строки для GConf.

Добей
источник
1
GSettings также работает с GConf?
idgar
3
Нет, GSettings является реализацией спецификации DConf. Инструмент командной строки не работает с gconf. Однако в Ubuntu в настоящее время используются некоторые слои совместимости, где изменение параметра в gsettings или gconf приведет к распространению изменения на другой. Это не обычное дело, и не на что можно положиться.
Добей
Другое дело, я где-то видел, что GSettings работает с файлами конфигурации. есть что-то об этом? и почему GSettings не показывает те же схемы, что и DConf-редактор?
idgar
1
Интересно знать, какими настройками управляет какой инструмент? Ключи, которые присутствуют при использовании dconf или dconf-editor, отличаются от тех, которые доступны с помощью gsettings, например, есть ключ / com / canonical / unity / always-show-menu, доступный через dconf, но нет эквивалентного ключа, доступного через gsettings в Ubuntu 15.04.
Johsm
1
@dobey: спасибо за помощь в этом. Что я действительно хочу, так это то, как: как работает отображение ключа, который я должен использовать в dconf, и ключа, который я должен использовать с gsettings? Если я знаю один, есть ли алгоритмический способ найти другой? В моем конкретном случае мне дали / com / canonical / unity / always-show-menus - теперь, как мне найти подходящий ключ для gsettings? Если оба используют одни и те же базовые данные, не должно ли быть логическое отображение? Или я все еще что-то упускаю?
Johsm
43

Dconf - это хранилище данных, предназначенное для хранения конфигурации. Это замена для Gconf , который был использован для той же цели. В конце концов, никакие программы больше не должны зависеть от Gconf.

Gsettings - это библиотека разработки, используемая для чтения и записи в бэкэнд хранилища конфигурации. В Linux он использует Dconf, но в Windows он использует реестр, а в OS X он использует собственное хранилище данных.

Разработчикам приложений и конечным пользователям рекомендуется использовать Gsettings, а не Dconf напрямую.

Смотрите также:

Флимм
источник