Итак, в прошлом посте рассказывалось о легковесной панели bmpanel, которая не использует общий файл конфигурации для хранения настроек, но вместо этого, использует папки с темами, где лежат графические файлы и текстовый файл theme. Он и является по сути конфигом и довольно таки легко редактируется. Таким образом можно изменить детали существующей темы, либо создать собственную (все имена необходимых графических файлов перечислены в этом файле).
Почти вся информация по структуре тем есть тут по-английски. Да и по самому файлу многое можно и так понять.
Синтаксис простой: строка имеет вид ключ значение. Возможные ключи заданы для панели жёстко, а значения могут быть одного из 6 типов:
- [string] — текст
- [integer] — целое число
- [image] — имя графического файла (лежащего в той же папке)
- [font] — шаблон поиска для конфигурации шрифта (на сайте даётся вот такая ссылка, и там много интересного по-английски, но можно просто сделать по аналогии: DejaVuSans-14:bold)
- [color] — шестнадцатеричное представление цвета (например, белый будет FFFFFF)
- набор специальных значений (например, [top|bottom] — значение, должно быть одним из перечисленных двух)
Эти строки группируются в 4 секции:
- general — описывающая общие свойства панели и трей
- clock — часы
- taskbar — панель задач
- desktop switcher — переключатель рабочих столов
Секция general
Первые строчки чисто информативные и никак не используются в настройке — это информация об авторстве и версиях. А вот затем идут вполне полезные строки, в частности сначала определяющие общие настройки панели, а затем трея:
use_composite [integer] — 1 или 0 — использовать или нет композитинг
height_override [integer] — увеличивать высоту панели до указанного значения (может использоваться для тем с прозрачными элементами)
placement [bottom|top] — определяет расположение панели внизу или вверху экрана
tile_img [image] — картинка, которой фон панели будет замощён по горизонтали
separator_img [image] — картинка для разделителя на панели (между элементами)
tray_icon_w [integer] — ширина иконок в трее
tray_icon_h [integer] — высота иконок в трее
tray_space_gap [integer] — расстояние между разделителем и крайней иконкой трея
tray_icons_spacing [integer] — расстояние между иконками в трее
elements [string] — специальная строка, определяющая порядок расположения элементов панели: например, sbtc (где s — переключатель рабочих столов, b — таскбар, t — трей, c — часы)
Раздел clock
clock_right_img [image] — картинка для правой стороны фона для часов
clock_tile_img [image] — картинка, которой заполняется фон для часов
clock_left_img [image] — картинка для левой стороны фона для часов
clock_font [font] — шрифт для часов (лучше указывать моноширинный)
clock_text_color [color] — цвет шрифта часов
clock_text_offset_x [integer] — смещение текста по горизонтали относительно «центрального» (положительные числа смещают правее)
clock_text_offset_y [integer] — смещение текста по вертикали (положительные часла смещают ниже)
clock_text_padding [integer] — на сколько пикселов фон часов шире, чем текст
clock_text_align [left|rigth|center] — выравнивание текста по левой стороне, по правой или по центру (относительно фона и по горизонтали)
clock_space_gap [integer] — расстояние между часами и разделителями
clock_format [string] — формат представления времени (например %H:%M:%S, другие обозначения можно взять тут)
Раздел taskbar
tb_right_idle_img [image] — картинка для правой стороны кнопок
tb_right_pressed_img [image] — то же самое для нажатых кнопок
tb_tile_idle_img [image] — картинка для фона кнопок
tb_tile_pressed_img [image] — картинка фона нажатых кнопок
tb_left_idle_img [image] — картинка для левой стороны кнопок
tb_left_pressed_img [image] — то же самое для нажатых
tb_default_icon_img [image] — иконка для программ не имеющих своей
tb_font [font] — шрифт для текста на кнопках в панели
tb_text_color_idle [color] — цвет текста на кнопках
tb_text_color_pressed [color] — цвет текста на нажатых кнопках
tb_text_offset_x [integer] — см. clock_text_offset_x
tb_text_offset_y [integer] — см. clock_text_offset_y
tb_text_align [left|right|center] — см. clock_text_align
tb_separator_img [image] — картинка для разделителя между кнопками на панели
tb_icon_offset_x [integer] — смещение иконки по горизонтали
tb_icon_offset_y [integer] — смещение иконки по вертикали
tb_icon_w [integer] — ширина иконки
tb_icon_h [integer] — высота иконки (это и предыдущее значения можно сделать равными 0, тогда иконок не будет видно)
tb_space_gap [integer] — расстояние между кнопками и разделителями
Раздел desktop switcher
ds_left_corner_idle_img [image] — картинка для левого угла всего переключателя
ds_left_corner_pressed_img [image] — то же, но когда левая крайняя кнопка нажата
ds_right_corner_idle_img [image] — картинка для правого угла всего переключателя
ds_right_corner_pressed_img [image] — то же, но когда правая крайняя кнопка нажата
ds_right_idle_img [image] — картинка для правой стороны кнопки (каждого отдельного стола)
ds_right_pressed_img [image] — то же для нажатой кнопки
ds_tile_idle_img [image] — картинка для фона кнопки
ds_tile_pressed_img [image] — картинка для фона нажатой кнопки
ds_left_idle_img [image] — картинка для левой стороны кнопки
ds_left_pressed_img [image] — картинка для левой стороны нажатой кнопки
ds_font [font] — шрифт
ds_text_color_idle [color] — цвет шрифта
ds_text_color_pressed [color] — цвет шрифта на нажатой кнопке
ds_text_offset_x [integer] — см. clock_text_offset_x
ds_text_offset_y [integer] — см. clock_text_offset_y
ds_text_padding [integer] — насколько пикселов кнопка шире чем текст в ней
ds_text_align [left|right|center] — выравнивание текста по горизонтали
ds_space_gap [integer] — расстояние между краями переключателя и разделителями
ds_separator_img [image] — картинка для разделителя между кнопками
Некоторые ключи подписаны на этой картинке с куском переключателя рабочих столов.
Символ звёздочки тут заменяет idle и pressed, чтобы не подписывать отдельно обычные и нажатые кнопки. По аналогии должны быть понятны и остальные ключи.
Не все строки в конфиге являются обязательными, многие можно опустить совсем (в теме redmini есть самые необходимые и тут эти строчки выделены жирным), причём картинки тоже необязательно должны быть везде разные (например, разделители для всех элементов — это может быть одна картинка).