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 зберігає свої дані?

Мене особливо зацікавить, у яких настройках обробляється який інструмент (dconf чи gsettings) і чому є відмінності?
Джонс

Відповіді:


38

GConf застарілий. Це старший API конфігурації GNOME 2.x та система, і його замінили DConf / GSettings в новіших версіях. Однак деякі програми все ще використовують його.

GSettings - це реалізація DConf GLib, яка зберігає свої дані у двійковій базі даних.

Інструмент gsettingsкомандного рядка - це просто інструмент для доступу чи зміни параметрів через API GSettings так само, як і старіший gconftoolінструмент командного рядка для GConf.


1
Чи працює GSettings і з GConf?
ідгар

3
Ні, GSettings - це реалізація специфікації DConf. Інструмент командного рядка не працює з gconf. Однак, деякі шари сумісності, які зараз використовуються в Ubuntu, де зміна налаштування в gsettings або gconf призведе до того, що зміна буде поширюватися на інший. Це, однак, не є звичайним і не на чому покладатися.
добі

інша річ, я десь бачив, що GSettings працює з файлами конфігурації. є щось про це? і чому GSettings не показує ті ж схеми, що і DConf-редактор?
ідгар

1
Цікава частина, якою слід знати, якими налаштуваннями керується за допомогою якого інструменту? Клавіші, які є при використанні dconf або dconf-редактора, відрізняються від доступних за допомогою gsettings, наприклад, є ключ / com / canonical / Jedinstvo / меню завжди показу, доступний через dconf, але немає аналогічного ключа, доступного через gsettings в Ubuntu 15.04.
Джонс

1
@dobey: дякую за допомогу в цьому. Що я насправді хотів, це те, як працює відображення ключа, який я повинен використовувати в dconf, і ключа, який я повинен використовувати для gsettings? Якщо я знаю одне, чи існує алгоритмічний спосіб знайти інший? У моєму конкретному випадку мені дали / com / canonical / Единство / завжди показувати меню - тепер, як я можу знайти відповідний ключ для gsettings? Якщо обидва використовують однакові базові дані, чи не повинно бути логічного відображення? Або я все-таки щось пропускаю?
Джонс

43

Dconf - це сховище даних, призначене для зберігання конфігурації. Це заміна Gconf , який використовувався з тією ж метою. Зрештою, жодна програма більше не повинна залежати від Gconf.

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

Розробникам програм та кінцевим користувачам рекомендується використовувати Gsettings, а не Dconf безпосередньо.

Дивитися також:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.