Вопрос или проблема
Мне нравятся новые приложения “snap”, но приложения, установленные с помощью этого метода, похоже, не используют установленную у меня системную gtk-тему.
Некоторые используют Adwaita или, что еще хуже, Raleigh.
Как мне сделать так, чтобы они использовали стандартную тему Ambience, которую я использую по всей системе?
Проблема отслеживается здесь: темы в настоящее время еще не работают с snap.
Snap теперь поддерживает GTK темизацию, однако требуется установить ту же тему в качестве snap, которую вы выбрали на своей системе.
Официальный gtk-common-themes
snap содержит Adwaita, Adwaita-Dark, Ambiance, Arc, Arc-Dark, Arc-Darker, Breeze, Breeze-Dark, Communitheme, elementary, HighContrast, Radiance и Yaru.
Также есть adapta-theme
и adapta-gtk-snap
, а также gtk2-common-themes
для приложений GTK2.
Если вы не используете одну из этих тем, я думаю, вам сейчас не повезло.
Я заменил пакеты snap на пакеты apt.
Я делаю следующую замену:
sudo snap remove gnome-calculator gnome-characters gnome-system-monitor gnome-logs
sudo apt install gnome-calculator gnome-characters gnome-system-monitor gnome-logs
Теперь тема, заданная в настройках, применяется к этим приложениям.
В некоторых случаях вы можете заставить snap запуститься с темой, используя переменную окружения следующим образом
GTK_THEME=Adwaita-dark /snap/bin/libreoffice.writer
Если ваша тема недоступна в виде snap, быстрое и простое решение – автоматически смонтировать всю папку с темами поверх вашего snap после перезагрузки. Так, например, если вы пытаетесь настроить тему для Shutter, вы должны
sudo crontab -e
И добавить следующую строку:
@reboot mount --bind -o nodev,ro /usr/share/themes /snap/shutter/current/usr/share/themes
Я нашел решение здесь: https://gitlab.com/sundbp/dracula-theme-snap
Цитата с этого веб-сайта: Чтобы подключить тему ко всем приложениям, у которых есть доступные плагины к gtk-common-themes, вы можете выполнить:
for i in $(snap connections | grep gtk-common-themes:gtk-3-themes | awk '{print $2}'); do sudo snap connect $i dracula-gtk-theme:gtk-3-themes; done
for i in $(snap connections | grep gtk-common-themes:icon-themes | awk '{print $2}'); do sudo snap connect $i dracula-gtk-theme:icon-themes; done
Для других тем замените имя темы. Существуют темы как пакеты ubuntu snap (как для темы Dracula здесь), но темы уже должны быть предустановлены.
Ответ или решение
Как изменить тему Snap-приложений
Snap-приложения предоставляют пользователям универсальный способ установки и использования программного обеспечения. Однако многие столкнулись с проблемой неправильного отображения тем в Snap-приложениях, которые не соответствуют системной теме GTK, настроенной на вашем устройстве. В данной статье мы подробно рассмотрим способы изменения темы Snap-приложений, чтобы обеспечить единый стиль оформления для всех используемых программ.
Проблема
Snap-приложения могут отображать темы, отличающиеся от той, что используется в системе, чаще всего устанавливается Adwaita или Raleigh, вместо желаемой темы Ambience. Стандартные решения, как правило, не приводят к желаемым результатам, так как Snap-управление оформлением требует установки соответствующих тем, доступных в самом Snap.
Решения
-
Установка необходимых тем через snap
Snap теперь поддерживает GTK темing, но для этого необходимо, чтобы тема, используемая в системе, была также установлена как Snap. Вы можете установить gtk-common-themes, который содержит несколько популярных тем, включая Adwaita, Ambiance и другие. Для этого выполните команду:
sudo snap install gtk-common-themes
-
Замена пакетов Snap на пакеты apt
Если данный подход вас не устраивает, вы можете удалить Snap-версии приложений и заменить их на версии из стандартного репозитория apt. Например, чтобы удалить приложении Gnome и установить их через APT:
sudo snap remove gnome-calculator gnome-characters gnome-system-monitor gnome-logs sudo apt install gnome-calculator gnome-characters gnome-system-monitor gnome-logs
После этого темы, примененные через Tweak, будут работать корректно.
-
Принудительное применение темы через переменные окружения
В некоторых случаях можно запустить Snap-приложение с заданной темой, указав переменную окружения. Например, для LibreOffice:
GTK_THEME=Adwaita-dark /snap/bin/libreoffice.writer
-
Монтирование папки тем через crontab
Если желаемая тема недоступна в формате Snap, вы можете сделать обходной путь, автоматически монтируя вашу папку тем на Snap после перезагрузки системы. Например, для Shutter это можно сделать следующим образом:
sudo crontab -e
Затем добавьте следующую строку:
@reboot mount --bind -o nodev,ro /usr/share/themes /snap/shutter/current/usr/share/themes
-
Подключение пользовательских тем к приложениями через snap connect
Чтобы подключить темы ко всем приложениям, которые имеют доступные подключения к gtk-common-themes, выполните следующие команды:
for i in $(snap connections | grep gtk-common-themes:gtk-3-themes | awk '{print $2}'); do sudo snap connect $i <your-theme-name>:gtk-3-themes; done for i in $(snap connections | grep gtk-common-themes:icon-themes | awk '{print $2}'); do sudo snap connect $i <your-theme-name>:icon-themes; done
Замените
<your-theme-name>
на нужное вам название темы.
Заключение
Изменение темы Snap-приложений может потребовать некоторых дополнительных шагов, поскольку они требуют наличия тем в формате Snap для правильного отображения. Вы можете установить gtk-common-themes, заменить Snap-пакеты на APT-версии, использовать переменные окружения или монтировать темы автоматически. Выбор метода зависит от ваших предпочтений и желаемого результата. Используя перечисленные методы, вы сможете добиться единообразного оформления приложений в Snap, что улучшит общий пользовательский опыт.