Большинство настроек рабочего стола в 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 дают полный контроль над настройками рабочего стола из терминала: чтение, изменение, сброс, дамп и блокировка. Сохраняйте дамп перед экспериментами, не переносите конфиги между разными окружениями и используйте скрипт для воспроизводимой настройки новых машин.