Большинство настроек рабочего стола в Linux хранится в dconf — бинарной базе параметров. Утилита gsettings даёт удобный доступ к ней из терминала: читать, менять, сбрасывать и сохранять настройки. Это пригодится для автоматизации, переноса конфигурации и восстановления после экспериментов.

Как устроено хранение

Схемы описывают наборы ключей: например, org.gnome.desktop.interface содержит тему, шрифты и масштаб. Значения хранятся в dconf, а приложения читают их через GSettings.

# список схем
gsettings list-schemas | head -20
# сколько всего
gsettings list-schemas | wc -l
# ключи конкретной схемы
gsettings list-keys org.gnome.desktop.interface
# текущее значение
gsettings get org.gnome.desktop.interface gtk-theme

В Cinnamon и MATE схемы отличаются, но принцип тот же. Проверьте, какие схемы есть в вашей системе.

Чтение и запись

Значения имеют типы: строка, логическое, число, массив. Синтаксис set зависит от типа.

# строка
gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'
# логическое значение
gsettings set org.gnome.desktop.interface clock-show-seconds true
# число
gsettings set org.gnome.desktop.interface text-scaling-factor 1.25
# массив строк
gsettings set org.gnome.shell enabled-extensions "['extension@example.com']"

Обратите внимание на кавычки: для массивов и строк они обязательны, иначе оболочка исказит значение.

Сброс и значения по умолчанию

# сбросить один ключ
gsettings reset org.gnome.desktop.interface gtk-theme
# сбросить всю схему (осторожно)
gsettings reset-recursively org.gnome.desktop.interface
# посмотреть, что изменилось относительно заводских настроек
gsettings list-recursively org.gnome.desktop.interface | head -20

Перед массовым сбросом сохраните дамп: восстановить случайно изменённые настройки иначе будет сложно.

Дамп и восстановление

dconf dump выгружает настройки в текстовый формат, dconf load — загружает. Это лучший способ перенести оформление на другую машину.

# сохранить все настройки
dconf dump / > ~/dconf-all-$(date +%F).txt
# только рабочий стол
dconf dump /org/gnome/desktop/ > ~/dconf-desktop.txt
# восстановить
dconf load / < ~/dconf-desktop.txt
# проверить размер файла
wc -l ~/dconf-desktop.txt

Не переносите дамп между разными окружениями: схемы GNOME и Cinnamon не совпадают, часть ключей будет проигнорирована.

Полезные настройки

  • Тёмная тема и масштаб интерфейса.
  • Показ секунд в часах и формат даты.
  • Поведение окон: фокус, кнопки, привязки.
  • Настройки терминала по умолчанию.
  • Список включённых расширений.
# тёмная тема
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
# формат даты
gsettings set org.gnome.desktop.interface clock-format '24h'
# размер шрифта интерфейса
gsettings set org.gnome.desktop.interface font-name 'Inter 11'
# поведение по клику на иконку
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize' 2>/dev/null

Блокировка настроек (киоски и общие машины)

dconf умеет запрещать изменение ключей: это нужно на учебных и общественных компьютерах, чтобы пользователь не сломал оформление.

# пример файла блокировки
sudo tee /etc/dconf/db/local.d/locks/desktop <<'EOF'
/org/gnome/desktop/interface/gtk-theme
/org/gnome/desktop/background/picture-uri
EOF
# применить
sudo dconf update
# проверить
ls /etc/dconf/db/local.d/locks/ 2>/dev/null

После блокировки gsettings set вернёт ошибку. Убедитесь, что политика не мешает обновлению системы.

Диагностика

# какие значения реально применяются
gsettings get org.gnome.desktop.interface font-name
# журнал изменений dconf
dconf watch /
# правки вручную (осторожно: бинарный формат)
ls ~/.config/dconf/
# проверить права
ls -l ~/.config/dconf/user

dconf watch / в реальном времени показывает, какие ключи меняются — удобно, когда непонятно, кто сбрасывает настройку.

Автоматизация при входе

Скрипт с gsettings set можно добавить в автозапуск: так настройки применяются на каждой новой машине одинаково.

cat > ~/.local/bin/desktop-setup.sh <<'EOF'
#!/bin/bash
set -e
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
gsettings set org.gnome.desktop.interface clock-format '24h'
gsettings set org.gnome.desktop.interface text-scaling-factor 1.1
EOF
chmod +x ~/.local/bin/desktop-setup.sh
~/.local/bin/desktop-setup.sh

Различия окружений: GNOME, Cinnamon, MATE

Схемы привязаны к окружению. Ключи GNOME не обязательно существуют в Cinnamon, и наоборот. Проверяйте наличие схемы перед массовыми правками.

# есть ли схема в системе
gsettings list-schemas | grep -i cinnamon | head
gsettings list-schemas | grep -i mate | head
# посмотреть ключи конкретного окружения
gsettings list-keys org.cinnamon.desktop.interface 2>/dev/null | head

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

Системные настройки по умолчанию

Кроме пользовательских параметров есть системные профили: они задают значения для новых учётных записей и могут блокировать изменения.

# профили dconf
ls /etc/dconf/profile/ 2>/dev/null
cat /etc/dconf/profile/user 2>/dev/null
# базы настроек
ls /etc/dconf/db/ 2>/dev/null

Файл профиля перечисляет базы в порядке приоритета: пользовательская база обычно идёт последней и перекрывает системную.

# пример системной базы
sudo mkdir -p /etc/dconf/db/local.d
sudo tee /etc/dconf/db/local.d/00-defaults <<'EOF'
[org/gnome/desktop/interface]
clock-format='24h'
text-scaling-factor=1.1
EOF
sudo dconf update

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

Дамп — обычный текст, его удобно версионировать. Тогда эксперименты с оформлением не страшны: всегда можно откатиться.

mkdir -p ~/dotfiles/dconf
dconf dump /org/gnome/ > ~/dotfiles/dconf/gnome.txt
cd ~/dotfiles && git add dconf && git commit -m "desktop settings" 2>/dev/null
# откат
dconf load /org/gnome/ < ~/dotfiles/dconf/gnome.txt

Подводные камни

  • Ключ существует не во всех версиях окружения.
  • Часть настроек применяется только после перезапуска сессии.
  • Расширения хранят параметры в собственных схемах.
  • Массивы и строки требуют правильных кавычек.
  • dconf не хранит настройки приложений, которые пишут свои конфиги.
# найти схему расширения
gsettings list-schemas | grep -i extension | head
# проверить тип ключа перед set
gsettings range org.gnome.desktop.interface text-scaling-factor

Как быстро найти нужный ключ

Если неизвестно, где хранится параметр, ищите по значению или части имени: gsettings list-recursively выводит схему, ключ и текущее значение одной строкой.

gsettings list-recursively | grep -i "clock-format" | head
gsettings list-recursively org.gnome.desktop.interface | head -15

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

Итог

GSettings и dconf дают полный контроль над настройками рабочего стола из терминала: чтение, изменение, сброс, дамп и блокировка. Сохраняйте дамп перед экспериментами, не переносите конфиги между разными окружениями и используйте скрипт для воспроизводимой настройки новых машин.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте