Оптимизация размеров виджетов GTK+ 2
Отступы
Проблема, из-за которой в gtk2 все виджеты выглядят слишком большими, это отступы от текста по горизонтали и вертикали на них. В gtkrc эти отступы задаются параметрами xpadding и ypadding.
Для начала глянем, что за размер иконок у нас выставлен в теме:
gtk-icon-sizes = "panel-menu=24,24:panel=24,24:gtk-button=24,24:gtk-large-toolbar=24,24"
Это значит что на кнопках у нас будут рисоваться иконки 24×24 пикселя. Меня устраивает следующая установка
gtk-icon-sizes = "gtk-large-toolbar=16,16:gtk-small-toolbar=16,16:gtk-button=16,16"
Далее ищем стандартную секцию для настроек всех виджетов, ибо в ней всегда есть много интересного:
class "GtkWidget" style "default"
Окей, значит стиль называется default. Ищем его в теме:
style "default" { xthickness = 2 ythickness = 2 fg[NORMAL] = "#353535" }
Вот наши отступы. Во всех виджетах, отступы от текста будут 2 пикселя, если для конкретного виджета не задан свой xthickness (ythickbess). Можно попробовать уменьшить отступ до 1 или до 0 пикселя, по вскусу. Но, в некоторых виджетах этот отступ очень даже полезен. Поэтому лучше редактировать отступы прямо в конкретном виджете.
Например, уменьшим размер виджета GtkButton (или просто «кнопка»). Ищем описание нашего GtkButton виджета:
class "GtkButton" style "button"
Стиль нашего виджета в теме называется «button». Ищем его описание:
style "button" = "default" { }
Если вы нашли там xpadding (ypadding), то смело меняйте их размеры на 0 или 1 пиксель, по вкусу. Если их там нет, то просто добавьте 2 новые строчки:
style "button" = "default" { xthickness = 0 ythickness = 0 }
Сохраняем Ваши изменения и перезапускаем какую-нибудь gtk программу. Размер кнопок должен быть значительно меньше.
Лечим размер табов
Таким же образом можно поправить размер у табов. Виджет «табы» называется GtkNotebook.
Итак, рецепт. В default секцию добавляем:
style "default" { GtkNotebook::tab-border = 0 GtkNotebook::tab-hborder = 0 GtkNotebook::tab-vborder = 0 GtkNotebook::show-border = 0 GtkNotebook::gtk-button-images = 0 GtkNotebook::gtk-menu-images = 0 GtkNotebook::arrow-spacing = 0 GtkNotebook::tab-curvature = 0 GtkNotebook::tab-overlap = 0 GtkNotebook::focus-line-width = 0 }
Сохраняем, перезапускаем gnome-terminal и видим красивые табы.
Полезные переменные
Для уменьшения размеров виджетов в секцию default можно добавить следующие переменные:
gtk-button-images = 0
переменная отключает отображение иконок на кнопках
gtk-menu-images = 0
переменная отключает отображение иконок в меню
Убираем стрелочки на скроллбарах
Никогда не понимал их пользы — прокрутка обычно ведётся либо колесом мыши, либо перетаскиванием ползунка, либо с клавиатуры.
style "default" { GtkScrollbar::has-backward-stepper=0 GtkScrollbar::has-forward-stepper=0 }
Уменьшаем ширину скроллбаров
Весьма полезно, если скроллбар служит только для индикации положения на странице.
style "default" { GtkRange::trough_border = 0 GtkRange::slider_width = 10 }
Убираем границы вокруг меню, панелей инструментов и строки состояния
Если хочется избавиться от границ вокруг данных элементов, то добавьте следующие настройки к стилю:
style "default" { GtkStatusbar::shadow_type = GTK_SHADOW_NONE GtkToolbar::shadow-type = GTK_SHADOW_NONE GtkMenuBar::shadow-type = GTK_SHADOW_NONE }
Возможные значения параметра shadow-type:
GTK_SHADOW_NONE No outline. GTK_SHADOW_IN The outline is bevelled inwards. GTK_SHADOW_OUT The outline is bevelled outwards like a button. GTK_SHADOW_ETCHED_IN The outline has a sunken 3d appearance. GTK_SHADOW_ETCHED_OUT The outline has a raised 3d appearance.
Описание синтаксиса gtkrc смотрите на http://library.gnome.org/devel/gtk/unstable/gtk-Resource-Files.html. Небольшой урок по созданию тем можно посмотреть на http://live.gnome.org/GnomeArt/Tutorials/GtkThemes. Информация по движкам GTK-тем представлена на http://live.gnome.org/GnomeArt/Tutorials/GtkEngines.
Данная статья или раздел ещё не завершены Кто-то посчитал, что статья или раздел ниже не содержит какой-то важной информации или имеет проблемы с вёрсткой/текстом. Указана причина: «Предлагаю развивать дальше эту статью» — Alexander Butenko 09-Sep-2008 08:50 MSD{{#ifeq: {{{1}}} | nopoint | | . }} |
{{#if: Доработка | }}
Настройка диалога выбора файлов
По-умолчанию, диалог выбора файлов показывает список последних открытых документов. Чтобы изменить это поведение, необходимо в $XDG_CONFIG_HOME/gtk-2.0/gtkfilechooser.ini поменять значение параметра StartupMode с recent на cwd.