Branding: различия между версиями

Материал из ALT Linux Wiki
м (→‎Состав: исправил очепятку, добавил ссылок, обобщил)
(не показано 14 промежуточных версий 3 участников)
Строка 7: Строка 7:


Минимальная адаптация состоит в замене нескольких констант в spec-файле: например, для Lite:  
Минимальная адаптация состоит в замене нескольких констант в spec-файле: например, для Lite:  
<pre>%define theme lite
<source lang="Spec">%define theme lite
%define Theme Lite
%define Theme Lite
%define codename none
%define codename none
%define brand altlinux
%define brand altlinux
%define Brand ALT Linux
%define Brand ALT Linux
%define status alpha</pre>


При желании можно поменять картинки. Но по крайней мере в текстах почти везде в качестве имени дистрибутива, версии и производителя будут введённые вами значения.
%define variants ...
 
%define status альфа
%define status_en alpha
%define distro_name ALT Linux Lite (alpha)
%define distro_name_ru Альт Линукс Лёгкий (альфа)
</source>
 
При желании можно поменять картинки (потребуются 800x600 и 1920x1080). Но по крайней мере в текстах почти везде в качестве имени дистрибутива, версии и производителя будут введённые вами значения.
 
{{Attention|Нелатинские буквы должны (например, в '''%define status''') должны идти сильно ниже заголовка по требованию <tt>rpmbuild</tt>. Поэтому в начале следует '''%define variants''' с большим объёмом текста}}
 
{{Note|Непустой статус ('''%define status''') отрисовывается на обоях. Чтобы сделать его пустым, укажите <source lang="Spec">%define status %nil
%define status_en %nil</source>}}


Некоторые ресурсы могут попадать в несколько подпакетов, некоторые предназначены для целевой укладки.
Некоторые ресурсы могут попадать в несколько подпакетов, некоторые предназначены для целевой укладки.
=== Политика конфликтов ===
Чтобы не было конфликтов по именам файлов, необходимо объявить возможные варианты брендингов для '''каждого''' подпакета:
<source lang="Spec">%define variants altlinux-backup-server altlinux-desktop altlinux-gnome-desktop altlinux-kdesktop \
altlinux-lite altlinux-lxdesktop altlinux-office-desktop altlinux-office-server altlinux-school-server altlinux-sisyphus \
altlinux-spt altlinux-tablet altlinux-workbench informika-schoolmaster ivk-chainmail lxde-desktop lxde-school-lite \
Platform6-server-light school-junior school-lite school-master school-server school-teacher school-terminal simply-linux \
sisyphus-server-light</source>
Далее в подпакетах (например, для '''bootloader''')
прописывается:
<source lang="Spec">Conflicts: %(for n in %variants ; do [ "$n" = %brand-%theme ] || echo -n "branding-$n-bootloader ";done )</source>


== Состав ==
== Состав ==
Обычно состоит из пакетов:  
Обычно состоит из пакетов:  
<pre>branding-<название дистрибутива>-alterator стили оформление программы установки и Центра управления системой (Alterator), включая значки этапов
; branding-<название дистрибутива>-alterator
branding-<название дистрибутива>-bootloader оформление меню загрузки с диска и загрузчика ОС (lilo или grub)
: стили оформление программы установки и Центра управления системой ([[alterator]]), включая значки этапов
branding-<название дистрибутива>-bootsplash оформление экрана прогресса загрузки (Plumouth)
; branding-<название дистрибутива>-bootloader
branding-<название дистрибутива>-graphics обои, аватары и логотипы
: оформление меню загрузки с диска и загрузчика ОС ([[lilo]] или [[grub]])
branding-<название дистрибутива>-indexhtml титульная страница дистрибутва со ссылками
; branding-<название дистрибутива>-bootsplash
branding-<название дистрибутива>-menu пункты меню (если используется настраиваемое меню)
: оформление экрана прогресса загрузки ([[plymouth]])
branding-<название дистрибутива>-notes лицензионный договор и примечания к выпуску (показываются в конце установки)
; branding-<название дистрибутива>-graphics
branding-<название дистрибутива>-release название дистрибутва (обычно с кодовым именем) в /etc/redhat-release
: обои, аватары и логотипы
branding-<название дистрибутива>-slideshow изображения для слайдшоу при установке
; branding-<название дистрибутива>-indexhtml
branding-<название дистрибутива>-xfce-settings параметры среды по умолчанию</pre>
: титульная страница дистрибутва со ссылками
; branding-<название дистрибутива>-menu
: пункты меню (если используется настраиваемое меню)
; branding-<название дистрибутива>-notes
: лицензионный договор и примечания к выпуску (показываются в конце установки)
; branding-<название дистрибутива>-release
: название дистрибутива (обычно с кодовым именем) в {{path|/etc/redhat-release}}
; branding-<название дистрибутива>-slideshow
: изображения для слайдшоу при установке
; branding-<название дистрибутива>-*-settings
: параметры среды по умолчанию


Типичная насыщенность изображений деталями: bootloader <= installer <= wallpaper (в любом случае перебарщивать ни к чему).


=== [[Branding/bootloader|branding-*-bootloader]] ===
=== [[Branding/bootloader|branding-*-bootloader]] ===
Строка 39: Строка 75:
: значение <tt>theme</tt> в секции <tt>[base]</tt> должно соответствовать тому, куда в подпакете {{pkg|branding-*-bootsplash}} укладываются файлы (<tt>/boot/splash/%theme</tt>)
: значение <tt>theme</tt> в секции <tt>[base]</tt> должно соответствовать тому, куда в подпакете {{pkg|branding-*-bootsplash}} укладываются файлы (<tt>/boot/splash/%theme</tt>)


NB: {{pkg|gfxboot}} (см. тж. [http://en.opensuse.org/SDB:Gfxboot здесь]) весьма привередлив по части вариаций сжатия и прочего; см. [http://ftp.altlinux.org/pub/people/zerg/misc/design-bootsplashloader-convert.tar.gz скрипты zerg@] во избежание чёрной картинки под загрузочной менюшкой вместо {{path|images/boot.jpg}} (который становится {{path|back.jpg}} перед попаданием в cpio-архив {{path|bootlogo}}).
{{Attention|{{pkg|gfxboot}} (см. тж. [http://en.opensuse.org/SDB:Gfxboot здесь]) весьма привередлив по части вариаций сжатия и прочего; см. [http://ftp.altlinux.org/pub/people/zerg/misc/design-bootsplashloader-convert.tar.gz скрипты zerg@] во избежание чёрной картинки под загрузочным меню вместо {{path|images/boot.jpg}} (который становится {{path|back.jpg}} перед попаданием в cpio-архив {{path|bootlogo}}).
 
Известно, что {{pkg|grub}} не переваривает PNG с индексированным цветом.}}
 
Для того, чтобы для grub установить цвет полосы выделения (он может быть задан в теме grub только изображением), выполните в branding ([http://git.altlinux.org/people/cas/packages/branding.git?p=branding.git;a=commitdiff;h=d6eeed73f3b849824c153c09f3fafa6898d5c036 пример]), допустим, для цвета #0c2c6c:
<source lang="Bash">convert -size 16x16 -define png:color-type=2 -depth 8 xc:'#0c2c6c' components/grub2/selected_blob_c.png</source>


Известно, что {{pkg|grub}} не переваривает PNG с indexed color.
Расположение элементов и их цвета задаются в {{path|components/bootloader/gfxboot.cfg.in}}. Наиболее важные:
{|class="standard"
!Название параметра
!Описание
|-
|mainmenu.bar.color||Цвет фона полосы выделения
|-
|mainmenu.normal.fg||Цвет текста неактивного пункта меню
|-
|mainmenu.selected.fg||Цвет текста выделенного пункта меню
|-
|bootopt.label.fg||Цвет надписи параметров ядра
|-
|bootopt.text.fg||Цвет текста в поле параметров ядра
|-
|progress.bar.color||Цвет полосы прогресса загрузки ядра
|-
|panel.title.fg||Цвет надписи функциональной клавиши внизу
|-
|panel.normal.fg||Цвет значения функциональной клавиши внизу
|-
|panel.f-key.fg||Цвет функциональной клавиши внизу
|}


=== branding-*-bootsplash ===
=== branding-*-bootsplash ===
; bootsplash/images/silent-*.jpg (если присутствуют, а не генерируются)
; bootsplash/images/silent-*.jpg (если присутствуют, а не генерируются)
: картинки для отображения в процессе загрузки установленной системы (для разных разрешений фреймбуфера; начинать стоит либо с дефолтного 800x600, либо с наиболее высокого из поддерживаемых — уменьшать проще)<br/>'''Внимание:''' {{pkg|bootsplash}} «переваривает» не всякие jpeg, при проблемах попробуйте сжать другим инструментом<br/>'''Внимание:''' {{pkg|plymouth}} принимает png, но будьте осторожны с размером — слишком большой {{pkg|full.cz}}<ref>30M уже слишком много, 24M работает; с 26M пока неясно</ref> может привести к проблемам загрузки на [[UEFI]], при проблемах включайте индексированные цвета и/или понижайте разрешение.
: картинки для отображения в процессе загрузки установленной системы (для разных разрешений фреймбуфера; начинать стоит либо с дефолтного 800x600, либо с наиболее высокого из поддерживаемых — уменьшать проще)<br/>'''Внимание:''' {{pkg|bootsplash}} «переваривает» не всякие jpeg, при проблемах попробуйте сжать другим инструментом<br/>'''Внимание:''' {{pkg|plymouth}} не поддерживает jpeg и принимает png, но будьте осторожны с размером — слишком большой {{pkg|full.cz}}<ref>30M уже слишком много, 24M работает; с 26M пока неясно</ref> может привести к проблемам загрузки на [[UEFI]], при проблемах включайте indexed color и/или понижайте разрешение (например, с 1920x1080 до 1600x900).


Подпакет должен содержать <tt>Provides: plymouth(system-theme)</tt> во избежание излишнего вытягивания, скажем, {{pkg|plymouth-theme-fade-in}}.
Подпакет должен содержать <tt>Provides: plymouth(system-theme)</tt> во избежание излишнего вытягивания, скажем, {{pkg|plymouth-theme-fade-in}}.
Строка 76: Строка 139:


''Примечание:'' Если не хотите показа слайд-шоу, удалите все графические файлы и создайте текстовый файл любого содержимого (хоть пустой).
''Примечание:'' Если не хотите показа слайд-шоу, удалите все графические файлы и создайте текстовый файл любого содержимого (хоть пустой).
== Сборка ==
Во время сборки запускается скрипт configure, которому передаются параметры для подстановки:
<source lang="Spec">%build
autoconf
THEME=%theme NAME='%name' BRAND_FNAME='%brand' BRAND='%brand' STATUS_EN=%status_en STATUS=%status \
VERSION=%version PRODUCT_NAME_RU='%distro_name_ru' PRODUCT_NAME='%distro_name' CODENAME='%codename' X86='%x86' \
./configure
make</source>
{{Note|Значения, которые могут содержать пробелы должны обязательно указываться в одинарных кавычках}}
=== Подстановка значений ===
Перечень подставляемых значений и файлы, где осуществляется подстановка описываются в файле {{path|configure.ac}}. По традиции файлы, в которых осуществляется подстановка, имеют суффикс {{path|.in}}, который во время подстановки удаляется.
Сначала описываются все переменные подстановки, например,
<source lang="text">AC_SUBST(NAME)</source>
Затем все файлы, где будут сделаны подстановки всех заявленных переменных (без суффикса {{path|.in}}), но будут обработаны именно файлы Makefile.in и так далее:
<source lang="text">AC_CONFIG_FILES([
Makefile
components/bootloader/config
components/bootsplash/theme.plymouth
...
])</source>
В указанных файлах с расширением {{path|.in}} подстановочные значения указываются в виде '''@ИМЯ_ПЕРЕМЕННОЙ@'''. Например, так:
<source lang="Make">NAME=@NAME@</source>


== Настройки ==
== Настройки ==
Строка 90: Строка 184:


== Сообщения об ошибках ==
== Сообщения об ошибках ==
[https://bugzilla.altlinux.org/buglist.cgi?query_format=advanced&classification=Development&product=Sisyphus&component=^%28branding|design%29-.*%24&component_type=regexp&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailcc2=1&chfieldto=Now&cmdtype=doit&order=Reuse%20same%20sort%20as%20last%20time Существующие]; [https://bugzilla.altlinux.org/show_bug.cgi?id=22482 метабаг]
[https://bugzilla.altlinux.org/buglist.cgi?query_format=advanced&classification=Development&product=Sisyphus&component=^%28branding|design%29-.*%24&component_type=regexp&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailcc2=1&chfieldto=Now&cmdtype=doit&order=Reuse%20same%20sort%20as%20last%20time Существующие]; [[altbug:22482|метабаг]]
 
== Советы и секреты ==
Обратите внимание на то, что в [http://git.altlinux.org/people/cas/packages/?p=branding.git наработках cas@] уделено заметное внимание вычистке дублирующихся изображений; собственный вариант брендинга есть смысл начинать именно от его веток <tt>branding-school-*</tt>.
 
=== Обои по умолчанию ===
Обои по умолчанию должны быть сохранены в файле {{path|/usr/share/design/current/backgrounds/default.png}}. Этот путь из темы формируется альтернативой:
<source lang="Spec">install -d %buildroot//etc/alternatives/packages.d
cat >%buildroot/etc/alternatives/packages.d/%name-graphics <<__EOF__
%_datadir/design-current        %_datadir/design/%theme $GRAPHICS_ALTPRIO
%_datadir/design/current        %_datadir/design/%theme $GRAPHICS_ALTPRIO
__EOF__
...
%files graphics
%config /etc/alternatives/packages.d/%name-graphics</source>
 
=== Значки на рабочий стол ===
 
;Для KDE4
:Поместите файл .desktop в {{path|%_datadir/kde4/apps/kio_desktop/DesktopLinks/}}
 
=== Пустой экран в KDE4 ===
 
Не упаковывайте файл {{path|/etc/skel/.kde4/share/config/plasmarc}} — это может привести к пустому рабочему столу Plasma. Виджеты и прочие элементы по умолчанию настраиваются через каталоги {{path|/usr/share/kde4/apps/plasma-desktop/init}} и {{path|/usr/share/kde4/apps/plasma/layout-templates}}.


== Примечания ==
== Примечания ==

Версия от 12:35, 11 апреля 2016


Пакеты branding

Пакеты branding-бренд-дистрибутив содержат в себе по возможности всю дистрибутивоспецифичную информацию (графику, настройки и тексты). Исходный git-репозиторий находится в git.alt boyarsh@ (обратите внимание на набор бранчей).

Минимальная адаптация состоит в замене нескольких констант в spec-файле: например, для Lite:

%define theme lite
%define Theme Lite
%define codename none
%define brand altlinux
%define Brand ALT Linux

%define variants ...

%define status альфа
%define status_en alpha
%define distro_name ALT Linux Lite (alpha)
%define distro_name_ru Альт Линукс Лёгкий (альфа)

При желании можно поменять картинки (потребуются 800x600 и 1920x1080). Но по крайней мере в текстах почти везде в качестве имени дистрибутива, версии и производителя будут введённые вами значения.

Внимание! Нелатинские буквы должны (например, в %define status) должны идти сильно ниже заголовка по требованию rpmbuild. Поэтому в начале следует %define variants с большим объёмом текста


Примечание: Непустой статус (%define status) отрисовывается на обоях. Чтобы сделать его пустым, укажите
%define status %nil
%define status_en %nil


Некоторые ресурсы могут попадать в несколько подпакетов, некоторые предназначены для целевой укладки.

Политика конфликтов

Чтобы не было конфликтов по именам файлов, необходимо объявить возможные варианты брендингов для каждого подпакета:

%define variants altlinux-backup-server altlinux-desktop altlinux-gnome-desktop altlinux-kdesktop \
altlinux-lite altlinux-lxdesktop altlinux-office-desktop altlinux-office-server altlinux-school-server altlinux-sisyphus \
altlinux-spt altlinux-tablet altlinux-workbench informika-schoolmaster ivk-chainmail lxde-desktop lxde-school-lite \
Platform6-server-light school-junior school-lite school-master school-server school-teacher school-terminal simply-linux \
sisyphus-server-light

Далее в подпакетах (например, для bootloader) прописывается:

Conflicts: %(for n in %variants ; do [ "$n" = %brand-%theme ] || echo -n "branding-$n-bootloader ";done )

Состав

Обычно состоит из пакетов:

branding-<название дистрибутива>-alterator
стили оформление программы установки и Центра управления системой (alterator), включая значки этапов
branding-<название дистрибутива>-bootloader
оформление меню загрузки с диска и загрузчика ОС (lilo или grub)
branding-<название дистрибутива>-bootsplash
оформление экрана прогресса загрузки (plymouth)
branding-<название дистрибутива>-graphics
обои, аватары и логотипы
branding-<название дистрибутива>-indexhtml
титульная страница дистрибутва со ссылками
branding-<название дистрибутива>-menu
пункты меню (если используется настраиваемое меню)
branding-<название дистрибутива>-notes
лицензионный договор и примечания к выпуску (показываются в конце установки)
branding-<название дистрибутива>-release
название дистрибутива (обычно с кодовым именем) в /etc/redhat-release
branding-<название дистрибутива>-slideshow
изображения для слайдшоу при установке
branding-<название дистрибутива>-*-settings
параметры среды по умолчанию

Типичная насыщенность изображений деталями: bootloader <= installer <= wallpaper (в любом случае перебарщивать ни к чему).

branding-*-bootloader

images/boot.png
первая картинка, которую увидит пользователь при загрузке образа или установленной системы. Автоматически ужимается до размера 800x600.
components/bootloader/gfxboot.cfg.in или bootloader/gfxboot.cfg.in
значение theme в секции [base] должно соответствовать тому, куда в подпакете branding-*-bootsplash укладываются файлы (/boot/splash/%theme)
Внимание! gfxboot (см. тж. здесь) весьма привередлив по части вариаций сжатия и прочего; см. скрипты zerg@ во избежание чёрной картинки под загрузочным меню вместо images/boot.jpg (который становится back.jpg перед попаданием в cpio-архив bootlogo). Известно, что grub не переваривает PNG с индексированным цветом.


Для того, чтобы для grub установить цвет полосы выделения (он может быть задан в теме grub только изображением), выполните в branding (пример), допустим, для цвета #0c2c6c:

convert -size 16x16 -define png:color-type=2 -depth 8 xc:'#0c2c6c' components/grub2/selected_blob_c.png

Расположение элементов и их цвета задаются в components/bootloader/gfxboot.cfg.in. Наиболее важные:

Название параметра Описание
mainmenu.bar.color Цвет фона полосы выделения
mainmenu.normal.fg Цвет текста неактивного пункта меню
mainmenu.selected.fg Цвет текста выделенного пункта меню
bootopt.label.fg Цвет надписи параметров ядра
bootopt.text.fg Цвет текста в поле параметров ядра
progress.bar.color Цвет полосы прогресса загрузки ядра
panel.title.fg Цвет надписи функциональной клавиши внизу
panel.normal.fg Цвет значения функциональной клавиши внизу
panel.f-key.fg Цвет функциональной клавиши внизу

branding-*-bootsplash

bootsplash/images/silent-*.jpg (если присутствуют, а не генерируются)
картинки для отображения в процессе загрузки установленной системы (для разных разрешений фреймбуфера; начинать стоит либо с дефолтного 800x600, либо с наиболее высокого из поддерживаемых — уменьшать проще)
Внимание: bootsplash «переваривает» не всякие jpeg, при проблемах попробуйте сжать другим инструментом
Внимание: plymouth не поддерживает jpeg и принимает png, но будьте осторожны с размером — слишком большой full.cz[1] может привести к проблемам загрузки на UEFI, при проблемах включайте indexed color и/или понижайте разрешение (например, с 1920x1080 до 1600x900).

Подпакет должен содержать Provides: plymouth(system-theme) во избежание излишнего вытягивания, скажем, plymouth-theme-fade-in.

branding-*-graphics

альтернатива /usr/share/design/current; для совместимости могут быть альтернативы

  • /usr/share/artworks
  • /usr/share/design-current

фоновый рисунок: /usr/share/design/current/backgrounds/default.png

NB: для kde4 разрешение background.png и название каталога под graphics/kde4/ksplash-themes/Default/ должны соответствовать друг другу!

branding-*-indexhtml

components/indexhtml/*
содержание и оформление страницы по умолчанию для браузеров

branding-*-release

/etc/altlinux-release (%_sysconfdir/altlinux-release), генерируемый в branding.spec.

branding-*-notes

notes/*.html*
лицензионное соглашение, примечания к дистрибутиву, домашняя страница по умолчанию

branding-*-slideshow

slideshow/*.{jpg,png,gif}
картинки 650x300 для слайдов в процессе установки

Примечание: Если не хотите показа слайд-шоу, удалите все графические файлы и создайте текстовый файл любого содержимого (хоть пустой).

Сборка

Во время сборки запускается скрипт configure, которому передаются параметры для подстановки:

%build
autoconf
THEME=%theme NAME='%name' BRAND_FNAME='%brand' BRAND='%brand' STATUS_EN=%status_en STATUS=%status \
VERSION=%version PRODUCT_NAME_RU='%distro_name_ru' PRODUCT_NAME='%distro_name' CODENAME='%codename' X86='%x86' \
./configure 
make
Примечание: Значения, которые могут содержать пробелы должны обязательно указываться в одинарных кавычках


Подстановка значений

Перечень подставляемых значений и файлы, где осуществляется подстановка описываются в файле configure.ac. По традиции файлы, в которых осуществляется подстановка, имеют суффикс .in, который во время подстановки удаляется.

Сначала описываются все переменные подстановки, например,

AC_SUBST(NAME)

Затем все файлы, где будут сделаны подстановки всех заявленных переменных (без суффикса .in), но будут обработаны именно файлы Makefile.in и так далее:

AC_CONFIG_FILES([
		 Makefile
		 components/bootloader/config
		 components/bootsplash/theme.plymouth
		 ...
])

В указанных файлах с расширением .in подстановочные значения указываются в виде @ИМЯ_ПЕРЕМЕННОЙ@. Например, так:

NAME=@NAME@

Настройки

Пакеты из серии *-settings-* содержат в себе настройки по-умолчанию, которые делают пользовательские окружения более удобными в работе и/или затачивают их под какую-нибудь задачу. В идеале настройки не должны производиться через /etc/skel-каталог, т.к. тогда они будут влиять только на новых пользователей и их нельзя будет централизованно сменить.

Более подробно настройки описываются далее:

Изменение всех branding-*

Изменения, которые хочется видеть во всех branding-*, надо делать в бранче master и потом мержить в другие бранчи. Писать по поводу принятия полезных вещей в апстрим стоит boyarsh@; при существенных изменениях стоит предварительно обсудить в devel-distro@ (подписывает mike@).

Отключение в инсталяторе

С версии installer-1.4.11-alt1 введена опция загрузки nodesign; см. тж. tests/ в mkimage-profiles-desktop.

Сообщения об ошибках

Существующие; метабаг

Советы и секреты

Обратите внимание на то, что в наработках cas@ уделено заметное внимание вычистке дублирующихся изображений; собственный вариант брендинга есть смысл начинать именно от его веток branding-school-*.

Обои по умолчанию

Обои по умолчанию должны быть сохранены в файле /usr/share/design/current/backgrounds/default.png. Этот путь из темы формируется альтернативой:

install -d %buildroot//etc/alternatives/packages.d
cat >%buildroot/etc/alternatives/packages.d/%name-graphics <<__EOF__
%_datadir/design-current        %_datadir/design/%theme $GRAPHICS_ALTPRIO
%_datadir/design/current        %_datadir/design/%theme $GRAPHICS_ALTPRIO
__EOF__
...
%files graphics
%config /etc/alternatives/packages.d/%name-graphics

Значки на рабочий стол

Для KDE4
Поместите файл .desktop в %_datadir/kde4/apps/kio_desktop/DesktopLinks/

Пустой экран в KDE4

Не упаковывайте файл /etc/skel/.kde4/share/config/plasmarc — это может привести к пустому рабочему столу Plasma. Виджеты и прочие элементы по умолчанию настраиваются через каталоги /usr/share/kde4/apps/plasma-desktop/init и /usr/share/kde4/apps/plasma/layout-templates.

Примечания

  1. 30M уже слишком много, 24M работает; с 26M пока неясно