Gtk Gnome Themes Policy

Материал из ALT Linux Wiki
Версия от 15:57, 28 июля 2008; AlexeyRusakov (обсуждение | вклад) (Import from freesource.info)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Упаковка тем GTK+ и GNOME

Этот документ определяет порядок упаковки GTK+ engines, GTK+ themes, Metacity themes и GNOME themes.

Определения

1. GTK+ engine: файл %_libdir/gtk-2.0/*/engines/lib<engine_name>.so
2. GTK+1 theme: каталог %_datadir/themes/<theme_name>/gtk и его содержимое
3. GTK+2 theme: каталог %_datadir/themes/<theme_name>/gtk-2.0 и его содержимое
4. Metacity theme: каталог %_datadir/themes/<theme_name>/metacity-* и его содержимое
5. Icon theme: каталог %_iconsdir/<theme_name> и его содержимое
6. GNOME theme: файл %_datadir/themes/<theme_name>/index.theme

Разбиение сущностей по пакетам

Этот раздел касается упаковки сущностей по бинарным пакетам (.rpm), а не по исходным (.src.rpm). Упаковка сущностей по исходным пакетам может быть произвольной. Помимо очевидного разбиения «пакет на сущность» рекомендуются к использованию следующие варианты:

1. Bundled GTK+2 theme: GTK+ engine вместе с GTK+2 theme
2. Bundled GNOME theme: Metacity theme вместе с GNOME theme

Не рекомендуется, но допускается в силу имеющейся практики:

1. (Bundled) GTK+1/2 theme: GTK+1 theme вместе с GTK+2 theme и, опционально, GTK+ engine
2. (Bundled) GTK+/GNOME theme: GTK+2 theme вместе с GNOME theme и, опционально, Metacity theme

Не допускается:

1. KDE/XFCE/GTK+/GNOME theme, т.е. любая из тем GTK+ или GNOME,  упакованная вместе с темами для других графических сред: такая упаковка делает невозможной простановку зависимостей на компоненты среды и с большой вероятностью приводит к установке ненужных пользователю файлов.
2. Любая сущность вместе с Icon theme: Icon theme может использоваться с любой средой, поддерживающей спецификации freedesktop.org, и не связана ни с какой графической библиотекой.
3. Другие сочетания, пересекающие границу между GTK+ и GNOME (например, GTK+ engine вместе с GNOME theme).

Каталог %_datadir/themes/<theme_name> может независимо использоваться любой из трёх сущностей: GTK+1 theme, GTK+2 theme и Metacity theme, поэтому должен упаковываться вместе с каждой из них. Возможны исключения, но должно выдерживаться общее правило: при любом сочетании (с учётом зависимостей) установленных пакетов каталог должен принадлежать хотя бы одному пакету.

Именование пакетов

Общее правило: рекомендуется называть пакеты полностью в нижнем регистре, разделяя слова дефисами. Префиксы в единственном числе используются при упаковке одной сущности одного типа (напр., GTK+ theme), во множественном — при упаковке нескольких сущностей одного типа. Примеры: gnome-theme-long-name, libgtk-engines-default.

Пакеты различных типов должны иметь следующие префиксы в названиях:

* GTK+ engine — libgtk-engine-;
* GTK+1 theme — gtk1-theme-;
* GTK+2 theme, Bundled GTK+2 theme — gtk2-theme-;
* GTK+1/2 theme — gtk-theme-;
* Metacity theme — metacity-theme-;
* Icon theme — icon-theme- (не gnome-icon-theme, поскольку те же темы можно использовать не только в GNOME, см. выше);
* GNOME theme, Bundled GNOME theme, (Bundled GTK+/GNOME theme — gnome-theme-;

Зависимости пакетов

Общие правила: 1. Рекомендуется указанные ниже Requires-зависимости всегда указывать. В некоторых случаях указанные зависимости могут этим же пакетом и предоставляться, тогда разрешается опускать Requires-зависимость. 2. Указанные зависимости всегда должны корректно разрешаться apt'ом. Из этого следует, в частности, что если пакет, содержащий указанную сущность, не предоставляет требующиеся ей зависимости, он должен сам требовать их.

В соответствии с типом попадающих в пакет сущностей, должны быть проставлены следующие зависимости:

* GTK+ engine: Requires: libgtk+2 (проставляется автоматически как зависимость на соответствующую библиотеку в пакете; явным образом проставлять ничего не нужно);
* GTK+1 theme: Requires: gtk+;
* GTK+2 theme: Requires: libgtk-engine-<name> (возможно, не один; требуемые engines берутся из файла gtk-2.0/gtkrc поиском слова engine);
* Metacity theme: Requires: metacity (не metacity-gnome и не libmetacity), Provides: metacity-theme = %version-%release;
* Icon theme не имеет специальных зависимостей;
* GNOME theme: Requires: libgnome (не gnome-control-center);

При упаковке нескольких сущностей в один пакет зависимости объединяются.