Dark mode switching (Русский)
Приятно иметь возможность переключения между светлой и тёмной темой. Существуют варианты переключения по заходу солнца или по сочетанию клавиш.
Переключение тем может быть произведено как для запущенных программ, так и для программ, требующих демонов, так и для программ ещё не запущенных. В статье рассматривается переключение для запущенных программ.
Для переключения требуется поддержка от приложения или использование приложением GTK или Qt.
Инструменты
- darkman — darkman — инструмент, позволяющий автоматизировать переход в тёмную тему на закате и возврат к светлой теме на восходе. Он позволяет разместить drop-in скрипты, которые будут автоматически выполняться в нужное время.
- Yin-Yang — Yin-Yang — другой инструмент с похожими возможностями, однако запуск произвольных скриптов ещё не поддерживается.
GTK
Для переключения между светлым и тёмным вариантами нужно менять используемую тему.
Большинство тем GTK имеют тёмный вариант, обычно они обозначены суффиксом -dark
. Например стандартная тема для GTK называется Adwaita
, а тёмный вариант называется Adwaita-dark
.
Чтобы залочить тёмный вариант, смотрите GTK (Русский)#Вариант тёмной темы.
Чтобы мгновенно сменить тему уже работающих приложений, требуется или демон, предоставляющий xsettings spec, или gsettings. Для окружений, работающих в Xorg нужен демон xsettings. Для Wayland нужен gsettings.
Демон xsettings
xsettings нужен для сессий Xorg.
Демон xsettings для Xfce — xfsettingsd, доступен в пакете xfce4-settings.
Получить текущую используемую тему:
$ xfconf-query -c xsettings -p /Net/ThemeName
Установить тему:
$ xfconf-query -c xsettings -p /Net/ThemeName -s "new-theme"
Изменения применяются мгновенно и влияют на все приложения, использующие GTK.
gsettings
gsettings нужен для сессий Wayland.
Получить текущую используемую тему:
$ gsettings get org.gnome.desktop.interface gtk-theme
Установить тему:
$ gsettings set org.gnome.desktop.interface gtk-theme "new-theme"
Изменения применяются мгновенно и влияют на все приложения, использующие GTK.
Qt
Qt имеет механизм поддержки тем, похожий на GTK.
Один из вариантов — использовать GTK для стилизации Qt-приложений. Тогда изменение темы GTK повлияет и на Qt-приложения тоже.
Другой способ — использовать родную тему Qt, например adwaita-qtAUR. Для переключения тем смотрите Qt#Configuration of Qt5 apps under environments other than KDE Plasma.
Xfce
Смена темы в Xfce происходит похожим образом через xsettingsd, который распространяется в виде пакета xfce4-settings.
Приложения
Firefox
Firefox автоматически подхватывает текущую тему GTK и адаптирует свой интерфейс. Смотри раздел Firefox (Русский)#Тёмные темы чтобы узнать больше.
Чтобы изменить тему веб страниц, в магазине расширений Firefox рекомендуется расширение Dark Reader.
Thunderbird
Thunderbird применяет текущую тему GTK, но рекомендуются некоторые самостоятельные действия.
Смотрите Thunderbird#Theming tweaks.
Visual Studio Code
Для Visual Studio Code может пригодиться этот скрипт.
Alacritty
Alacritty поддерживает множество тем. Примеры конфигурации можно найти на странице color schemes на вики в GitHub репозитории проекта. Например, известная в IDEA тема Darkula есть в разделе Dracula на этой же странице.
Чтобы быстро сменить тему, требуется определить указатель для каждой цветовой схемы. Например укажите &black
после названия. После этого просто выполните colors: *black
. Изменение в файле конфигурации применится мгновенно и затронет все запущенные экземпляры. Если нет, возможно понадобится прописать live_config_reload: true
.
Границы окна и тайтлбар подчиняются теме GTK, но можно форсировать собственное поведение, установив настроку gtk_theme_variant
в положение None
.