Вопрос или проблема
Я пытаюсь создать автоматизированные процедуры для переключения между светлым и темным режимами для моего рабочего стола, как описано здесь. Единственная проблема в том, что я не знаю, какие команды gsettings
соответствуют различным настройкам, которые я хочу изменить. Настройки, которые я хочу изменить, следующие:
- Переключить мой GNOME терминал с моей “светлой” пользовательской темы на мою “темную” пользовательскую тему (или наоборот).
- В разделе “Внешний вид” GNOME функций изменить тему “Приложения” с Adwaita на Adwaita-dark (или наоборот).
- В моем выбранном текстовом редакторе (
gedit
) сменить тему “Kate” на тему “Oblivion” (или наоборот).
Но опять же, я не знаю, какие команды соответствуют этим изменениям.
Заранее спасибо за помощь.
РЕДАКТИРОВАТЬ: Я использую Rocky 9 с GNOME.
Используйте dconf watch /
, если GSettings использует dconf backend (как это происходит в обычных средах). Пути dconf обычно соответствуют 1:1 именам схем GSettings, за исключением разделителя, и dconf-editor
принимает оба варианта.
(Есть некоторые исключения, такие как профили gnome-terminal, которые используют “переносимую” схему. Для них dconf-editor
подскажет вам имя схемы, которое должно быть указано в gsettings
в формате schema.name:/path
, хотя вы можете обойти все это, используя более низкоуровневую команду dconf write
.)
В качестве альтернативы запустите gsettings list-recursively
до и после изменения, чтобы иметь возможность сравнить результаты.
Приложения в песочнице Flatpak не имеют доступа к глобальному dconf backend; вместо этого GSettings использует $XDG_CONFIG_HOME/glib-2.0/settings/keyfile
(который вне песочницы Flatpak находится в ~/.var/app/$id/config
).
Обратите внимание, что не все настройки относятся к GSettings. Например, опция глобального “темного режима” может напрямую редактировать ~/.config/gtk*/settings.ini
, так как ранее это была внутренняя опция GTK до того, как стала полноценной опцией GSettings.
Ответ или решение
Для решения задачи автоматизации переключения между светлым и темным режимами на вашем рабочем столе GNOME, необходимо использовать команды gsettings
, которые взаимодействуют с системными настройками. Ваши требования охватывают изменения тем в GNOME Terminal, GNOME Tweaks и текстовом редакторе Gedit. Далее я подробно расскажу, как определить необходимые команды и применить их для автоматизации.
Теория
В GNOME настройками управляет система GSettings, которая взаимодействует с базой данных dconf. Основное преимущество GSettings заключается в его гибкости и поддержке различных бекендов настроек. Команды GSettings позволяют менять пользовательские предпочтения в приложениях, подобных GNOME Terminal и Gedit, непосредственно из консоли.
Пример
1. GNOME Terminal
GNOME Terminal использует "перемещаемые" схемы для управления профилями терминала. Чтобы переключаться между светлой и темной темами, вам потребуется знать идентификаторы (UUID) профилей терминала. Для этого:
-
Найдите UUID текущего профиля. Введите в терминале:
gsettings get org.gnome.Terminal.ProfilesList default
Это вернет идентификатор, который используется по умолчанию.
-
Чтобы увидеть все доступные профили:
gsettings get org.gnome.Terminal.ProfilesList list
-
Смена темы в профиле может быть выполнена посредством изменения ключа
visible-name
или путем установки параметров цвета напрямую. Например, меняя ключиbackground-color
илиforeground-color
.
2. Переключение темы "Applications" в GNOME Tweaks
Темы приложений GNOME управляются через следующее:
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
Чтобы переключиться обратно на стандартную тему Adwaita, выполните:
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
Эти команды изменят общий стиль приложений, устанавливая или снимая тёмную тему.
3. Переключение тем в Gedit
Gedit позволяет переключаться между разными темами подсветки кода:
- Откройте настройки Gedit, используя:
gsettings list-recursively org.gnome.gedit.preferences.editor
- Затем установите тему через:
gsettings set org.gnome.gedit.preferences.editor scheme 'Kate'
Чтобы изменить тему обратно на Oblivion:
gsettings set org.gnome.gedit.preferences.editor scheme 'Oblivion'
Применение
-
Наблюдение за изменениями: Используйте
dconf watch /
для наблюдения за изменениями, которые вы вносите через графический интерфейс. Это позволит вам выявить точные команды или пути в GSettings/Dconf, отвечает за изменения. -
Проверка изменений: Команда
gsettings list-recursively
позволяет вывести все текущие настройки на экран. Сравнивая вывод этой команды до и после изменений, можно выявить, какие параметры были изменены. -
Изменения в Flatpak приложениях: Если вы используете Flatpak-приложения, учитывайте, что они используют изолированные файлы настроек, доступные по пути
~/.var/app/$id/config
. -
Дополнительные настройки GTK: Файл
~/.config/gtk*/settings.ini
также может участвовать в управлении темами. В нем можно найти параметры, влияющие на глобальные настройки интерфейса GTK.
Создав bash-скрипт или cron-задание для запуска команд, вы можете автоматизировать процесс переключения тем в зависимости от вашего расписания или личных предпочтений. Важно протестировать каждую команду отдельно, чтобы избежать непредвиденных ошибок и убедиться, что вся процедура проходит гладко.
Заключение: автоматизация изменения тем и стилей в GNOME возможна с использованием набора команд GSettings и Dconf. Это требует внимательного наблюдения за изменениями и использования корректных идентификаторов и путей для применения нужных настроек.