GTK (Русский)

GTK, GIMP Toolkit, изначально сделан проектом GNU для GIMP, но теперь это очень популярный инструмент, имеющий биндинги для многих языков программирования. Эта статья рассматривает инструменты, используемые для настройки тем GTK, стилей, иконок, шрифтов и размеров шрифтов, а также подробную ручную настройку.

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

C сайта GTK:

GTK, или GIMP Toolkit - это мультиплатформенный инструментарий для разработки графического пользовательского интерфейса. Предлагая полный набор виджетов, 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 имеет свой файл настроек , который устанавливает тему по умолчанию Adwaita.

Выбрать определённую тему можно с помощью переменной окружения:

  • Для GTK 3 и GTK 4 используйте переменную . Например, чтобы запустить Калькулятор GNOME с тёмным вариантом темы Adwaita:
$ GTK_THEME=Adwaita:dark gnome-calculator
  • Для GTK 2 используйте переменную . Например, чтобы запустить GIMP с темой Raleigh:
$ GTK2_RC_FILES=/usr/share/themes/Raleigh/gtk-2.0/gtkrc gimp
Совет: gtkrc также может быть пользовательским файлом в вашем домашнем каталоге, созданным любым из инструментов настройки. Смотрите #Примеры.

Другие темы могут быть установлены из официальных репозиториев или из AUR. Также можно вручную поместить темы в ~/.themes/ или .

Темы с поддержкой GTK 2 и GTK 3:

  • 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

Есть ряд дополнительных тем 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): установите .
  • Если вы используете MATE, используйте Appearance Preferences tool (mate-appearance-properties): перейдите в Система > Параметры > Внешний вид.
  • Если вы используете Xfce, используйте Appearance tool: перейдите Настройки > Внешний вид.

Другие графические инструменты, как правило перезаписывают файлы настроек.

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

    После установки, также можно найти в System Settings > Application Appearance > GTK.

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

    • 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 конкрентного пользователя:
    • GTK 2 всей системы:
    • GTK 3 конкрентного пользователя: или если не установлена
    • GTK 3 всей системы:
    • GTK 4 конкрентного пользователя: или если не установлена
    • GTK 4 всей системы: /etc/gtk-4.0/settings.ini

    Базовая настройка темы

    Для ручного изменения темы GTK, иконок, шрифтов и размеров шрифтов добавьте следующие файлы настроек, например:

    • GTK 2:
    • GTK 3:
    • GTK 4:

    Если тема для GTK 3 не применяется, в дополнение к этому используйте :

    $ 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, добавьте следующее:

    Для GTK3 также выполните:

    $ gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

    В XFCE есть похожая настройка:

    $ xfconf-query -c xsettings -p /Gtk/KeyThemeName -s Emacs

    Файлы в определяют сочетания клавиш Emacs и могут быть изменены. Копирование секций в пользовательский файл позволяет вносить изменения для каждого пользователя отдельно.

    Задержка меню 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) в окнах 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:

    Измените файл настроек :

    StartupMode=cwd

    Старое поведение прокрутки

    Примечание: Этому параметру подчиняются не все приложения GTK.

    До GTK 3.6 щелчок в стороне от ползунка прокрутки сдвигал прокрутку в направлении щелчка примерно на одну страницу. Начиная с GTK 3.6, прокрутка сразу перейдёт к позиции, в которой был выполнен щелчок. Такое поведение можно отменить в некоторых приложениях путем изменения следующей настройки:

    Отключение наложения скроллбара

    Начиная с GTK 3.15, наложение полосы прокрутки по умолчанию включено, что означает, что полосы прокрутки будут показываться только при наведении курсора мыши на приложение GTK. Такое поведение можно отменить, установив следующую переменную окружения: . Смотрите Переменные окружения#Графические приложения.

    С версии GTK 3.24.9 это также можно отключить через настройки:

    GTK 4 больше не поддерживает . Начиная с GTK 4, наложение полос прокрутки является частью инструментария. Переключатель был удалён, чтобы предотвратить поломку приложений, которые не были протестированы с обоими вариантами. Чтобы позволить разработчикам приложений решать, как должны выглядеть их приложения, GTK предоставляет механизм для отказа или добавления настройки для пользователей. Функция gtk_scrolled_window_set_overlay_scrolling() может быть использована для включения/выключения наложения для каждого приложения отдельно. Разработчики приложений могут дополнительно использовать GSettings, чтобы привязать к свойству пользовательскую настройку.

    Удалить наложенные индикаторы скроллбара

    Позиции наложения прокрутки обозначены тонкими пунктирными линиями в окне приложения. Они будут присутствовать, даже если наложение прокрутки отключено с помощью переменной окружения, упомянутой в предыдущем разделе. Для их удаления создайте следующий файл:

    Примеры

    Примеры настройки GTK:

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

    Примером таких переменных являются и , ключи которых должны быть прописаны в GSettings, чтобы применить тему в Wayland. В качестве альтернативы, если нужно настроить только тему, можно установить переменную окружения .

    Бэкенд Xorg

    Если используется Xorg, бэкенд по умолчанию автоматически переключается на x11.

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

    Бэкенд Broadway

    GDK Broadway обеспечивает поддержку для отображения GTK приложений в веб-браузере, используя HTML5 и веб-соккеты.

    При использовании 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

    Пользовательский файл темы (, ) не может быть прочитан другими аккаунтами, выбранная тема не будет применяться к приложениям 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
    • Измените общесистемный файл настроек: (GTK 3) или (GTK 2)
    • Выполните настройку темы от имени root
    # lxappearance
    • Используйте настройки демона (это в большинстве окружений рабочего стола). Вариант desktop-agnostic использует XSettings доступный в AUR .

    Клиентские декорации

    С версии 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, чтобы найти проблемные элементы, как описано здесь .

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

    Чтобы полностью убрать клиентские декорации, можно использовать пропатченную библиотеку, например или .

    Седиль ç/Ç вместо ć/Ć (характерно в основном для Французского языка)

    Смотрите и для решения проблемы с использованием Xcompose (US international layout).

    Подавить предупреждение о accessibility bus

    Если вы не используете функции Gnome Accessibility (специальных возможностей),вы можете получать такие предупреждения :

    WARNING **: Couldn't connect to accessibility bus:

    вы можете подавить предупреждение, запуская программу с NO_AT_BRIDGE=1 или установить в качестве глобальной переменной окружения

    Не соответствует цвет фона в строке заголовка (TitleBar)

    Если вы используете оконный менеджер, который использует тему декорации окон, которая имитирует цвет темы фона GTK, вы можете обнаружить, что цвет заголовка окна больше не совпадает полностью с цветом приложений в некоторых приложениях GTK 3. В качестве обходного пути, создайте следующий файл:

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

    Определите для использования стиля ввода GTK2, вместо xinput2.

    Поддержка эскизов для диалога выбора файла GTK

    Установите и 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

    Диалог выбора файла GTK использует тот же механизм поиска файлов по вводимому имени, что и в GNOME/Files. Это может быть очень неприятно и не очень хорошо сочетается с другими средами рабочего стола.

    Некоторые приложения поддерживают XDG-desktop-portal, что позволяет приложению использовать родной диалог выбора файла. Если это не работает, вы можете восстановить старое поведение поиска, используя пропатченный GTK, например .

    Текст в приложениях GTK 4 отображается размыто или неправильно

    GTK 4 перешёл на сглаживание шрифтов с использованием оттенков серого без хинтинга. Доступна настройка, которая восстанавливает некоторые особенности поведения GTK 3 . Субпиксельное сглаживание недоступно.

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

    This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.