Записи с тэгом ‘GTK’

Темы оформления GTK

На днях решил в очередной раз поменять тему оформления GTK на своём рабочем столе. Для этого отправился на www.gnome-look.org и www.xfce-look.org. Но там не нашёл ничего подходящего и решил попробовать сваять что-нибудь самостоятельно, используя одну из готовых тем. Ну и заодно разобраться более подробно, как вообще работает механизм тем оформления GTK, о чём сейчас вкратце расскажу.

В файле gtkrc (~/.themes/yourtheme/gtk-2.0/gtkrc) определяются стили, которые будут использоваться для отображения того или иного элемента. Описание стиля выглядит так:

style "name-of-style" [= "name-of-parent-style] {
 PROPERTY1 = VAL1
    PROPERTY2 = VAL2
    engine "name-of-engine" {
     ENGINE_PROPERTY1 = VAL3
     ENGINE_PROPERTY2 = VAL4
 }
}

Каждый стиль имеет имя ("name-of-style") и набор свойств (PROPERTY1,PROPERTY2). Свойства включают в себя определения цветов (напр. bg[SELECTED] = "#a3b8cc") и параметры элементов интерфеса (напр. GtkScrollbar::min_slider_length = 30). Также нужно, обратить внимание на свойства xthickness и ythickness, которые, если я правильно понимаю, аналогичны свойству padding в HTML.

Стиль может быть наследовать свойства другого стиля ("name-of-parent-style"). Кроме того, можно задать, какой движок GTK (см. ниже) нужно использован для этого стиля (engine "name-of-engine") и определить параметры этого движка (ENGINE_PROPERTY1, ENGINE_PROPERTY2)

Как правило, в сначала описывается стиль "theme-default", в котором определяются все основные параметры и движок, а оставшиеся стили наследуются от него.

Также необходимо указать к какому элементу какой стиль надо применить:

...
class "GtkWidget"      style "theme-default"
class "GtkButton"      style "theme-button"
class "GtkScale"       style "theme-range"
...

Движок темы (engine) определяет внешнид вид элементов интерфейса (widget), таких как кнопки, скроллбары, тулбары и т.д. Например в Ubuntu по умолчанию используется движок Ubuntulooks, а раньше использовался Clearlooks. Я использую движок под названием Murrine. Для этого движка существует утилита-конфигуратор под названием (угадайте с одного раза) Murrine Configurator. Это программка позволяет менять параметры движка в уже установленных темах (основанных на Murrine).

При создании темы очень полезна будет программка The Widget Factory – она представляет из себя окно, в котором собраны все (или почти все) GTK виджеты и позволяет менять тему офомление только внутри этого окна (то есть не затрагивая остальные программы).

Исчерпывающую информацию по созданию тем GTK можно найти здесь.

Напоследок маленькая плюшка для тех, кто использует Xfce. Добавьте в файл gtkrc следующий текст:

style "xfdesktop-icon-view" {
    XfdesktopIconView::label-alpha = 25

    base[NORMAL] = "#000000"
    base[SELECTED] = "#ffffff"
    base[ACTIVE] = "#ffffff"

    fg[NORMAL] = "#ffffff"
    fg[SELECTED] = "#ffffff"
    fg[ACTIVE] = "#ffffff"
}
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"

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