GTK (Русский)
C сайта GTK:
- GTK, или GIMP Toolkit - это мультиплатформенный инструментарий для разработки графического пользовательского интерфейса. Предлагая полный набор виджетов, GTK подходит для проектов от небольших одноразовых инструментов до целых пакетов приложений.
GTK, GIMP Toolkit, изначально сделан проектом GNU для GIMP, но теперь это очень популярный инструмент, имеющий биндинги для многих языков программирования. Эта статья рассматривает инструменты, используемые для настройки тем GTK, стилей, иконок, шрифтов и размеров шрифтов, а также подробную ручную настройку.
Установка
Доступно несколько версий GTK. Их можно установить с помощью следующих пакетов:
- GTK 4.x доступен с пакетом gtk4.
- GTK 3.x доступен с пакетом gtk3.
- GTK 2.x доступен с пакетом gtk2.
- GTK 1.x доступен с пакетом gtkAUR.
Темы
GTK 3 и GTK 4 по умолчанию используют тему Adwaita, но также доступны темы HighContrast и HighContrastInverse.
В GTK 2 тема по умолчанию Raleigh, но Arch Linux имеет свой файл настроек /usr/share/gtk-2.0/gtkrc
, который устанавливает тему по умолчанию Adwaita.
Выбрать определённую тему можно с помощью переменной окружения:
- Для GTK 3 и GTK 4 используйте переменную
GTK_THEME
. Например, чтобы запустить Калькулятор GNOME с тёмным вариантом темы Adwaita:
$ GTK_THEME=Adwaita:dark gnome-calculator
- Применение переменной к ярлыкам приложений описано в статье Ярлыки приложений#Изменение переменных окружения.
- Приложения, использующие libadwaita, требуют специальной поддержки и обязательной установки переменной окружения
GTK_THEME
, если используется тема GTK, отличная от Adwaita или Adwaita-dark.
- Для GTK 2 используйте переменную
GTK2_RC_FILES
. Например, чтобы запустить GIMP с темой Raleigh:
$ GTK2_RC_FILES=/usr/share/themes/Raleigh/gtk-2.0/gtkrc gimp
gtkrc
также может быть пользовательским файлом в вашем домашнем каталоге, созданным любым из инструментов настройки. Смотрите #Примеры.Другие темы могут быть установлены из официальных репозиториев или из AUR. Также можно вручную поместить темы в ~/.themes/
или ~/.local/share/themes/
.
Темы с поддержкой GTK 2 и GTK 3:
- Adapta — Адаптивная тема GTK, основанная на Material Design. Включает: Adapta, Adapta-Eta, Adapta-Nokto, Adapta-Nokto-Eta
- Arc — Плоская тема с современным внешним видом и прозрачными элементами. Включает: Arc, Arc-Dark, Arc-Darker
- https://github.com/jnsh/arc-theme || с прозрачностью: arc-gtk-theme, без прозрачности: arc-solid-gtk-theme
- Bluebird — Blue Desktop Suite для Xfce.
- Breeze — GTK версия тем виджетов KDE по умолчанию. Включает: Breeze, Breeze-Dark
- Deepin — Тема по умолчанию для рабочего стола Deepin. Включает: deepin, deepin-dark
- GNOME Extra Themes — Дополнительные темы для рабочего стола GNOME. Включает: Adwaita, Adwaita-dark, HighContrast
- Greybird — Серо-голубая тема Xfce, используемая по умолчанию в Xubuntu 12.04.
- Materia — Плоская тема в стиле Material Design для GTK3, GTK2 и GNOME Shell.
- MATE Themes — Тема по умолчанию для рабочего стола MATE. Включает: BlackMATE, Blue-Submarine, BlueMenta, ContrastHighInverse, Green-Submarine, GreenLaguna, Menta, TraditionalGreen, TraditionalOk
- Numix — Плоская и лёгкая тема с современным видом (GNOME, Openbox, Unity, Xfce). Включает: Numix
- Vertex — Тема для GTK 3, GTK 2, Gnome-Shell и Cinnamon.
- Zuki — Темы для GTK, gnome-shell и др.
Есть ряд дополнительных тем GTK в AUR: поиск gtk-theme.
GTK и Qt
Если у вас есть GTK и Qt (KDE) приложения на рабочем столе, то вы знаете, что их внешность не сочетается/не совпадает. Если вы хотите, чтобы ваши стили GTK соответствовали вашим стилям Qt, смотрите статью Единый вид приложений Qt и GTK.
Средства настройки
Почти все основные среды рабочего стола предоставляют инструменты для настройки тем GTK, иконок, шрифта и размера шрифта, и управляют этими настройками с помощью XSettings:
- Если вы используете Cinnamon, используйте Themes tool (cinnamon-settings themes): перейдите в Параметры > Параметры системы > Оформление.
- Если вы используете Enlightenment: перейдите в Settings > All > Look > Application Theme.
- Если вы используете GNOME, используйте Gnome Tweaks (gnome-tweaks): установите gnome-tweaks.
- Если вы используете MATE, используйте Appearance Preferences tool (mate-appearance-properties): перейдите в Система > Параметры > Внешний вид.
- Если вы используете Xfce, используйте Appearance tool: перейдите Настройки > Внешний вид.
Другие графические инструменты, как правило перезаписывают файлы настроек.
Инструменты, поддерживающие GTK 2 и GTK 3:
- KDE GTK Configurator — Приложение, которое позволяет изменять стиль и шрифт приложений GTK 2 и GTK 3.
- https://invent.kde.org/plasma/kde-gtk-config || kde-gtk-config
- После установки,
kde-gtk-config
также можно найти в System Settings > Application Appearance > GTK.
- LXAppearance — независимая от среды рабочего стола утилита настройки GTK 2 и GTK 3 от проекта LXDE (не требует других частей LXDE).
- https://wiki.lxde.org/en/LXAppearance[устаревшая ссылка 2022-09-18 ⓘ] || lxappearance-gtk3
- Oo-mox — Графическое приложение для генерации различных цветовых вариаций тем Numix и Flat-Plat (GTK 2 и 3), тем иконок Archdroid и Gnome-Colors. Также позволяет генерировать предварительно масштабированные темы GTK 2 для HiDPI-дисплеев.
Инструменты, поддерживающие только GTK 2:
- GTK Change Theme — Маленькая программа, которая позволяет изменять вашу GTK 2.0 тему (считается лучшей альтернативой switch2).
- GTK Preference Tool — Переключает темы GTK и меняет шрифт.
- https://gtk-win.sourceforge.io/home/index.php/Main/GTKPreferenceTool[устаревшая ссылка 2024-07-30 ⓘ] || gtk2_prefsAUR
- GTK Theme Switch — Простой переключатель тем GTK.
Настройка
Параметры GTK могут быть вручную заданы в файлах настройки, но среда рабочего стола и приложения могут переопределить эти параметры. В зависимости от версии GTK, эти файлы находятся по пути:
- GTK 2 конкрентного пользователя:
~/.gtkrc-2.0
- GTK 2 всей системы:
/etc/gtk-2.0/gtkrc
- GTK 3 конкрентного пользователя:
$XDG_CONFIG_HOME/gtk-3.0/settings.ini
или$HOME/.config/gtk-3.0/settings.ini
если не установлена$XDG_CONFIG_HOME
- GTK 3 всей системы:
/etc/gtk-3.0/settings.ini
- GTK 4 конкрентного пользователя:
$XDG_CONFIG_HOME/gtk-4.0/settings.ini
или$HOME/.config/gtk-4.0/settings.ini
если не установлена$XDG_CONFIG_HOME
- GTK 4 всей системы:
/etc/gtk-4.0/settings.ini
- Полный список доступных настроек описан в документации GtkSettings (GTK 4, GTK 3, GTK 2).
- Некоторые описанные ниже настройки (например
gtk-icon-sizes
) являются устаревшими и игнорируется с GTK 3.10. - При редактировании файлов настроек GTK изменения будут применены только для вновь запущенных приложений.
Базовая настройка темы
Для ручного изменения темы GTK, иконок, шрифтов и размеров шрифтов добавьте следующие файлы настроек, например:
- GTK 2:
~/.gtkrc-2.0
gtk-icon-theme-name = "Adwaita" gtk-theme-name = "Adwaita" gtk-font-name = "DejaVu Sans 11"
- GTK 3:
$XDG_CONFIG_HOME/gtk-3.0/settings.ini
[Settings] gtk-icon-theme-name = Adwaita gtk-theme-name = Adwaita gtk-font-name = DejaVu Sans 11
- GTK 4:
$XDG_CONFIG_HOME/gtk-4.0/settings.ini
[Settings] gtk-icon-theme-name = Adwaita gtk-theme-name = Adwaita gtk-font-name = DejaVu Sans 11
Если тема для GTK 3 не применяется, в дополнение к этому используйте gsettings
:
$ gsettings set org.gnome.desktop.interface gtk-theme Pop
index.theme
.Вариант тёмной темы
Некоторые темы GTK 3 содержат тёмный вариант темы, но он используется только когда приложение запрашивает именно его. Чтобы использовать тёмную тему со всеми GTK 3 приложениями, установите:
gtk-application-prefer-dark-theme = true
Для GTK 4 используйте:
$ gsettings set org.gnome.desktop.interface color-scheme prefer-dark
Горячие клавиши
Горячие клавиши (accelerators) можно изменить путём наведения курсора мыши на соответствующий пункт меню и нажав нужную комбинацию клавиш. Чтобы включить эту функцию, установите:
gtk-can-change-accels = 1
Горячие клавиши Emacs
Чтобы в приложениях GTK иметь горячие клавиши, подобные Emacs, добавьте следующее:
~/.gtkrc-2.0
gtk-key-theme-name = "Emacs"
~/.config/gtk-3.0/settings.ini
[Settings] gtk-key-theme-name = Emacs
Для GTK3 также выполните:
$ gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"
В XFCE есть похожая настройка:
$ xfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs
Файлы в /usr/share/themes/Emacs/
определяют сочетания клавиш Emacs и могут быть изменены. Копирование секций в пользовательский файл ~/.gtkrc-2.0
позволяет вносить изменения для каждого пользователя отдельно.
Задержка меню GNOME
Этот параметр управляет задержкой между "указыванием мыши" на меню и "открытием меню". Эта задержка измеряется в миллисекундах.
gtk-menu-popup-delay = 0
Уменьшение размера виджетов
Если у вас небольшой экран или вы просто не любите большие иконки и виджеты, вы можете изменить их размер.
Для того чтобы иконки были без текста в панели инструментов (допустимые значения), используйте
gtk-toolbar-style = GTK_TOOLBAR_ICONS
Чтобы использовать меньшие иконки:
gtk-icon-sizes = "panel-menu=16,16:panel=16,16:gtk-menu=16,16:gtk-large-toolbar=16,16\ :gtk-small-toolbar=16,16:gtk-button=16,16"
Или, чтобы удалить иконки из кнопок полностью:
gtk-button-images = 0
Вы также можете удалить иконки из меню:
gtk-menu-images = 0
Скрытие кнопок CSD
Чтобы скрыть кнопки сворачивания и разворачивания, которые отображаются через декорирование на стороне клиента (CSD)[3] в окнах gtk3:
gtk-decoration-layout=menu:close
Смотрите документацию GTK.
Отключение вставки мышью
Чтобы отключить вставку средней кнопкой мыши из буфера обмена (PRIMARY):
gtk-enable-primary-paste=false
Место запуска выбора файла
Чтобы открывать диалог "выбор файла" (например при открытии/сохранении) в текущем рабочем каталоге а не в последнем (recent) месте (обычно текущий-рабочий-каталог это домашний каталог), сделайте следующее:
GTK 3
Измените DConf с gsettings:
$ gsettings set org.gtk.Settings.FileChooser startup-mode cwd
GTK 2:
Измените файл настроек ~/.config/gtk-2.0/gtkfilechooser.ini
:
StartupMode=cwd
Старое поведение прокрутки
До GTK 3.6 щелчок в стороне от ползунка прокрутки сдвигал прокрутку в направлении щелчка примерно на одну страницу. Начиная с GTK 3.6, прокрутка сразу перейдёт к позиции, в которой был выполнен щелчок. Такое поведение можно отменить в некоторых приложениях путем изменения следующей настройки:
~/.config/gtk-3.0/settings.ini
[Settings] gtk-primary-button-warps-slider = false
Отключение наложения скроллбара
Начиная с GTK 3.15, наложение полосы прокрутки по умолчанию включено, что означает, что полосы прокрутки будут показываться только при наведении курсора мыши на приложение GTK. Такое поведение можно отменить, установив следующую переменную окружения: GTK_OVERLAY_SCROLLING=0
. Смотрите Переменные окружения#Графические приложения.
С версии GTK 3.24.9 это также можно отключить через настройки:
~/.config/gtk-3.0/settings.ini
[Settings] gtk-overlay-scrolling = false
GTK 4 больше не поддерживает GTK_OVERLAY_SCROLLING
. Начиная с GTK 4, наложение полос прокрутки является частью инструментария. Переключатель был удалён, чтобы предотвратить поломку приложений, которые не были протестированы с обоими вариантами. Чтобы позволить разработчикам приложений решать, как должны выглядеть их приложения, GTK предоставляет механизм для отказа или добавления настройки для пользователей. Функция gtk_scrolled_window_set_overlay_scrolling() может быть использована для включения/выключения наложения для каждого приложения отдельно. Разработчики приложений могут дополнительно использовать GSettings, чтобы привязать к свойству пользовательскую настройку.
Удалить наложенные индикаторы скроллбара
Позиции наложения прокрутки обозначены тонкими пунктирными линиями в окне приложения. Они будут присутствовать, даже если наложение прокрутки отключено с помощью переменной окружения, упомянутой в предыдущем разделе. Для их удаления создайте следующий файл:
~/.config/gtk-3.0/gtk.css
/* Remove dotted lines from GTK 3 applications */ undershoot.top, undershoot.right, undershoot.bottom, undershoot.left { background-image: none; }
Примеры
Примеры настройки GTK:
~/.gtkrc-2.0
gtk-theme-name="Arc-Dark" gtk-icon-theme-name="breeze-dark" gtk-font-name="Sans 11" gtk-cursor-theme-name="Breeze_Amber" gtk-cursor-theme-size=0 gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR gtk-button-images=0 gtk-menu-images=0 gtk-enable-event-sounds=0 gtk-enable-input-feedback-sounds=0 gtk-xft-antialias=1 gtk-xft-hinting=1 gtk-xft-hintstyle="hintslight" gtk-xft-rgba="rgb"
~/.config/gtk-3.0/settings.ini
[Settings] gtk-theme-name=Arc-Dark gtk-icon-theme-name=breeze-dark gtk-font-name=Sans 11 gtk-cursor-theme-name=Breeze_Amber gtk-cursor-theme-size=0 gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR gtk-button-images=0 gtk-menu-images=0 gtk-enable-event-sounds=0 gtk-enable-input-feedback-sounds=0 gtk-xft-antialias=1 gtk-xft-hinting=1 gtk-xft-hintstyle=hintslight gtk-xft-rgba=rgb # gtk-decoration-layout=menu:close # gtk-application-prefer-dark-theme=1
~/.config/gtk-4.0/settings.ini
[Settings] gtk-theme-name=Adwaita gtk-icon-theme-name=gnome gtk-font-name=Cantarell 11 gtk-cursor-theme-name=Grounation gtk-cursor-theme-size=0 gtk-enable-event-sounds=1 gtk-enable-input-feedback-sounds=1 gtk-xft-antialias=1 gtk-xft-hinting=1 gtk-xft-hintstyle=hintfull gtk-primary-button-warps-slider=false gtk-xft-rgba=none
Бэкенды GDK
GDK (базовый уровень абстракции GTK) поддерживает несколько бэкендов для отображения GTK-приложений.
Бэкенд Wayland
Бэкенд GDK Wayland поддерживается только в gtk3 и используется по умолчанию в сеансах Wayland.
Приложения, использующие версии GTK до gtk3, не имеют поддержки Wayland и будут использовать бэкенд X11 через Xwayland.
При использовании бэкенда Wayland некоторые переменные не берутся из settings.ini
.
Любой ключ, присутствующий в схеме GSettings org.gnome.desktop.interface
, считывается оттуда вместо settings.ini
.
Примером таких переменных являются gtk-color-scheme
и icon-theme
, ключи которых должны быть прописаны в GSettings, чтобы применить тему в Wayland. В качестве альтернативы, если нужно настроить только тему, можно установить переменную окружения GTK_THEME
.
Бэкенд Xorg
Если используется Xorg, бэкенд по умолчанию автоматически переключается на x11.
Можно заставить приложения GTK3, работающие в сеансе Wayland, использовать бэкенд X11 через Xwayland, установив переменную окружения GDK_BACKEND=x11
.
Бэкенд Broadway
GDK Broadway обеспечивает поддержку для отображения GTK приложений в веб-браузере, используя HTML5 и веб-соккеты. [4]
При использовании broadwayd, укажите номер дисплея для использования с префиксом двоеточие, похожий на X. На дисплее по умолчанию номер 0.
$ display_number=:5
Запустите его.
$ broadwayd $display_number
Порт используемый по умолчанию
port = 8080 + $display_number
В браузере откройте адрес http://127.0.0.1:порт
Для запуска приложений
$ GDK_BACKEND=broadway BROADWAY_DISPLAY=$display_number <<app>>
В качестве альтернативы, можно установить адрес и порт
$ broadwayd --port $port_number --address $address $display_number
Решение проблем
Различные темы приложений между GTK 2 и GTK 3
В общем, если выбранная тема имеет поддержку как для GTK 2 и GTK 3, тема будет применяться для всех GTK 2 и GTK 3 приложений. Если выбранная тема имеет поддержку только GTK 2, будет использоваться для GTK 2 приложений, и GTK тема по умолчанию будет использоваться для GTK 3 приложений. Если выбранная тема имеет поддержку только GTK 3, то будет использована для GTK 3 приложений, и GTK тема по умолчанию будет использоваться для GTK 2 приложений. Таким образом, для согласования тем приложений, лучше использовать тему, которая имеет поддержку как GTK 2 так и GTK 3.
Вы можете найти установленные темы на вашей системе с поддержкой обоих версий GTK 2 и GTK 3, используя эту команду (не работает с именами, содержащими пробелы):
find $(find ~/.themes /usr/share/themes/ -wholename "*/gtk-3.0" | sed -e "s/^\(.*\)\/gtk-3.0$/\1/") -wholename "*/gtk-2.0" | sed -e "s/.*\/\(.*\)\/gtk-2.0/\1"/
Тема не применяется к приложениям root
Пользовательский файл темы ($XDG_CONFIG_HOME/gtk-3.0/settings.ini
, ~/.gtkrc-2.0
) не может быть прочитан другими аккаунтами, выбранная тема не будет применяться к приложениям X, запущенным от имени root. Возможные решения:
- Создайте символические ссылки, например
# ln -s /home/пользователь/.gtkrc-2.0 /etc/gtk-2.0/gtkrc # ln -s /home/пользователь/.config/gtk-3.0/settings.ini /etc/gtk-3.0/settings.ini
- Измените общесистемный файл настроек:
/etc/gtk-3.0/settings.ini
(GTK 3) или/etc/gtk-2.0/gtkrc
(GTK 2) - Выполните настройку темы от имени root
# lxappearance
- Используйте настройки демона (это в большинстве окружений рабочего стола). Вариант desktop-agnostic использует XSettings доступный в AUR xsettingsd-gitAUR.
Клиентские декорации
С версии GTK 3.12 введены Клиентские декорации, которые действуют в титлбаре от оконного менеджера. Это может решить такие вопросы как двойной титл-бар, нет титл-бара вообще, или двойная тень с включенным композитингом.
Чтобы удалить тень и зазор вокруг окон (например, в сочетании с тайловым оконным менеджером), создайте следующий файл:
~/.config/gtk-3.0/gtk.css
.window-frame, .window-frame:backdrop { box-shadow: 0 0 0 black; border-style: none; margin: 0; border-radius: 0; } .titlebar { border-radius: 0; } .window-frame.csd.popup { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.13); } .header-bar { background-image: none; background-color: #ededed; box-shadow: none; } /* You may want to use this if you don't like the double title. GtkLabel.title { opacity: 0; }*/
Если всё ещё есть визуальные проблемы, вы можете использовать Инспектор GTK, чтобы найти проблемные элементы, как описано здесь [5].
Чтобы настроить кнопки на панели заголовка, используйте опцию gtk-decoration-layout
. [6] Приведенный ниже пример удаляет все кнопки:
~/.config/gtk-3.0/settings.ini
gtk-decoration-layout=menu:
Чтобы полностью убрать клиентские декорации, можно использовать пропатченную библиотеку, например gtk3-classicAUR или gtk3-nocsd-gitAUR.
Седиль ç/Ç вместо ć/Ć (характерно в основном для Французского языка)
Смотрите [7] и [8] для решения проблемы с использованием Xcompose (US international layout).
Подавить предупреждение о accessibility bus
Если вы не используете функции Gnome Accessibility (специальных возможностей),вы можете получать такие предупреждения :
WARNING **: Couldn't connect to accessibility bus:
вы можете подавить предупреждение, запуская программу с NO_AT_BRIDGE=1
или установить в качестве глобальной переменной окружения
Не соответствует цвет фона в строке заголовка (TitleBar)
Если вы используете оконный менеджер, который использует тему декорации окон, которая имитирует цвет темы фона GTK, вы можете обнаружить, что цвет заголовка окна больше не совпадает полностью с цветом приложений в некоторых приложениях GTK 3. В качестве обходного пути, создайте следующий файл:
~/.config/gtk-3.0/gtk.css
/* Always use background color */ GtkWindow { background-color: @theme_bg_color; } /* Fix tooltip background override */ .tooltip { background-color: rgba(0, 0, 0, 0.8); } .tooltip * { background-color: transparent; } /* Fix Nautilus desktop window background override */ NautilusWindow { background-color: transparent; }
Неправильно работают события фокуса в тайловых оконных менеджерах
Определите GDK_CORE_DEVICE_EVENTS=1
для использования стиля ввода GTK2, вместо xinput2. [10]
Поддержка эскизов для диалога выбора файла GTK
Установите gtk2-patched-filechooser-icon-viewAUR и gtk3-patched-filechooser-icon-viewAUR, чтобы получить возможность просмотра файлов в виде миниатюр вместо списка в окне выбора файла GTK.
GTK 3 без polkit
GTK3 зависит от polkit через colord, который необходим для печати. Однако печать прекрасно работает без установленного polkit; по крайней мере, с монохромным принтером и версиями пакетов gtk3-print-backends=3.22.19-2 и colord=1.4.1-1.
Некоторые темы GTK 2 изменяют только цветовую палитру пользовательского интерфейса
В зависимости от поддержки GTK 2 выбранной темой, элементы управления пользовательского интерфейса могут иметь стандартный вид Raleigh, возможно, с другой цветовой палитрой. Это связано с тем, что для этих тем требуется движок GTK 2 Murrine, который отсутствует (программы GTK 2 должны сообщать об этом в стандартном выводе ошибок). Установите пакет gtk-engine-murrine.
Возвращение старого поведения поиска в диалоге выбора файла GTK
Диалог выбора файла GTK использует тот же механизм поиска файлов по вводимому имени, что и в GNOME/Files. Это может быть очень неприятно и не очень хорошо сочетается с другими средами рабочего стола.
Некоторые приложения поддерживают XDG-desktop-portal, что позволяет приложению использовать родной диалог выбора файла. Если это не работает, вы можете восстановить старое поведение поиска, используя пропатченный GTK, например gtk3-classicAUR.
Текст в приложениях GTK 4 отображается размыто или неправильно
GTK 4 перешёл на сглаживание шрифтов с использованием оттенков серого без хинтинга. Доступна настройка, которая восстанавливает некоторые особенности поведения GTK 3 [11]. Субпиксельное сглаживание недоступно.
~/.config/gtk-4.0/settings.ini
[Settings] gtk-hint-font-metrics=1