GTK2widgetstunning - dim13/lor GitHub Wiki
''' Оптимизация размеров gtk2 виджетов '''
1. Отступы
Проблема из-за чего в gtk2 все виджеты выглядят слишком большими, это отступы от текста по горизонтали и вертикали на них. В gtkrc эти отступы задаются параметрами xpadding и ypadding.
Для начала глянем что за размер иконок у нас выставлен в теме:
gtk-icon-sizes = "panel-menu=24,24:panel=24,24:gtk-button=24,24:gtk-large-toolbar=24,24"
Это значит что на кнопках у нас будут рисоваться иконки 24x24 пиксела. Меня устраивает следующая установка
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 пикселя, если для конкретного виджета не задан свой [xy]thickness. Можно попробовать уменьшить отступ до 1 или до 0 пикселя, по вскусу. Но, в некоторых виджетах этот отступ очень даже полезен. Поэтому лучше редактировать отступы прямо в конкретном виджете.
Например, уменьшим размер виджета GtkButton (или просто "кнопка"). Ищем описание нашего GtkButton виджета:
class "GtkButton" style "button"
Стиль нашего виджета в теме завется button. Ищем его описание:
style "button" = "default"
{
}
Если вы нашли там [xy]padding, то смело меняйте их размеры на 0 или 1 пиксел, по вкусу. если их там нет, то просто добавьте 2 новые строчки:
style "button" = "default"
{
xthickness = 0
ythickness = 0
}
Сохраняем Ваши изменения и перезапускаем какую-нибудь gtk программу. Размер кнопок должен быть значительно меньше.
2. Лечим размер табов.
Таким же образом можно поправить размер у табов. Виджет "табы" называется 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 и видим отличные красивые табы.
3. Полезные переменные
Для уменьшения размеров виджетов в секцию default можно добавить следующие переменные:
gtk-button-images = 0
переменная отключает отображение иконок на кнопках
gtk-menu-images = 0
переменная отключает отображение иконок в меню
4. Убираем стрелочки на скроллбарах
Никогда не понимал их пользы - прокрутка обычно ведётся либо колесом мыши, либо перетаскиванием ползунка, либо с клавиатуры.
style "default"
{
GtkScrollbar::has-backward-stepper=0
GtkScrollbar::has-forward-stepper=0
}
5. Уменьшаем ширину скроллбаров
Весьма полезно, если скроллбар служит только для индикации положения на странице.
style "default"
{
GtkRange::trough_border = 0
GtkRange::slider_width = 10
}
6. Убираем границы вокруг меню, панелей инструментов и строки состояния
Если хочется избавиться от границ вокруг данных элементов, то добавьте следующие настройки к стилю:
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 смотрите на 1. Небольшой урок по созданию тем можно посмотреть на 2. Информация по движкам GTK-тем представлена на 3.
Предлагаю развивать дальше эту статью.
--Alexander Butenko 09-Sep-2008 08:50 MSD
''' Настройка диалога выбора файлов '''
По-умолчанию, диалог выбора файлов показывает список последних открытых документов. Чтобы изменить это поведение, необходимо в $XDG_CONFIG_HOME/gtk-2.0/gtkfilechooser.ini поменять значение параметра StartupMode с recent на cwd.