Dconf
Описание
dconf – низкоуровневая система конфигурации. Система конфигурации dconf сохраняет настройки в виде реестра, работая в связке с утилитой GSettings. dconf используется в различных средах, и в частности, для управления окружением MATE.
Dconf это простая система конфигурации основанная на ключах. Ключи находятся в неструктурированной базе данных (ключи, логически связанные между собой, объединены в категории). База данных хранится в бинарном файле в формате GVDB (GVariant Database), который используется для эффективного хранения пар ключ-значение.
Dconf основан на концепции «профиля», который представляет собой список баз данных конфигурации. Профиль определяет порядок загрузки этих баз, задавая приоритеты при чтении и записи данных. Базы данных бывают системные, хранящиеся в /etc/dconf/db/, и пользовательские, расположенные в ~/.config/dconf/user. Пользовательские настройки перезаписывают системные для конкретного пользователя. В профиле базы данных расположены в порядке приоритета вычитывания, с первой в списке имеющей наивысший приоритет. Dconf также поддерживает "блокировки", которые предотвращают изменение ключей в базах данных, следующих за заблокированным ключом, если блокировка выставлена в нескольких базах, то приоритет вычитывания будет инвертирован.
Для обеспечения возможности настройки системы с помощью текстового редактора в dconf были введены каталоги с ключевыми файлами. Для любой системной базы данных можно создать соответствующий каталог (с добавлением ".d" к имени файла, например, "/etc/dconf/db/local.d"). Этот каталог содержит ключевые файлы в специальном формате, которые можно скомпилировать в базу данных dconf с помощью команды
dconf compile local /etc/dconf/db/local.d
Правка параметров производится либо через консольные утилиты dconf, gsettings или через графическое приложение Dconf-editor.
Установка редактора
$ su - # apt-get install dconf-editor
Dconf-profile
Традиционный базовый профиль:
user-db:user system-db:local
Для более гибкого управления конфигурацией через групповые политики была разработана схема, включающая дополнительные уровни:
user-db:user system-db:policy system-db:policy{uid} system-db:local system-db:default system-db:local system-db:policy{uid} system-db:policy
Особенности
Ограничения: предлагаемые рецепты охватывают окружения рабочих столов, для настройки которых используются dconf и gsettings (MATE, GNOME, и т.д. ...).
Команды gsettings
Dconf хранит пары "ключ-значение" без контроля типов данных, что может усложнять управление. G-Settings решает эту проблему, позволяя задавать ключи в XML-формате с ограничениями на типы данных и значениями по умолчанию. G-Settings также интегрируется с Dconf, расширяя возможности управления конфигурациями.
GSettings предоставляет функционал для управления настройками приложений, включая определение дефолтных значений и типы данных ключей. При создании схемы в GSettings можно указать дефолтные значения для каждого ключа, которые будут использоваться, если пользователь не изменил настройки.
- Посмотреть все доступные схемы
$ gsettings list-schemas
Пример:
org.gnome.libgnomekbd org.gtk.exampleapp org.gnome.system.proxy.http org.gnome.system.proxy.socks org.virt-manager.virt-manager.paths ... org.gnome.desktop.privacy org.gnome.desktop.a11y.magnifier org.virt-manager.virt-manager.confirm org.gnome.desktop.media-handling org.gnome.desktop.default-applications.terminal
- Чтобы также включить все ключи
$ gsettings list-recursively
Пример:
org.gtk.exampleapp show-words false org.gtk.exampleapp transition 'none' org.gtk.exampleapp font 'Monospace 12' org.gnome.libgnomekbd.preview width -1 org.gnome.libgnomekbd.preview y -1 ... org.gnome.desktop.interface clock-show-date true org.gnome.desktop.interface cursor-blink-time 1200 org.gnome.desktop.interface font-antialiasing 'grayscale' org.gnome.desktop.interface toolbar-icons-size 'large' org.gnome.desktop.interface gtk-timeout-repeat 20
- Просмотреть схемы с указанием конкретного приложения:
$ gsettings list-schemas | grep -i virt-manager
Пример:
$ gsettings list-schemas | grep -i virt-manager org.virt-manager.virt-manager.vmlist-fields org.virt-manager.virt-manager.paths org.virt-manager.virt-manager.new-vm org.virt-manager.virt-manager.connections org.virt-manager.virt-manager org.virt-manager.virt-manager.urls org.virt-manager.virt-manager.stats org.virt-manager.virt-manager.details org.virt-manager.virt-manager.console org.virt-manager.virt-manager.confirm
- Теперь, когда вы нашли интересующую вас схему, можно перечислить ее ключи с помощью команды:
$ gsettings list-keys org.virt-manager.virt-manager.stats
Пример:
$ gsettings list-keys org.virt-manager.virt-manager.stats enable-net-poll update-interval enable-memory-poll enable-disk-poll enable-cpu-poll
- Выберите один из них и посмотрите текущее значение:
$ gsettings get org.virt-manager.virt-manager.stats enable-memory-poll
Пример:
$ gsettings get org.virt-manager.virt-manager.stats enable-memory-poll false
- Данный ключ возвращает значение false, поэтому, чтобы изменить его, используйте конструкцию:
$ gsettings set org.virt-manager.virt-manager.stats enable-memory-poll true
Настройка рабочего стола
Поиск соответствий схемы настройкам рабочего стола
Задача: необходимо выяснить пути и названия элементов схемы, отвечающих за конкретные настройки рабочего стола. Например, что именно определяет фон или цвет рабочего стола.
1. Для начала открываем консоль и набираем:
$ gsettings list-schemas | grep background
org.mate.background
org.mate.SettingsDaemon.plugins.background
org.gnome.desktop.background
Тем самым мы получим список схем, в которых может содержаться интересующая нас информация. Теперь выясняем, что именно из перечисленного отвечает за интересующие нас настройки рабочего стола. Можно открыть сразу несколько терминалов (или вкладок), введя в каждом команду со своим именем схемы:
$ gsettings monitor org.mate.background
Открываем настройки рабочего стола (параметры внешнего вида) и меняем фон, цвет, или то, что нас интересует. При этом в одном из открытых терминалов появится информация вида схема/ключ/значение. Можно нажать Ctrl-C и получить для заданной схемы все ключи вместе с текущими значениями.
$ gsettings list-recursively org.mate.background
org.mate.background picture-opacity 100
org.mate.background secondary-color '#3C8F25'
org.mate.background show-desktop-icons true
org.mate.background background-fade true
org.mate.background primary-color '#5891BC'
org.mate.background picture-filename '/usr/share/design/current/backgrounds/default.png'
org.mate.background color-shading-type 'vertical-gradient'
org.mate.background picture-options 'zoom'
org.mate.background draw-background true
Установка настроек рабочего стола по умолчанию
Задача: административно установить настройки рабочего стола, которые будут применяться у всех вновь создаваемых пользователей. Например, так можно определить конкретный фон или цвет рабочего стола. Эти изменения не затронут ранее созданных пользователей, которые уже используют графическую среду. Кроме того, пользователи смогут изменить установленные администратором настройки, если захотят. Чтобы заблокировать им такую возможность, читайте следующий раздел.
2. Все действия выполняем от имени root:
$ su -
3. Создаём файл /etc/dconf/profile/user следующего содержания:
user-db:user system-db:local
4. Создаём директорию:
# mkdir -p /etc/dconf/db/local.d/locks
5. Создаём файл /etc/dconf/db/local.d/00_background. Сохраняем в него только те ключи и значения, полученные на шаге 1, которые нас интересуют. В квадратных скобках указываем название схемы.
[org/mate/background] secondary-color='#8585d4d45b5b' background-fade=true primary-color='#babadada5555' picture-filename='/usr/share/backgrounds/mate/desktop/MATE-Stripes-Dark.png' color-shading-type='vertical-gradient' picture-options='zoom' draw-background=true
Блокировка настроек рабочего стола
Задача: административно заблокировать возможность изменения некоторых настроек рабочего стола. Например, чтобы обычный пользователь не мог изменять определённый фон или цвет.
6. Пока мы лишь определили значения, которые в дальнейшем будут использоваться по умолчанию. Пользователь всё ещё имеет возможность их поменять. Чтобы пользователь не мог внести изменения в настройки рабочего стола никакими средствами, создадим ещё один файл /etc/dconf/db/local.d/locks/00_background следующего содержания:
/org/mate/desktop/background/secondary-color /org/mate/desktop/background/background-fade /org/mate/desktop/background/primary-color /org/mate/desktop/background/picture-filename /org/mate/desktop/background/color-shading-type /org/mate/desktop/background/picture-options /org/mate/desktop/background/draw-background
и выполним команду:
# dconf update
Здесь стоит обратить внимание, что схема указана другая -- не /org/mate/background, а /org/mate/desktop/background. В случае с MATE это связано с особенностью обработки схем dconf и gsettings. Посмотреть текущие схемы можно в директории /usr/share/glib-2.0/schemas.
7. Новые настройки вступают в силу немедленно -- перелогиниваться необязательно. Попробуйте теперь изменить фон под обычным пользователем. Если не сработало, значит схема на 6 шаге была определена неправильно.
Некоторые настройки
Сбросить внешний вид панели и меню Mate
$ dconf reset -f /org/mate/panel/ $ dconf reset -f /org/mate/mate-menu/
Автоматическое монтирование флешек и др. носителей
Mate
Правим через dconf-editor параметр на true/false:
/org/mate/desktop/media-handling/automount
То же действие через консоль:
$ gsettings set org.mate.media-handling automount false
Gnome
Правим через dconf-editor параметр на true/false:
/org/gnome/desktop/media-handling/automount
То же действие через консоль:
$ gsettings set org.gnome.media-handling automount false
Порядок расположения кнопок сворачивания-разворачивания-закрытия окон
Mate
Правим через dconf-editor параметр
/org/mate/marco/general/button-layout
правим значение переставляя параметры:
'menu:minimize,maximize,close'
Gnome
/org/gnome/desktop/wm/preferences/button-layout
правим значение переставляя параметры:
'menu:minimize,maximize,close'
Показывать/не показывать уведомления NetworkManager
Выключить:
$ gsettings set org.gnome.nm-applet disable-disconnected-notifications "true" $ gsettings set org.gnome.nm-applet disable-connected-notifications "true"
Включить:
$ gsettings set org.gnome.nm-applet disable-disconnected-notifications "false" $ gsettings set org.gnome.nm-applet disable-connected-notifications "false"
Показывать системные значки рабочего стола
Mate
Правим через dconf-editor параметр
/org/mate/caja/desktop
Переключаем параметры:
- computer-icon-visible
- home-icon-visible
- network-icon-visible
- trash-icon-visible
- volumes-visible
в нужное положение и получаем на рабочем столе показ/скрытие значка компьютера, домашней папки, сетевого окружения, корзины и дисков.
Показ содержимого домашней папки на рабочем столе
Mate:
Правим через dconf-editor параметр на true/false:
/org/mate/caja/pereferences/desktop-is-home-dir
Показывать флаг страны вместо обозначения языка раскладки
Mate:
Правим через dconf-editor параметр на true/false:
/org/mate/desktop/peripherals/keyboard/indicator/show-flags
Выключить анимацию
Mate
Правим через dconf-editor параметр на true/false:
/org/mate/desktop/interface/enable-animations
Gnome
Правим через dconf-editor параметр на true/false:
/org/gnome/desktop/interface/enable-animations
Настройка Vino
Правим через dconf-editor параметры по адресу:
/org/gnome/desktop/remote-access
Резервное копирование и восстановление
Резервное копирование и сброс настроек
- Резервное копирование
$ dconf dump путь > ~/файл
- Например:
$ dconf dump /org/mate/ > ~/dconf-mate-bak
- Сбрасываем настройки
$ dconf reset -f путь
- Например
$ dconf reset -f /org/mate/
Затем, нужно выйти из системы и зайти в нее снова.
Восстановление
- Восстановление
$ dconf load путь < ~/файл
- Например:
$ dconf load /org/mate/ < ~/dconf-mate-bak