GTK (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи GTK. Дата последней синхронизации: 22 марта 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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
Примечание: Применение переменной к ярлыкам приложений описано в статье Ярлыки приложений#Изменение переменных среды.
  • Для 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
https://github.com/tista500/Adapta || adapta-gtk-theme
  • Arc — Плоская тема с современным внешним видом и прозрачными элементами. Включает: Arc, Arc-Dark, Arc-Darker
https://github.com/jnsh/arc-theme || с прозрачностью: arc-gtk-theme, без прозрачности: arc-solid-gtk-theme
  • Bluebird — Blue Desktop Suite для Xfce.
https://github.com/shimmerproject/Bluebird || xfce-theme-bluebirdAUR
  • Breeze — GTK версия тем виджетов KDE по умолчанию. Включает: Breeze, Breeze-Dark
https://invent.kde.org/plasma/breeze-gtk || breeze-gtk
  • Deepin — Тема по умолчанию для рабочего стола Deepin. Включает: deepin, deepin-dark
https://github.com/linuxdeepin/deepin-gtk-theme || deepin-gtk-theme
  • GNOME Extra Themes — Дополнительные темы для рабочего стола GNOME. Включает: Adwaita, Adwaita-dark, HighContrast
https://gitlab.gnome.org/GNOME/gnome-themes-extra || gnome-themes-extra
  • Greybird — Серо-голубая тема Xfce, используемая по умолчанию в Xubuntu 12.04.
https://github.com/shimmerproject/Greybird || xfce-theme-greybirdAUR
  • Materia — Плоская тема в стиле Material Design для GTK3, GTK2 и GNOME Shell.
https://github.com/nana-4/materia-theme || materia-gtk-theme
  • MATE Themes — Тема по умолчанию для рабочего стола MATE. Включает: BlackMATE, Blue-Submarine, BlueMenta, ContrastHighInverse, Green-Submarine, GreenLaguna, Menta, TraditionalGreen, TraditionalOk
https://github.com/mate-desktop/mate-themes || mate-themes
  • Numix — Плоская и лёгкая тема с современным видом (GNOME, Openbox, Unity, Xfce). Включает: Numix
https://github.com/numixproject/numix-gtk-theme || numix-gtk-theme-gitAUR
  • Vertex — Тема для GTK 3, GTK 2, Gnome-Shell и Cinnamon.
https://github.com/horst3180/vertex-theme || vertex-themesAUR
  • Zuki — Темы для GTK, gnome-shell и др.
https://github.com/lassekongo83/zuki-themes || zuki-themesAUR

Есть ряд дополнительных тем 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 || lxappearance-gtk3
  • Oo-mox — Графическое приложение для генерации различных цветовых вариаций тем Numix и Flat-Plat (GTK 2 и 3), тем иконок Archdroid и Gnome-Colors. Также позволяет генерировать предварительно масштабированные темы GTK 2 для HiDPI-дисплеев.
https://github.com/actionless/oomox || themix-full-gitAUR

Инструменты, поддерживающие только GTK 2:

  • GTK Change Theme — Маленькая программа, которая позволяет изменять вашу GTK 2.0 тему (считается лучшей альтернативой switch2).
http://plasmasturm.org/code/gtk-chtheme/ || gtk-chtheme
  • GTK Preference Tool — Переключает темы GTK и меняет шрифт.
https://gtk-win.sourceforge.io/home/index.php/Main/GTKPreferenceTool || gtk2_prefsAUR
  • GTK Theme Switch — Простой переключатель тем GTK.
http://muhri.net/nav.php3?node=gts || gtk-theme-switch2AUR

Настройка

Параметры 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
Примечание:
  • Полный список доступных настроек описан в документации 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 3 не применяется, в дополнение к этому используйте gsettings:

$ gsettings set org.gnome.desktop.interface gtk-theme Pop
Примечание: Название темы значков — это название её каталога, а не название, прописанное в index.theme.

Вариант тёмной темы

Некоторые темы GTK 3 содержат тёмный вариант темы, но он используется только когда приложение запрашивает именно его. Чтобы использовать тёмную тему со всеми GTK 3 приложениями, установите:

gtk-application-prefer-dark-theme = true

Горячие клавиши

Горячие клавиши (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

Смотрите также [1] и [2].

Скрытие кнопок 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.
Совет: Старое поведение прокрутки может быть надёжно реализовано простым использованием правого щелчка вместо левого.

До 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:

Примечание: Они могут игнорироваться некоторыми средами рабочего стола (например, GNOME).
~/.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

Бэкенды GDK

GDK (базовый уровень абстракции GTK) поддерживает несколько бэкендов для отображения GTK-приложений.

Бэкенд Wayland

Бэкенд GDK Wayland поддерживается только в gtk3 и используется по умолчанию в сеансах Wayland.

Приложения, использующие версии GTK до gtk3, не имеют поддержки Wayland и будут использовать бэкенд X11 через XWayland.

Бэкенд 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; 
}

Неправильно работают события фокуса в тайловых оконных менеджерах

Примечание: Это отключит поддержку Сенсорного экрана для приложений GTK3. [9]

Определите 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. Субпиксельное сглаживание недоступно.

Смотрите также