Створення тем для metacity

з назвою, яке буде ім'ям вашої теми. Незважаючи та те, що Metacity знайде тему в обох вищевказаних каталогах, доцільним буде залишити тему в домашньому каталозі, поки ви будете писати і налагоджувати її. Наступний крок по створенню теми полягає в редагуванні файлу з ім'ям 'metacity-theme-1.xml', який необхідно створити в каталозі теми. Це файл, який містить XML опис теми, згідно з цим DTD description. Для створення даного файлу краще скористатися існуючої темою, скопіювавши вказаний файл і потім модифікувавши його, а не створювати нову тему з нуля. Перші кілька рядків будуть виглядати так:

Основи створення теми

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

Підтримувані типи вікон

Існує 6 спеціальних типів вікон, які розуміє Metacity:

При створенні теми для Metacity, рекомендується використовувати додаток metacity-theme-viewer. яке спеціально розроблене для тестування тем. Щоб користуватися цією програмою, просто вкажіть в якості аргументу ту тему, яку ви хочете завантажити. Ця тема буде завантажена і проаналізована і якщо в ній будуть помилки, то ви побачите повідомлення в командному рядку. Ви повинні виправити всі помилки перед тим як тема буде успішно завантажена.

Цей додаток фактично корисно тільки при дизайні стилю декоративного оформлення вікна, так як вам не будуть доступні дії, які ви призначили кнопок, а також вікна меню.

Щоб переключитися на вашу нову тему, використовуйте або gconftool-2
або інтерфейс користувача в Параметри -> Тема -> Theme details, виберіть закладку 'Рамка вікна'. При використанні gconftool2-. вам
необхідно використовувати наступну команду -

gconftool-2 --type = string --set / apps / metacity / general / theme [theme_name]

Створення тем для metacity

Metacity theme viewer application - for testing themes

Глибоко всередині

геометрія рамки

Перше, що вам потрібно зробити - це створити 'frame geometry' (геометрію рамки). На ім'я геометрії рамки пізніше буде посилатися 'frame style' (стиль рамки).

Наступна діаграма показує різні розміри, які ви можете змінювати в геометрії рамки:

Створення тем для metacity

Frame geometry specifications

Геометрія рамки має кілька необов'язкових атрибутів, які ви також можете визначити:

Визначає чи буде висота тексту заголовка вікна включена в калькулятор висоти. Якщо не задано, то значення за замовчуванням true.

Використовувати Pango markup - xx-small, x-small, small, medium, large, x-large і xx-large. Якщо не задано, то буде використовуватися шрифт робочого столу.

Визначає чи буде округленими верхній лівий кут вікна. Якщо не задано, то значення за замовчуванням false.

Визначає чи буде округленими верхній правий кут вікна. Якщо не задано, то значення за замовчуванням false.

Визначає чи буде округленими нижній лівий кут вікна. Якщо не задано, то значення за замовчуванням false.

Визначає чи буде округленими нижній правий кут вікна. Якщо не задано, то значення за замовчуванням false.












Після того як ви задали геометрію рамки, можна використовувати спадкування. Ось просте перекриття будь-яких значень, з тих, що були успадковані від батька.







Замість завдання розмірів кнопок, ви можете задати тільки коефіцієнт перспективи.


операції малювання

'Drawing operations' (операції малювання) є основою при створенні теми Metacity. Для успішного малювання частини рамки, вам знадобитися задати операцію малювання для цієї 'frame piece' (частини рамки).

Операції малювання зазвичай описуються спочатку, але можуть також бути вбудовані безпосередньо в потрібному місці [см. приклад нижче]. Для операцій малювання дозволяється наступний список операторів:

Малює лінію заданим кольором color від координат (x1, y1) до (x2, y2). Кольори можна вказувати іменами, типу "blue", шестрандцатерічним номером типу "# FF0099" або кольором з теми GTK, заданим у вигляді "gtk: base [NORMAL]" [Див. приклади нижче]. Є такі додаткові атрибути як width. dash_on_length і dash_off_length. які за умовчанням встановлюються в "0".

Малює чотирикутник від (x, y) і з заданими шириною width і висотою height. Є додаткові атрибут filled. який за замовчуванням встановлений в "false".

Малює дугу починаючи від (x, y) і з заднього шириною width. висотою height. початковим кутом start_angle і другим кутом extent_angle. Є додаткові атрибут filled. який за замовчуванням встановлений в "false".

Виконати черепицею список інших операціё малювання з заданим ім'ям name і значеннями tile_width і tile_height. Є додаткові аргументи (x, y), width. height. tile_xoffset і tile_yoffset with. які за умовчанням мають значення FIXME.

стиль рамки

Під час створення 'frame style' (стилю рамки), ви пов'язуєте різні 'frame pieces' (частини рамки) і 'window buttons' (кнопки вікна) зі спеціальною 'frame geometry' (геометрією рамки). Зазвичай потрібно створити стиль для таких станів вікна як normal. maximized. shaded. maximized_and_shaded і з огляду на залежність від такої речі як: чи буде вікно мати фокус чи ні.

Спершу створюємо шаблон, який буде містити всю інформацію, яка необхідна для малювання даного стилю рамки.

При завданні стилю рамки успадкування також дозволено. Можна задати інший стиль, який перекриває батьківський.

частини рамки

Щоб отрисовать частини рамки, для кожної частини рамки вам потрібно надати операцію малювання. Якщо ви опускаєте будь-яку частину, то для цієї частини рамки нічого малюватися не буде.


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





Наступні діаграми показують різні шматки, які можуть мати стиль в задається рамці:

Створення тем для metacity

кнопки вікна

Як зазначалося раніше, для задається рамки вам необхідно встановити мінімальний набір кнопок вона. Методи відтворення повинні бути рпедоставлени для таких кнопок як close, maximize, minimize і menu, при цьому для кожного з двох станів - normal і pressed. Якщо prelight не задано, то для цього стану буде використовуватися normal.