Что такое dconf, какова его функция и как ее использовать?


78

Марк Шаттлворт недавно написал в блоге о решении включить библиотеки Qt в выпуск 11.10 вместе с продолжением Jono Bacon. Марк утверждает, что самой большой проблемой для интеграции приложений, написанных на Qt, в большую систему Ubuntu является текущая несовместимость Qt с dconf.

Что такое dconf и какую роль он играет в Ubuntu?


Ответы:


88

Введение

Поскольку другие ответы на этом сайте обсуждаются gconfи dconfвместе, я просто сконцентрируюсь на обсуждении инструментов командной строки, таких как gsettingsи графический интерфейс dconf-editor, которые используются для доступа к dconfбазе данных.

На официальном сайте GNOME отмечается, что

dconf - это система конфигурации низкого уровня. Его основная цель - предоставить бэкенд для GSettings на платформах, которые еще не имеют систем хранения конфигурации.

dconf - это простая система конфигурации на основе ключей. Ключи существуют в неструктурированной базе данных (но предполагается, что ключи, которые логически связаны друг с другом, сгруппированы вместе).

Наличие всех ключей в одном компактном двоичном формате также позволяет избежать интенсивных проблем фрагментации, которые в настоящее время возникают при использовании метода дерева каталогов xml-файлов.

dconf оптимизирован для чтения. Как правило, чтение ключа из dconf предполагает отсутствие системных вызовов и переключение контекста. Записи менее оптимизированы - они пересекают шину и обрабатываются «писателем» - службой DBus - обычным способом.

Использование gsettingsдля просмотра и изменения настроек

Как только человек узнает, gsettingsэто может быть так же легко, как графический интерфейс dconf-editor. Опции можно перечислить, введя man gsettingsили перейдя к страницам справки Ubuntu онлайн .

ПРИМЕЧАНИЕ. Поскольку в каждой системе установлены разные программы, возможно, вам придется заменить определенные элементы, которые я выбираю, разными, когда вы экспериментируете самостоятельно, поскольку я использую XUbuntu XFce с довольно большим количеством программ GNOME.

Чтобы получить список всех доступных схем, введите

gsettings list-schemas

Чтобы также включить все ключи, введите

gsettings list-recursively

Однако , как правило, проще указать, что вы хотите, например,

gsettings list-schemas | grep -i shotwell

Это возвращает длинный список; Я сократил это до:

org.yorba.shotwell
org.yorba.shotwell.preferences.ui
org.yorba.shotwell.preferences.slideshow
org.yorba.shotwell.plugins.enable-state
org.yorba.shotwell.printing
org.yorba.shotwell.preferences.editing
org.yorba.shotwell.preferences.files

Теперь, когда вы нашли интересующую вас схему, перечислите ключи с помощью

gsettings list-keys org.yorba.shotwell.preferences.ui

Это возвращает список (снова я сократил его):

background-color
display-basic-properties
display-extended-properties
display-photo-ratings
display-photo-tags
display-photo-titles
event-photos-sort-ascending
event-photos-sort-by

Выберите один и посмотрите, что текущее значение с

gsettings get org.yorba.shotwell.preferences.ui display-photo-tags

Это возвращает значение true, поэтому чтобы изменить его, используйте

gsettings set org.yorba.shotwell.preferences.ui display-photo-tags false

Это тривиальные примеры, но в основном они показывают, как ключи и значения идентифицируются и изменяются gsettings.

Использование dconf-editor для изменения настроек

Программа с графическим интерфейсом dconf-editorустанавливается с пакетом dconf-tools , нажав здесь или запустив

sudo apt-get install dconf-tools

Затем запустите его, введя в терминале или в меню быстрого запуска, dconf-editor.

Как вы можете видеть на скриншоте, все различные схемы можно развернуть с левой стороны и выбрать соответствующую клавишу. Это очень просто, чтобы перейти к значению, которое вы хотите (в этом случае gnome-mplayerпредпочтения). Вы можете установить флажок, чтобы активировать значение, или добавить числовое значение в одно из других полей. Вы также можете искать в редакторе dconf с помощью сочетания клавиш Ctrl+ F.

введите описание изображения здесь

Вы также можете добавить другую log-viewerзапись журнала, добавив путь в форме ['/var/log/auth.log', var .... '] на снимке экрана ниже.

введите описание изображения здесь

Заключение

Есть много других полезных способов настройки параметров, gsettingsи dconf-editorони просты в использовании. Стоит просмотреть их, чтобы увидеть, есть ли там опции, которых нет в настройках программы, так как вы можете настроить свою программу так, как вам хочется. Как недавно продемонстрировала свобода действий в этом вопросе

зная, как использовать gsettingsили dconf-editorчрезвычайно ценно. Смотрите также:


5
Поскольку программы gsettingsи dconf-editorработают как в dconfбазе данных, почему они не показывают ту же информацию? gsetting12.04 показывает значения для схемы com.canonical.Unity.Launcherи ключа, favoritesно dconf-editorдаже не предлагает, не com.canonical.Unityговоря уже о полной схеме или ключе.
AH

@ АХ: хороший вопрос. Я спросил это здесь: askubuntu.com/q/243409/2355
Flimm

@AH Мне жаль, что я забыл ответить на ваш комментарий: я не могу комментировать Unity, потому что я на Xubuntu, но Flimm задал отдельный вопрос, который должен получить хорошие ответы.

4
Но что делает dconf несовместимым с Qt, инструментарием GUI?
Салман фон Аббас

На RHEL / CentOS используйте yum install dconf-editorдля установки инструмента с графическим интерфейсом.
Марк Эдингтон

26

Для тех, кто приходит из Windows и хочет получить простой ответ, dconf - это эквивалент gnome для реестра Windows ... большое двоичное дерево, в котором любая программа может хранить и обмениваться своей конфигурацией.

Сначала они мигрировали из традиционных конфигураций Unix (по одному текстовому файлу для каждого приложения, каждый со своим собственным форматом) в стандартное дерево XML-файлов, управляемое gconf. В последнее время, когда почти никто не редактировал эти XML-файлы напрямую и проблемы с производительностью чтения и анализа MANY-файлов, они мигрировали в двоичный формат путем перехода с gconf на dconf.

В отличие от реестра Windows, в dconf должны быть перечислены все записи конфигурации, даже если для них заданы значения по умолчанию. Таким образом, нет никаких скрытых записей, вы можете изменить их или затем легко сбросить до значений по умолчанию.


10

dconf не специфичен для Ubuntu, это технология GNOME, используемая для хранения настроек приложения. Для более подробной информации, пожалуйста, прочитайте http://live.gnome.org/dconf


Какая связь между dconf и gconf?
psusi

10
dconf - это замена GNOME3 для gconf, которая не поддерживалась в течение некоторого времени. Также ожидается, что dconf принесет улучшение производительности по сравнению с gconf (актуально для запуска приложений).
Жоау Пинту

1
На вопрос из комментария psusi выше частично отвечают ответы на вопрос « Почему спор о dconf и gconf? ». Я уверен, что psusi знает об этом, прокомментировав вопрос, но если кто-то еще захочет узнать больше, это так.
Firefeather
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.