Моя дорогая Betsy. Редактор Dconf и его роль в настройках Cinnamon и Nemo

Алексей Федорчук

Редактор dconf (пакет dconf-editor) — общий инструмент для настройки GNOME 3, Unity, MATE и Cinnamon. В каждой из этих сред он имеет свою специфику, обусловленную различиями между ними. Ниже, как нетрудно догадаться, речь пойдёт использовании Редактора dconf применительно к среде Cinnamon в дистрибутиве LMDE 2 Betsy. Хотя большая часть сказанного далее приложима к сборкам этой среды и для более иных дистрибутивов.

Вступление

С некоторых пор все пользовательские настройки графических сред, связанных по происхождению с GNOME (GNOME 3, Unity, MATE и Cinnamon), а также их штатных приложений, хранятся в специальной базе данных бинарного формате dconf, прямой доступ к которой невозможен.

Обычно редактирование базы осуществляется штатными графическими конфигураторами данной среды (в Cinnamon это Параметры системы, они же Центр управления). С другой стороны, изменение базы данных возможно прямыми низкоуровневыми CLI-директивами команды gsettings.

Первый способ прост, однако позволяет выполнить только настройки, предусмотренные разработчиками таких конфигураторов исходя из их представлений, «что такое хорошо, и что такое плохо» для абстрактного «конечного пользователя». Второй же требует знания множества команд и ключей, которые к тому же очень плохо документированы.

Редактор dconf предоставляет графический интерфейс для доступа к базе данных, занимающий промежуточное положение между совсем низкоуровневыми средствами gsettings и высокоуровневыми штатными конфигураторами рабочих сред. И, хотя интерфейс этот не принадлежит к числу самых простых и интуитивно понятных способом, но зато даёт возможность настроить все параметры, которые в принципе конфигурируются в данной рабочей среде. В том числе — и недоступные из высокоуровневых графических утилит.

В среде Cinnamon до недавнего времени таких «замаскированных» настроек было очень мало, и до некоторого времени поводы для запуска редактора dconf возникали очень редко. Некоторые изменения ситуации наметились в версии 2.4, где, например, включить сохранение сеансов другим путём стало невозможно. Эта тенденция усилилась в Cinnamon версии 2.6, настройка которого (и особенно его штатного файлового менеджера Nemo) в соответствие с собственными предпочтениями потребовала от меня довольно частого обращения к редактору dconf.

Правда, оказалось, что это совсем не страшно. Более того, многие действия, требующие запуска Центра управления Cinnamon и поиска в нём нужного модуля, через редактор dconf выполняются быстрей и проще. Если, конечно, знать, что делать. А вот со знанием как раз и образовались напряги. Точнее, с источниками приобретения этих знаний. Штатная документация man dconf-editor умещается на четвертинке экрана и главное её содержание — предложение читать man gsettings, от общения с которым редактор dconf и призван, казалось бы, уберечь пользователя.

На сайте проекта GNOME есть нечто вроде официального руководства — dconf System Administrator Guide. Однако, как явствует из названия, оно

  • не рассчитано на обычных применителей, и
  • не очень соответствует реалиям, которые последний видит в своей системе.

Обнаруженные мной источники информации по редактору dconf из сторонних сетевых ресурсов носят рецептурный характер, обычно очень фрагментарны, да и относятся преимущественно к другим средам — GNOME3, Unity и MATE. А ведь очевидно, что, хотя сам редактор один для всех, базы параметров в каждой среде свои, поскольку параметры у них разные.

Так что, установив LMDE 2 Betsy «почти с нуля» и занимаясь настройками среды обитания (то есть Cinnamon), я при обращении к редактору dconf протоколировал свои действия, результатом чего и стали эти очерки. Они не претендуют на статус документации, поскольку в них рассмотрены только те параметры, которые требовались мне. Однако надеюсь, что пробелы этого очерка будут восполнены самими утопающими заинтересованными лицами.

Обзор

База параметров — файл ~/.config/dconf/user, представляющий собой так называемый профиль пользователя (user-db). Просмотреть его напрямую ввиду бинарного формата невозможно. Однако, по словам, знающих людей, он представляет собой неструктурированный список параметров, каждый из которых описывается отдельной строкой вида КЛЮЧ=ЗНАЧЕНИЕ, где КЛЮЧ — имя параметра, а значения могут быть численными, логическими (true или false) и символьными.

Однако в интерфейсе редактора dconf ключи, тем или иным образом связанные между собой (например, относящиеся к одному приложению), слиты в категории, которые, в свою очередь, группируются в разделы (часто с подразделами), объединяемые в секции:

dconf_001
Путь к категории ключей «сверху вниз» описывается в виде цепочки секция.раздел.[подраздел].категория и называется схемой (schema). Например, в примере на скриншоте выше, чтобы добраться до ключей, определяющих высоту и ширину окна редактора dconf, открываемого по умолчанию, надо проследовать по схеме ca.destr.dconf-editor.Settings.

Для некоторых ключей значения по умолчанию проставлены. Однако часто значение по умолчанию — это отсутствие значения, что может заставить поломать голову. Иногда в этом помогает описание ключа:

dconf_002
Однако часто при определении значения нужного ключа приходится полагаться на интуицию, метод ползучего эмпиризма или найденные в сети рецепты.

Добраться до нужного ключа для модификации или просмотра его значения можно одним из трёх способов:

  • если схема доступа к ключу известна — просто проследовать по ней, щёлкая мышью;
  • если известно имя ключа — ввести его в поле поиска, вызываемого по Control+F; часто одноимённые ключи находятся в разных разделах, и тогда до требуемого надо добираться с помощью кнопки Далее (обратный поиск, кстати, невозможен, так что, проскочив нужный ключ, придётся начинать всё сначала);
  • если неизвестна ни схема ключа, ни его имя (или хотя бы фрагмент имени), придётся тупо просматривать подряд всё дерево ключей, напрягая интуицию для выявления нужного.

Последний метод, разумеется, самый «эффективный». Правда, в большинстве случаев можно ограничиться секцией org — по крайней мере, у меня ни разу пока не появилось необходимости выйти за её пределы (так что о прочих секциях я и говорить не буду). А о содержимом её разделов и подразделов можно догадаться, исходя из имён оных. Впрочем, данный очерк для того и написан, чтобы заниматься этим как можно меньше.

Однако на самом деле общение с редактором dconf начинается с его установки — в стандартной инсталляции LMDE (как, впрочем, и LM) он отсутствует. Так что:

$ apt install dconf-editor

После чего он запускается из секции Администрирование главного меню и выглядит почти как на первом скриншоте, только пункты секций свёрнуты. Поскольку, как уже было сказано, далее речь пойдёт только о секции org, развернём её для общего обзора, и увидим пять разделов:

dconf_003
Разделы freedesktop и gtk для меня интереса не представляли, потому что их содержимое выглядит так:

dconf_004
Содержимое раздела nemo будет темой особого разговора, так что далее речь пойдёт главным образом, как ни странно, о разделе cinnamon.

Раздел cinnamon

В разделе cinnamon я первым делом обратился к категории cinnamon-session — это то самое место, где можно включить сохранение состояния сеанса (окон и запущенных приложений) при выходе из среды:

dconf_005
Здесь ставлю «птицу» на ключе auto-save-session (это и есть сохранение сеанса), после чего он оказывается выделенным полужирным начертанием. Последнее касается всех изменённых параметров, как через редактор dconf, так и «внешними» средствами Центра управления:

dconf_006
После этого перехожу в подраздел desktop. Здесь в ещё более «вложенном» подразделе appliation можно заменить терминальную программу по умолчанию, например, на Ternimator. Я этого пока не сделал, но отложил такую возможность в памяти:

dconf_007
Категорию input-sources надо иметь ввиду, если что-то не срастётся с настройкой клавиатуры через Центр управления (с чем я давно не сталкивался) или захочется чего-то уж очень нестандартного, не охваченного соответствующим модулем последнего (такого желания у меня пока не возникало):

dconf_008
Впрочем, моя предшествующая практика показала, что обращаться к input-sources следует в самом крайнем случае, если не помогло штатное средство Центра управления и ключи категории

В категории session можно видеть три ключа: session-manager-uses-logind и settings-daemon-uses-logind отвечают за restart/shutdown/suspend/hibernate (обычным образом или через мультимедийные клавиши), а screensaver-uses-logind — за выход из скринсейвера. Умолчальные значения всех трёх — false. Это значит, что указанные процессы управляются «по старинке» — через consolekit и upower (последний — для suspend/hibernate, что у меня не работает ни на десктопе, ни на ноутбуке):

dconf_009
Если же перевести эти ключи в состояние true (то есть отметить галочками), управление перейдёт к logind, что в моём случае обеспечило режимы ожидания (опробовано) и, по крайней мере теоретически, сна (не рискнул):

dconf_010

Более в разделе cinnamon я ничего не делал, и сказать про остальное его содержание нечего (или мне, или вообще).

Раздел gnome

В разделе gnome собраны ключи для некоторых приложений, которые среда Cinnamon унаследовала от GNOME3. Из них имеет смысл, во-первых, обратить внимание на подраздел evince, в котором определяется умолчальное представление документов (pdf, dejvu и других) в этой программе:

dconf_011

dconf_012

А во-вторых, стоит бросить взгляд на категорию simple-scan, которая объединяет ключи, определяющие за умолчальные параметры этой программы сканирования:

dconf_013
Не то чтобы тут требовалось что-то менять, но присмотреться к такой возможности не помешает — а вдруг придётся?

Далее, не следует забывать о подразделе libgnomekbd — как ни странно, именно в нём собраны ключи, описывающие текущие раскладки клавиатуры и их переключатели. В частности, ключи категории desktop определяют раскладку по умолчанию для нового окна, поддерживать ли в каждом окне свою раскладку, загружать ли редко используемые раскладки:

dconf_014
А ключ options категории keyboard описывает основной и дополнительный переключатели раскладок, положение клавиши Compose, разные параметры совместимости — иными словами, всё, что устанавливается через Параметры модуля настройки клавиатуры Центра управления:

dconf_015
Опять-таки, менять здесь руками необходимости обычно нет, но помнить о такой возможности не помешает. Как и о том, что произвольному изменению значения этого ключа не поддадутся — они должны соответствовать правилам, описанным в файлах каталога /usr/share/X11/xkb/rules.

Раздел nemo

И в заключение — о разделе nemo, в котором объединены ключи для настройки параметров одноимённого файлового менеджера, в том числе и тех, которые ныне недоступны через Правка -> Параметры его главного меню.

dconf_016
В схеме org.nemo.preferences среди параметров, недоступных для изменения через меню Nemo, мне показались полезными (или просто заслуживающими внимания) такие:

  • desktop-is-home-dir — представление рабочего стола в виде корня домашнего каталога (по умолчанию выключено, но мне очень понравилось):

dconf_017

  • context-menus-show-all-actions — вывод всех пунктов контекстного меню Nemo (по умолчанию выключено, но полагаю необходимым):

dconf_018

  • show-bookmarcs-in-to-menus — вывод закладок боковой панели Nemo в списке объектов для копирования и перемещения файлов, см. следующий скриншот (по умолчанию выключено, использую редко, но иногда полезно).

Далее в той же схеме org.nemo.preferences я ключом show-location-entry задал символьное представление строки адреса, а сняв отметки с show-edit-icon-toolbar и show-compact-view-icon-toolbar, убрал пиктограмми переключения вида строки адреса переключения в режим компактного списка (не путать с компактным видом, о котором чуть позже), соответственно (ибо ни той, ни другой не пользуюсь). Затем вывел на панель ряд дополнительных пиктограмм:

  • show-computer-icon-toolbar — переход к корневому каталогу;
  • show-home-icon-toolbar — переход к домашнему каталогу
  • show-new-folder-icon-toolbar — создание каталога;
  • show-open-in-terminal-icon-toolbar — открытие терминала;
  • show-reload-icon-toolbar — перечитывание текущего каталога.

В результате инструментальная панель Nemo приобрела такой вид:

dconf_019
Для представления в виде пиктограмм и длинного списка я включил всплывающие подсказки ключами tooltips-in-icon-view и tooltips-in-list-view, соответственно.

Ключ start-with-dual-pane обеспечивает запуск Nemo в двухпанельном представлении. Я этим не пользуюсь, но некоторым нравится.

В схеме org.nemo.icon-view ключ text-ellipsis-limit позволяет изменить число строк в подписях к пиктограммам (по умолчанию 3), а ключ default-use-tighter-layout соответствует включению компактного размещения в настройках через меню.

Наконец, в схеме org.nemo.window-state собраны ключи, определяющие вид существующего или вновь открываемого окна Nemo:

dconf_020
Комментировать скриншот не буду — думаю, с ним всё ясно и так. А в заключение ещё раз подчеркну, что сказанное ранее — не исчерпывающий перечень ключей редактора dconf и соответствующих им доступных для настройки параметров. Однако ключи, как представляется, наиболее важные для применителя, более или менее охвачены.

Предварительное оглавление

Моя дорогая Betsy. Редактор Dconf и его роль в настройках Cinnamon и Nemo: 5 комментариев

  1. Очень не нравится, как долго Nemo открывает массивные папки с тысячами файлов. Хотел отключить показ миниатюр, надеясь, что это ускорит отображение. Только вот такая незадача: в редакторе dconf, разделе org|Nemo|Preferences нашелся нужный параметр show-image-thumbnails, по умолчанию он выставлен на ‘local_only’, а вот поменять его на ‘never’ у меня не получается. Стрелочка вниз справа есть, но выбора никакого нет. Что посоветуете сделать? Не могу я поменять и прочие значения в одинарных кавычках.

  2. Хм, забавненько. В Ubuntu у меня то же самое. А в Antergos’е ещё смешней. Там всё почти также, с такой разницей: при первом запуске параметр show-directory-item-counts имеет значение ‘never’. После первого же щелчка на этой строке он скидывается в ‘local-only’ и обратно уже не возвращается.
    Пока приходит в голову только прямое обращение к gsettings, но я с ним ещё совсем не развирался.

  3. Спасибо за ответ!
    У меня тоже одно из наугад кликнутых значений в ‘ ‘ изменилось на другое и обратно ни в какую (кажется, начальная сортировка стала не по имени, а по дате изменения). Пришлось вернуть параметры по умолчанию.
    Выставил пока thumbnail_limit равным нулю (Images over this size (in bytes) won’t be thumbnailed. The purpose of this setting is to avoid thumbnailing large images that may take a long time to load or use lots of memory.)
    Поведение пока совсем непонятное: в одних папках обложки (PDF и DJVU) показываться перестали; в другой, большой на 6000 файлов, всё равно показываются. При этом если я перекидываю часть из них в другую папку, они не показываются.
    Вырезаю файл из большой папки, вставляю в другую, потом обратно — всё равно обложка есть. Но стоит его переименовать, а потом вернуть назад — обложки уже нет. Надеюсь, дело в кэше, и после перезагрузки показывать обложки перестанет.

  4. p.s. После удаления кэша миниатюр (thumbnails) командой rm -f ~/.cache/thumbnails/normal/* всё стало на свои места. Так что параметр thumbnail_limit при нулевом значении работает.

Добавить комментарий