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

Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи 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-kde4AUR для 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-qt4AUR и adwaita-qt5[ссылка недействительна: package not found] (компиляция займёт некоторое время) для версий Qt 4 и 5 соответственно.

Чтобы использовать Adwait в качестве стиля 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 (Русский)#Настройка приложений Qt5 в окружениях, отличных от KDE Plasma[ссылка недействительна: раздел не найден]).

### Kvantum

kvantum — это настраиваемый движок тем на основе SVG для Qt5, который поставляется с множеством встроенных стилей, включая версии некоторых популярных тем GTK, таких как Adapta, Arc, Ambiance, Materia.

## Движки тем

Движок тем (theme engine) можно представить как тонкий API, который конвертирует темы (кроме иконок) между одним или несколькими инструментариями. Эти движки выполняют дополнительный код в процессе работы, так что такое решение не столь элегантно и оптимально, как использование родных стилей.

### QGtkStyle

Примечание: QGtkStyle был удалён из qt5-base 5.7.0 [1] и добавлен в qt5-stylepluginsAUR [2]
Важно: Некоторые темы GTK 2 могут отображаться некорректно.

Этот стиль Qt использует GTK 2 для рендеринга всех компонентов, чтобы быть похожим на GNOME и другие среды, ипользующие GTK. Начиная с Qt 4.5, этот стиль входит в состав Qt. Он требует установки и настройки gtk2.

Это стиль 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-stylepluginsAUR и задайте переменную окружения `QT_QPA_PLATFORMTHEME=gtk2`
- Для Qt 6 установите qt6gtk2AUR и выберите стиль qt6gtk2 в настройках qt6ct или задайте переменную окружения `QT_QPA_PLATFORMTHEME=qt6gtk2`

Для полного единообразия убедитесь, что выбранная тема GTK поддерживает как GTK 2, так и GTK 3. Если тема имеет несогласованный рендеринг после переключения Qt на стиль GTK2, установите gtk-theme-switch2AUR и выберите тему.

### QGnomePlatform

Эта тема применяет настройки внешнего вида GNOME для Qt-приложений. Она может быть установлена с помощью пакета qgnomeplatform-qt5[ссылка недействительна: package not found] или qgnomeplatform-qt6[ссылка недействительна: package not found] (разрабатываемая версия доступна в пакете qgnomeplatform-qt5-gitAUR или qgnomeplatform-qt6-gitAUR). Она не предоставляет сам стиль 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-gitAUR и перезапустите оконный менеджер. Также можно запустить приложение 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-gitAUR использует диалог 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-gitAUR для этой цели. Там вы можете вручную редактировать и синхронизировать закладки в обе стороны.

## Решение проблем

### Темы в приложениях 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[ссылка недействительна: package not found] и пропишите переменную окружения `QT_QPA_PLATFORMTHEME='gnome'`. Это точно работает с темами Adwaita и Adwaita-dark.

### Приложения GTK используют настройки KDE не полностью

Для более хорошей интеграции с Plasma попробуйте установить gnome-settings-daemon, gsettings-desktop-schemas и gsettings-qt.

### Отсутствует меню "GTK" в kde-gtk-config

Если kde-gtk-config по каким-то причинам не работает и в системных настройках KDE не появляется возможность настройки приложений GTK, можно использовать инструменты настройки GTK. Например, можно использовать lxappearance: хоть он и является частью проекта LXDE, он не привязан к среде рабочего стола и может быть установлен отдельно от LXDE.

### Внешний вид Dolphin не полностью соответствует Nautilus

Смотрите Dolphin#Mismatched folder view background colors.

Categories:

- Widget toolkits (Русский)
- Eye candy (Русский)

Hidden categories:

- Pages with broken package links
- Pages with broken section links