Dconf: различия между версиями

Материал из ALT Linux Wiki
 
(не показано 19 промежуточных версий 4 участников)
Строка 1: Строка 1:
= Описание =
= Описание =
dconf – низкоуровневая система конфигурации. При помощи dconf в GNOME и Unity хранятся настройки большинства программ.
'''Dconf''' – низкоуровневая система конфигурации. Система конфигурации dconf сохраняет настройки в виде реестра, работая в связке с утилитой GSettings. Dconf используется в различных средах, и в частности, для управления окружением MATE.  


dconf это простая система конфигурации основанная на ключах. Ключи находятся в неструктурированной базе данных (ключи, логически связанные между собой, объединены в категории). База данных хранится в бинарном файле, который располагается в ~/.config/dconf.
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
 
[[Файл:Profile_dconf.png|мини|слева|x400px|Clear|]]
<div style="clear:{{{1|both}}};"></div>
 
Правка параметров производится либо через консольные утилиты dconf, gsettings или через графическое приложение Dconf-editor.
 
'''Установка редактора'''
  $ su -
  $ su -
  # apt-get install dconf-editor
  # apt-get install dconf-editor
==Dconf-profile==
'''Традиционный базовый профиль:'''
user-db:user​
system-db:local​
system-db:site
В этом примере пользовательская база данных (user-db:user) имеет наивысший приоритет, позволяя пользователю переопределять локальные системные настройки (system-db:local). Однако настройки в базе system-db:site могут содержать блокировки, которые запрещают изменение определённых параметров, даже если пользователь пытается их изменить через свою базу данных.
Для более гибкого управления конфигурацией через групповые политики была разработана схема, включающая '''дополнительные уровни:'''
user-db:user
system-db:policy
system-db:local
system-db:default
system-db:local
system-db:policy
Был добавлен слой Policy, который располагается между слоями Local и User, что позволяет отделить управляемые политиками параметры от локальных настроек. Это даёт возможность точно контролировать, какие параметры будут регулироваться политиками, а какие останутся на усмотрение локальных настроек.
Введён также слой Default, который обеспечивает наличие базовых настроек по умолчанию, используемых системой, если они не переопределены другими слоями. Это гарантирует, что всегда будут применены какие-то настройки, даже если остальные слои не задействованы. Дополнительно в Dсonf используется возможность блокировки (Lock), которая защищает важные параметры от изменений. Совмещение слоёв Policy и Local с блокировками позволяет точно определить, какие параметры могут быть изменены пользователем, а какие защищены от изменений.
==Архитектура Dconf==
[[Файл:Dconf.png|мини|слева|x400px|Clear|]]
<div style="clear:{{{1|both}}};"></div>
Эта схема иллюстрирует, как приложения взаимодействуют с системой конфигурации Dconf, которая используется для хранения и управления настройками на уровне пользователя и системы в Linux-среде.
Для редактирования содержимого базы данных с помощью текстового редактора можно использовать файлы формата .ini. Эти файлы содержат параметры конфигурации, которые можно изменять вручную. После того как вы создаете или редактируете такой .ini файл, его можно скомпилировать в конкретную базу данных Dconf с помощью команды
dconf compile local /etc/dconf/db/local.d
На схеме видно, что этот процесс идет через компиляцию .ini файла, что позволяет внедрить изменения в саму базу данных Dconf, которая затем может быть использована приложениями для чтения и записи настроек.
Приложения могут '''читать''' настройки напрямую из бинарных файлов базы данных Dconf. Однако считывание значений происходит с учетом приоритетов, указанных в профиле Dconf. В профиле определяются источники конфигурации и их приоритеты.
Каждое значение ключа может быть "заблокировано", что позволяет нивелировать приоритетность баз данных при чтении этого ключа, отдавая предпочтение базе, в которой этот ключ был заблокирован. Значения из базы данных Dconf можно считывать как с помощью команды dconf, так и с помощью gsettings. Таким образом, при чтении значений приложением сначала проверяются блокировки и приоритеты, после чего извлекаются данные из соответствующего источника в зависимости от настроек профайла.
'''Запись''' в базу данных Dconf также производится с помощью команд dconf и gsettings. Для этого используется служба на D-Bus, обозначаемая как ca.desrt.dconf.
Когда значение ключа изменяется, генерируется сигнал '''notify''', который уведомляет Приложение 2, о том, что его конфигурационные параметры были изменены. Это позволяет приложениям автоматически обновлять свои настройки или интерфейс в ответ на изменения, гарантируя, что они всегда используют актуальные данные.


== Особенности ==
== Особенности ==
'''Ограничения''': предлагаемые рецепты охватывают окружения рабочих столов, для настройки которых используются '''dconf''' и '''gsettings''' (MATE, GNOME, XFCE, итд...).
'''Ограничения''': предлагаемые рецепты охватывают окружения рабочих столов, для настройки которых используются '''dconf''' и '''gsettings''' (MATE, GNOME, и т.д. ...).


{{Attention|Нельзя запретить изменение какой-либо настройки, предварительно не установив её значение по умолчанию.}}
{{Attention|Нельзя запретить изменение какой-либо настройки, предварительно не установив её значение по умолчанию.}}
{{Note|В Xfce используется своя система конфигурации '''Xfconf'''}}
==Команды gsettings==
==Команды gsettings==
*Посмотреть все доступные схемы
Dconf хранит пары "ключ-значение" без контроля типов данных, что может усложнять управление. G-Settings решает эту проблему, позволяя задавать ключи в XML-формате с ограничениями на типы данных и значениями по умолчанию. G-Settings также интегрируется с Dconf, расширяя возможности управления конфигурациями.
 
GSettings предоставляет функционал для управления настройками приложений, включая определение дефолтных значений и типы данных ключей. При создании схемы в GSettings можно указать дефолтные значения для каждого ключа, которые будут использоваться, если пользователь не изменил настройки.
 
*Просмотр всех доступных схем:
<source lang="text" highlight="1">
  $ gsettings list-schemas
  $ gsettings list-schemas
Пример:
  org.gnome.libgnomekbd
  org.gnome.libgnomekbd
  org.gtk.exampleapp
  org.gtk.exampleapp
Строка 26: Строка 80:
  org.virt-manager.virt-manager.confirm
  org.virt-manager.virt-manager.confirm
  org.gnome.desktop.media-handling
  org.gnome.desktop.media-handling
  org.gnome.desktop.default-applications.terminal
  org.gnome.desktop.default-applications.terminal </source>


*Чтобы также включить все ключи
*Для рекурсивного перечисления ключей и значений используется следующая команда (Если СХЕМА не задана, перечисляются ключи во всех схемах):
<source lang="text" highlight="1">
  $ gsettings list-recursively
  $ gsettings list-recursively
Пример:
  org.gtk.exampleapp show-words false
  org.gtk.exampleapp show-words false
  org.gtk.exampleapp transition 'none'
  org.gtk.exampleapp transition 'none'
Строка 42: Строка 95:
  org.gnome.desktop.interface font-antialiasing 'grayscale'
  org.gnome.desktop.interface font-antialiasing 'grayscale'
  org.gnome.desktop.interface toolbar-icons-size 'large'
  org.gnome.desktop.interface toolbar-icons-size 'large'
  org.gnome.desktop.interface gtk-timeout-repeat 20
  org.gnome.desktop.interface gtk-timeout-repeat 20</source>


*Просмотреть схемы с указанием конкретного приложения:
<source lang="text" highlight="1">
  $ gsettings list-schemas | grep -i virt-manager
  $ gsettings list-recursively org.onboard.keyboard
Пример:
org.onboard.keyboard long-press-delay 0.5
  $ gsettings list-schemas | grep -i virt-manager
org.onboard.keyboard audio-feedback-enabled false
org.onboard.keyboard input-event-source 'XInput'
org.onboard.keyboard touch-feedback-size 0
org.onboard.keyboard sticky-key-release-delay 0.0
org.onboard.keyboard sticky-key-behavior {'all': 'cycle'}
org.onboard.keyboard audio-feedback-place-in-space false
org.onboard.keyboard touch-input 'multi'
org.onboard.keyboard modifier-update-delay 1.0
org.onboard.keyboard touch-feedback-enabled false
org.onboard.keyboard show-secondary-labels false
org.onboard.keyboard key-synth 'auto'
org.onboard.keyboard sticky-key-release-on-hide-delay 5.0
org.onboard.keyboard show-click-buttons false
org.onboard.keyboard default-key-action 'delayed-stroke'
org.onboard.keyboard key-press-modifiers {'button3': 'SHIFT'}
org.onboard.keyboard inter-key-stroke-delay 0.0</source>
 
*Просмотр схем с указанием конкретного приложения:
 
  <source lang="text" highlight="1"> $ gsettings list-schemas | grep -i virt-manager
  org.virt-manager.virt-manager.vmlist-fields
  org.virt-manager.virt-manager.vmlist-fields
  org.virt-manager.virt-manager.paths
  org.virt-manager.virt-manager.paths
Строка 57: Строка 129:
  org.virt-manager.virt-manager.details
  org.virt-manager.virt-manager.details
  org.virt-manager.virt-manager.console
  org.virt-manager.virt-manager.console
  org.virt-manager.virt-manager.confirm
  org.virt-manager.virt-manager.confirm </source>


*Теперь, когда вы нашли интересующую вас схему, можно перечислить ее ключи с помощью команды:
*Теперь, когда вы нашли интересующую вас схему, можно перечислить ее ключи с помощью команды:
  $ gsettings list-keys org.virt-manager.virt-manager.stats
 
Пример:
  <source lang="text" highlight="1">
  $ gsettings list-keys org.virt-manager.virt-manager.stats
  $ gsettings list-keys org.virt-manager.virt-manager.stats
  enable-net-poll
  enable-net-poll
Строка 67: Строка 139:
  enable-memory-poll
  enable-memory-poll
  enable-disk-poll
  enable-disk-poll
  enable-cpu-poll
  enable-cpu-poll</source>


*Выберите один из них и посмотрите текущее значение:
*Выберите один из них и посмотрите текущее значение:
<source lang="text" highlight="1">
  $ gsettings get org.virt-manager.virt-manager.stats enable-memory-poll
  $ gsettings get org.virt-manager.virt-manager.stats enable-memory-poll
Пример:
  false </source>
$ gsettings get org.virt-manager.virt-manager.stats enable-memory-poll
  false


*Данный ключ возвращает значение false, поэтому, чтобы изменить его, используйте конструкцию:
*Данный ключ возвращает значение false, поэтому, чтобы изменить его, используйте конструкцию:
  $ gsettings set org.virt-manager.virt-manager.stats enable-memory-poll true
 
  <source lang="text" highlight="1">$ gsettings set org.virt-manager.virt-manager.stats enable-memory-poll true </source>


==Настройка рабочего стола==
==Настройка рабочего стола==
Строка 169: Строка 242:
==Некоторые настройки==
==Некоторые настройки==
===Сбросить внешний вид панели и меню Mate===
===Сбросить внешний вид панели и меню Mate===
  $ dconf reset -f /org/mate/panel
  $ dconf reset -f /org/mate/panel/
  $ dconf reset -f /org/mate/mate-menu
  $ dconf reset -f /org/mate/mate-menu/
 
===Автоматическое монтирование флешек и др. носителей===
===Автоматическое монтирование флешек и др. носителей===
====Mate====
Правим через dconf-editor параметр на true/false:
Правим через dconf-editor параметр на true/false:
  /org/mate/desktop/media-handling/automount
  /org/mate/desktop/media-handling/automount
То же действие через консоль:
То же действие через консоль:
  $ gsettings set org.mate.media-handling automount false
  $ 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====
====Mate====
Строка 219: Строка 301:
Правим через dconf-editor параметр на true/false:
Правим через dconf-editor параметр на true/false:
  /org/mate/desktop/peripherals/keyboard/indicator/show-flags
  /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


==Резервное копирование и восстановление==
==Резервное копирование и восстановление==
Строка 225: Строка 319:
#:<code>$ dconf dump '''путь''' > ~/'''файл'''</code>
#:<code>$ dconf dump '''путь''' > ~/'''файл'''</code>
#:Например:
#:Например:
#:<code>$ dconf dump '''/org/mate''' > ~/'''dconf-mate-bak'''</code>
#:<code>$ dconf dump '''/org/mate/''' > ~/'''dconf-mate-bak'''</code>
#Сбрасываем настройки
#Сбрасываем настройки
#:<code>$ dconf reset -f '''путь'''</code>
#:<code>$ dconf reset -f '''путь'''</code>

Текущая версия от 15:11, 9 октября 2024

Описание

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
Profile dconf.png

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

Установка редактора

$ su -
# apt-get install dconf-editor

Dconf-profile

Традиционный базовый профиль:

user-db:user​
system-db:local​
system-db:site

В этом примере пользовательская база данных (user-db:user) имеет наивысший приоритет, позволяя пользователю переопределять локальные системные настройки (system-db:local). Однако настройки в базе system-db:site могут содержать блокировки, которые запрещают изменение определённых параметров, даже если пользователь пытается их изменить через свою базу данных.

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

user-db:user
system-db:policy
system-db:local
system-db:default
system-db:local
system-db:policy

Был добавлен слой Policy, который располагается между слоями Local и User, что позволяет отделить управляемые политиками параметры от локальных настроек. Это даёт возможность точно контролировать, какие параметры будут регулироваться политиками, а какие останутся на усмотрение локальных настроек. Введён также слой Default, который обеспечивает наличие базовых настроек по умолчанию, используемых системой, если они не переопределены другими слоями. Это гарантирует, что всегда будут применены какие-то настройки, даже если остальные слои не задействованы. Дополнительно в Dсonf используется возможность блокировки (Lock), которая защищает важные параметры от изменений. Совмещение слоёв Policy и Local с блокировками позволяет точно определить, какие параметры могут быть изменены пользователем, а какие защищены от изменений.

Архитектура Dconf

Dconf.png

Эта схема иллюстрирует, как приложения взаимодействуют с системой конфигурации Dconf, которая используется для хранения и управления настройками на уровне пользователя и системы в Linux-среде.

Для редактирования содержимого базы данных с помощью текстового редактора можно использовать файлы формата .ini. Эти файлы содержат параметры конфигурации, которые можно изменять вручную. После того как вы создаете или редактируете такой .ini файл, его можно скомпилировать в конкретную базу данных Dconf с помощью команды

dconf compile local /etc/dconf/db/local.d

На схеме видно, что этот процесс идет через компиляцию .ini файла, что позволяет внедрить изменения в саму базу данных Dconf, которая затем может быть использована приложениями для чтения и записи настроек.

Приложения могут читать настройки напрямую из бинарных файлов базы данных Dconf. Однако считывание значений происходит с учетом приоритетов, указанных в профиле Dconf. В профиле определяются источники конфигурации и их приоритеты. Каждое значение ключа может быть "заблокировано", что позволяет нивелировать приоритетность баз данных при чтении этого ключа, отдавая предпочтение базе, в которой этот ключ был заблокирован. Значения из базы данных Dconf можно считывать как с помощью команды dconf, так и с помощью gsettings. Таким образом, при чтении значений приложением сначала проверяются блокировки и приоритеты, после чего извлекаются данные из соответствующего источника в зависимости от настроек профайла.

Запись в базу данных Dconf также производится с помощью команд dconf и gsettings. Для этого используется служба на D-Bus, обозначаемая как ca.desrt.dconf. Когда значение ключа изменяется, генерируется сигнал notify, который уведомляет Приложение 2, о том, что его конфигурационные параметры были изменены. Это позволяет приложениям автоматически обновлять свои настройки или интерфейс в ответ на изменения, гарантируя, что они всегда используют актуальные данные.

Особенности

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

Внимание! Нельзя запретить изменение какой-либо настройки, предварительно не установив её значение по умолчанию.
Примечание: В Xfce используется своя система конфигурации Xfconf


Команды 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-recursively org.onboard.keyboard
 org.onboard.keyboard long-press-delay 0.5
 org.onboard.keyboard audio-feedback-enabled false
 org.onboard.keyboard input-event-source 'XInput'
 org.onboard.keyboard touch-feedback-size 0
 org.onboard.keyboard sticky-key-release-delay 0.0
 org.onboard.keyboard sticky-key-behavior {'all': 'cycle'}
 org.onboard.keyboard audio-feedback-place-in-space false
 org.onboard.keyboard touch-input 'multi'
 org.onboard.keyboard modifier-update-delay 1.0
 org.onboard.keyboard touch-feedback-enabled false
 org.onboard.keyboard show-secondary-labels false
 org.onboard.keyboard key-synth 'auto'
 org.onboard.keyboard sticky-key-release-on-hide-delay 5.0
 org.onboard.keyboard show-click-buttons false
 org.onboard.keyboard default-key-action 'delayed-stroke'
 org.onboard.keyboard key-press-modifiers {'button3': 'SHIFT'}
 org.onboard.keyboard inter-key-stroke-delay 0.0
  • Просмотр схем с указанием конкретного приложения:
 $ 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
 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
 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

Резервное копирование и восстановление

Резервное копирование и сброс настроек

  1. Резервное копирование
    $ dconf dump путь > ~/файл
    Например:
    $ dconf dump /org/mate/ > ~/dconf-mate-bak
  2. Сбрасываем настройки
    $ dconf reset -f путь
    Например
    $ dconf reset -f /org/mate/

Затем, нужно выйти из системы и зайти в нее снова.

Восстановление

  1. Восстановление
    $ dconf load путь < ~/файл
  2. Например:
    $ dconf load /org/mate/ < ~/dconf-mate-bak