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:

  • 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

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

      • GTK 2 конкрентного пользователя: ~/.gtkrc-2.0
      • 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 и могут быть изменены. Копирование секций в пользовательский файл ~/.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) в окнах 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, прокрутка сразу перейдёт к позиции, в которой был выполнен щелчок. Такое поведение можно отменить в некоторых приложениях путем изменения следующей настройки:

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

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

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

      GTK 4 больше не поддерживает . Начиная с 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:

      ~/.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.

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

      Пользовательский файл темы (, ~/.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
      • Измените общесистемный файл настроек: (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, чтобы найти проблемные элементы, как описано здесь .

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

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

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

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

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

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

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

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

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

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

      gollark: https://www.youtube.com/channel/UC1-OfM2S82XP0NYY_xSh54w?app=desktop
      gollark: We *might* be. Have you seen the apioform series?
      gollark: Also, website-making is fun*, useful\*\* and exciting\*\*\*!
      gollark: We have* bees here.
      gollark: I just did maintenance on osmarks.net's primary server for MULTIPLE minutes and nobody noticed the downtime. Muahahaha.
      This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.