Uniform look for Qt and GTK applications (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Uniform look for Qt and GTK applications
. Дата последней синхронизации: 24 января 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
GTK (Русский)
Qt (Русский)
Программы, основанные на
Qt
и
GTK
, используют разные способы отображения графического интерфейса. Они используют различные темы, стили, иконки и многие другие вещи, так что программы, сделанные на разном инструментарии, выглядят непохоже друг на друга. Эта статья поможет сделать приложения Qt и GTK выглядящими более согласованно.
Обзор
Чтобы добиться схожего внешнего вида, вам понадобится изменить следующее:
Тема
- Набор стилей, тема иконок и цветовая схема.
Стиль
- Внешний вид виджетов.
Тема значков
- Глобальный набор значков.
Цветовая схема
- Глобальный набор цветов, используемый в сочетании со стилем.
Можно выбрать два разных подхода:
Выбрать
стили отдельно для GTK и Qt
с помощью перечисленных ниже инструментов и постараться выбрать похожие темы (стиль, цвета, иконки, курсоры, шрифты).
Использовать специальные
движки тем
, которые конвертируют стили одного инструментария в стили другого, чтобы он соответствовал вашему основному инструментарию.
Стили для Qt и GTK
Существуют стили, которые реализованы как для Qt, так и для GTK. С их помощью вы можете иметь единый внешний вид для всех приложений независимо от того, с помощью какого инструментария они были написаны.
Совет
Вы можете захотеть применить определённые пользователем стили к приложениям, запускаемым от имени root. Смотрите
GTK (Русский)#Тема не применяется к приложениям root
и
Qt (Русский)#Не применяется тема для приложений, запущенных от имени root
.
Примечание
Начиная с версии 3.16, GTK
больше не поддерживает
темы, не использующие CSS, поэтому старые решения вроде Oxygen-Gtk
больше не работают
.
Breeze
Breeze — это стиль Qt по умолчанию в KDE Plasma. Его можно установить с помощью пакета
breeze
для Qt5, пакета
breeze-kde4
AUR
[
ссылка недействительна
: package not found]
для Qt4 и пакета
breeze-gtk
для GTK 2 и GTK 3.
После установки вы можете использовать один из многочисленных
инструментов настройки GTK
, чтобы изменить тему GTK.
Если у вас KDE Plasma, установите
kde-gtk-config
, перелогиньтесь и перейдите в
Параметры системы
(
systemsettings
), раздел
Внешний вид > Оформление приложений > Настроить оформление приложений GNOME/GTK
. Шрифты, темы значков, курсоры и стили виджетов, установленные в настройках KDE, автоматически влияют на настройки GTK; ручной выбор требуется только для темы GTK.
Adwaita
Adwaita является стандартной темой GNOME. Версия для GTK 3 входит в состав пакета
gtk3
, а версия GTK 2 находится в
gnome-themes-extra
.
adwaita-qt
— это Qt-порт темы Adwaita. В отличие от
#QGtkStyle
, который подражает теме GTK 2, он является полноценным стилем Qt. Его можно
установить
с помощью пакетов
adwaita-qt4
AUR
[
ссылка недействительна
: package not found]
,
adwaita-qt5-git
AUR
и
adwaita-qt6-git
AUR
для версий Qt 4, 5 и 6 соответственно.
Чтобы использовать Adwaita в качестве стиля Qt по умолчанию:
Для Qt4 используется
Конфигурация Qt
(
qtconfig-qt4
), выберите
adwaita
в пункте
Внешний вид > Стиль интерфейса
. Также можно отредактировать файл
/etc/xdg/Trolltech.conf
(общесистемный) или
~/.config/Trolltech.conf
(пользовательский):
~/.config/Trolltech.conf
...
[Qt]
style=adwaita
...
Для Qt5 можно задать
переменную окружения
QT_STYLE_OVERRIDE=adwaita
или использовать
qt5ct
(смотрите
Qt (Русский)#Настройка приложений Qt 5 в средах, отличных от KDE Plasma
).
Kvantum
kvantum
— это настраиваемый движок тем на основе SVG для Qt5, который поставляется с множеством встроенных стилей, включая версии некоторых популярных тем GTK, таких как Adapta, Arc, Ambiance, Materia.
Движки тем
Движок тем (
theme engine
) можно представить как тонкий API, который конвертирует темы (кроме иконок) между одним или несколькими инструментариями. Эти движки выполняют дополнительный код в процессе работы, так что такое решение не столь элегантно и оптимально, как использование родных стилей.
QGtkStyle
Примечание
QGtkStyle был удалён из
qt5-base
5.7.0
[1]
и добавлен в
qt5-styleplugins
AUR
[2]
Важно
Некоторые темы GTK 2 могут отображаться некорректно.
Этот стиль Qt использует GTK 2 для рендеринга всех компонентов, чтобы быть похожим на
GNOME
и другие среды, ипользующие GTK. Начиная с Qt 4.5, этот стиль входит в состав Qt. Он требует установки и настройки
gtk2
AUR
.
Это стиль Qt4 по умолчанию в Cinnamon, GNOME и Xfce, и стиль Qt5 по умолчанию в Cinnamon, GNOME, MATE, LXDE и Xfce. В других средах:
Для Qt4 используется
Конфигурация Qt
(
qtconfig-qt4
), выберите GTK в пункте
Внешний вид > Стиль интерфейса
. Также можно отредактировать файл
/etc/xdg/Trolltech.conf
(общесистемный) или
~/.config/Trolltech.conf
(пользовательский):
~/.config/Trolltech.conf
...
[Qt]
style=GTK+
...
Для Qt 5 установите
qt5-styleplugins
AUR
и задайте
переменную окружения
QT_QPA_PLATFORMTHEME=gtk2
Для Qt 6 установите
qt6gtk2
AUR
и выберите стиль
qt6gtk2
в настройках
qt6ct
или задайте переменную окружения
QT_QPA_PLATFORMTHEME=qt6gtk2
Для полного единообразия убедитесь, что выбранная
тема GTK
поддерживает как GTK 2, так и GTK 3. Если тема имеет несогласованный рендеринг после переключения Qt на стиль GTK2, установите
gtk-theme-switch2
AUR
и выберите тему.
QGnomePlatform
Эта тема применяет настройки внешнего вида GNOME для Qt-приложений. Она может быть установлена с помощью пакета
qgnomeplatform-qt5
AUR
или
qgnomeplatform-qt6
AUR
(разрабатываемая версия доступна в пакете
qgnomeplatform-qt5-git
AUR
или
qgnomeplatform-qt6-git
AUR
). Она не предоставляет сам стиль Qt, вместо этого требуется
стиль, поддерживающий как Qt, так и GTK
.
Эта тема используется по умолчанию в GNOME с версии 3.20. Для других систем её можно включить через
переменную окружения
QT_QPA_PLATFORMTHEME=gnome
.
Советы и рекомендации
Использование значков GTK в приложениях Qt
Если у вас
Plasma
, запустите
kde-gtk-config
и выберите нужные значки в разделе
Параметры системы > Внешний вид
.
Если у вас
GNOME
, запустите
dconf-editor
и измените ключ
icon-theme
по адресу
org > gnome > desktop > interface
, прописав желаемую тему значков.
Если вы не используете
среду рабочего стола
(например, если у вас минималистичная система с
i3-wm
),
установите
пакет
dconf-editor
и измените тему значков как описано выше.
Вам также может понадобиться прописать
переменную окружения
DESKTOP_SESSION
.
Примечание
Если тема значков не применилась, проверьте правильность ввода её имени. Например, если вы хотите применить активную в данный момент тему значков к вашим приложениям Qt, вы можете найти правильный формат её имени с помощью команды:
$ awk -F= '/icon-theme/ {print $2}' ~/.gtkrc-2.0
Добавление рамки окна и строки заголовка в приложениях GTK3, запущенных в KDE Plasma
Установите
пакет
gtk3-nocsd-git
AUR
[
ссылка недействительна
: package not found]
и перезапустите оконный менеджер. Также можно запустить приложение GTK через обёртку:
$ gtk3-nocsd gedit
Улучшение субпиксельного рендеринга приложений GTK, запущенных в KDE Plasma
Смотрите
Настройка шрифтов#LCD filter (ЖК-фильтр)
.
Согласованный диалог выбора файлов
Если вы хотите иметь одинаковый внешний вид диалога выбора файлов в приложениях GTK и Qt, можно использовать порталы XDG.
Установите
пакеты
xdg-desktop-portal
and
xdg-desktop-portal-kde
и пропишите
переменную окружения
GTK_USE_PORTAL=1
в файле
/etc/environment
.
Имейте в виду, что не во всех приложениях GTK это работает корректно. Например,
Thunderbird
поддерживает это.
Приложения на основе Electron должны использовать как минимум Electron 14 (смотрите
#19159
) и корректно реализовывать эту функцию. Для vscode есть
pull request
.
Meld 3.20.3-1 использует диалог gtk; версия 3.21.1 из
meld-git
AUR
использует диалог kde, но
не может открывать каталоги
.
В GIMP это
не реализовано
.
Примечание
Существует ещё много gtk-приложений, в которых портал не реализован должным образом (заброшенные приложения, или авторы сосредоточены на других задачах). Чтобы упростить выбор файлов из таких приложений, вы можете хотя бы синхронизировать закладки из dolphin в nautilus. Используйте эту команду:
awk -F\" '/<bookmark href=\"file/ {print $2}' < $HOME/.local/share/user-places.xbel > $HOME/.config/gtk-3.0/bookmarks
Также можно использовать
bookmarksync-git
AUR
для этой цели. Там вы можете вручную редактировать и синхронизировать закладки в обе стороны.
Решение проблем
Темы в приложениях GTK не работают
Если установленные вами стили или темы не отображаются в ваших GTK-приложениях, то, скорее всего, файлы настроек GTK по какой-то причине не загружаются. Вы можете проверить, где ваша система ожидает найти эти файлы, выполнив следующее:
$ export | grep gtk
Для GTK2 файлы обычно лежат в
~/.gtkrc2.0
или
~/.gtkrc2.0-kde
.
После обновления системы приложения GTK не используют значки svg (breeze)
Для исправления выполните следующую команду:
# gdk-pixbuf-query-loaders --update-cache
Приложения Flatpak Qt не используют тему Adwaita dark
Установите нужный KStyle:
# flatpak install flathub org.kde.KStyle.Adwaita
Приложения Qt, запущенные на GNOME Wayland, имеют отличающееся оформление рамки окна даже после установки темы Qt
Установите
qgnomeplatform-qt5
AUR
и пропишите
переменную окружения
QT_QPA_PLATFORMTHEME='gnome'
.
Это точно работает с темами Adwaita и Adwaita-dark.
Приложения GTK используют настройки KDE не полностью
Для более хорошей интеграции с
Plasma
попробуйте установить
gnome-settings-daemon
,
gsettings-desktop-schemas
и
gsettings-qt
[
ссылка недействительна
: replaced by
gsettings-qt5
]
.
Отсутствует меню "GTK" в kde-gtk-config
Если
kde-gtk-config
по каким-то причинам не работает и в системных настройках KDE не появляется возможность настройки приложений GTK, можно использовать
инструменты настройки GTK
. Например, можно использовать
lxappearance
: хоть он и является частью проекта LXDE, он не привязан к среде рабочего стола и может быть установлен отдельно от LXDE.
Внешний вид Dolphin не полностью соответствует Nautilus
Смотрите
Dolphin#Mismatched folder view background colors
.