Статус | Действующая политика с 3.0+ |
Автор | Игорь Власенко |
Обязательно в | 4.0 и выше |
Метабаг | repocop icon_path тест статус |
Данная политика относится к упаковке пиктограмм, на которые ссылаются файлы меню оконных менеджеров.
Нормативные:
Ненормативные:
В .menu-файлах (Debian menu, старый формат) пиктограмма указывается параметром icon="icon.file". Значением параметра должно быть имя файла с пиктограммой с расширением, но без пути к файлу, либо (не рекомендуется) полный путь к файлу.
В .desktop-файлах (freedesktop.menu, текущий формат) пиктограмма указывается параметром Icon=iconfile. Значением параметра должно быть имя иконки: имя файла с пиктограммой, но без расширения. Допускается, но не рекомендуется, указание имени с расширением или полного пути к файлу с пиктограммой.
Ссылки на пиктограмму из .menu/.desktop-файлов должны указывать на пиктограмму, упакованную по этой политике, и находящуюся либо в пакете с .menu/.desktop-файлом, либо в пакете, от которого зависит данный.
.menu/.desktop-файлы могут не ссылаться на пиктограммы вообще.
Допустимые форматы пиктограмм: растровые – PNG, XPM, векторый – SVG. Пиктограммы в других форматы должны быть либо сконвертированы в эти, либо выкинуты при упаковке.
Имена файлов пиктограмм должны иметь расширения в нижнем регистре: .png, .xpm, .svg для соответствующих типов.
Обязательна упаковка растровой пиктограммы развера 48x48. Растровые пиктограммы других размеров и векторная пиктограмма рекомендуются к упаковке при наличии.
При наличии PNG и XPM пиктограмм одинакового размера можно не упаковывать XPM-пиктограмму (исправив .desktop/.menu файл при необходимости).
Приложение может содержать как «общие» пиктограммы, так и пиктограммы для определённых «тем».
Упаковываются как пиктограммы темы hicolor.
Векторные пиктограммы должны располагаться в директории /usr/share/icons/<тема>/scalable/apps.
Растровые пиктограммы должны располагаться в директориях /usr/share/icons/<тема>/WWxHH/apps, где WW и HH – ширина и высота пиктограммы в пикселях.
Этот раздел предназначен для помощи майнтайнерам, пакующим приложения
для десктопа.
Итак, пусть Вы имеете пакет, который предоставляет пункт(ы) меню
(содержит либо по cтаринке /usr/lib/menu/<app> файл(ы),
либо, по-новому, %_desktopdir/*.desktop файл(ы)).
Рассмотрим возможные варианты:
В таком случае на нет и суда нет. Этот случай находится за рамками
данного полиси.
Но на всякий случай проверьте, не содержит ли
menu/ либо .desktop файл ссылок на несуществующие пиктограммы
(icon="xxx.xxx" в /usr/lib/menu/<app>, Icon=xxx(.xxx)? в .desktop).
Пример бага:
Хороший оконный менеджер это проигнорирует, а плохой да не введем во искушение.
Было бы также хорошо при желании нарисовать свои пиктограммы, добавить
их в пакет и поделиться с upstream.
Далее будем предполагать, что пиктограммы в пакете есть.
При этом может быть ситуация, что после make install эти пиктограммы
где-то лежат, более того, Вы их уже видите в своем любимом оконном
менеджере напротив пункта Вашего приложения.
К сожалению, не расслабляйтесь --- make install кладет эти пиктограммы
как автору на душу легло, и скорее всего, нестандартным образом.
Поэтому такие пиктограммы в одних оконных менеджерах видятся, а в
других --- нет, пиктограммы разбросаны по кучам папок и т. д. и т. п.
Правильной их упаковке и посвящено настоящее полиси.
Расширение файла с пиктограммой должно быть только в нижнем регистре:
<cite>
The image files must be one of the types: PNG, XPM, or SVG, and the extension must be “.png”, “.xpm”, or “.svg” (lower case).
</cite>
В /usr/lib/menu/<app> файле имя пиктограммы имя пиктограммы
указывается с расширением, например, icon="ee.xpm".
в .desktop расширение желательно опускать, рекомендуется запись Icon=ee
хотя работает и запись Icon=ee.xpm
Грабли второго случая, в том, что многие темы содержат богатый набор пиктограмм,
в том числе, возможно, и для вашего приложения.
Однако явное указание расширения может помешать их использовать.
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
<cite>
Installing Application Icons:
So, you're an application author, and want to install application
icons so that they work in the KDE and Gnome menus. Minimally you
should install a 48x48 icon in the hicolor theme. This means
installing a PNG file in $prefix/share/icons/hicolor/48x48/apps.
</cite>
Самый минимум, по стандарту freedesktop.org, это 1 пиктограмма 48x48.
Но поскольку altlinux кроме KDE and Gnome содержит много других
оконных менеджеров, для их корректной поддержки полиси требует
обязательного наличия еще двух пиктограмм, 16х16, 32х32.
Наличие пиктограмм других размеров не обязательно, но если они есть,
лучше их тоже паковать.
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
<cite>
The supported image file formats are PNG, XPM and SVG. PNG is the recommended bitmap format, and SVG is for vectorized icons. XPM is supported due to backwards compability reasons, and it is not recommended that new themes use XPM files. Support for SVGs is optional.
</cite>
Вкратце — PNG, XPM и SVG. PNG рекомендуется, XPM поддерживается для совместимости. SVG по возможности.
Чтобы приложение корректно отображалось в любом оконном менеджере из наличных в дистрибутиве,
майнтайнер должен озаботиться наличием 3-х иконок размером 16х16, 32х32 и 48х48 в каталогах
%_miconsdir/ (mini, 16x16) [/usr/share/icons/hicolor/16x16/apps]
%_liconsdir/ (large, 48x48) [/usr/share/icons/hicolor/48x48/apps]
%_niconsdir/ (normal, 32x32, [/usr/share/icons/hicolor/32x32/apps]
note: раньше (включительно до М30) для этого места (32x32) вместо %_niconsdir/ использовался макрос %_iconsdir/.
Поправьте spec, если у Вас старый пакет. архив )
При наличии этих пиктограмм их неотображение в меню оконного менеджера является багом
майнтайнера соответствующего оконного менеджера.
Если же их нет, то то неотображение их в меню оконного менеджера уже является багом
майнтайнера соответствующего пакета.
Если в пакете есть пиктограммы других размеров, то каноническим местом для них являются
подпапки %_iconsdir/hicolor вида %_iconsdir/hicolor/AAxBB/apps:
$ ls -al /usr/share/icons/hicolor
drwxr-xr-x 7 root root 4096 Мар 12 19:17 128x128
drwxr-xr-x 7 root root 4096 Мар 12 19:17 16x16
drwxr-xr-x 7 root root 4096 Мар 12 19:17 192x192
drwxr-xr-x 7 root root 4096 Мар 12 19:17 22x22
drwxr-xr-x 7 root root 4096 Мар 12 19:17 32x32
drwxr-xr-x 7 root root 4096 Мар 12 19:17 36x36
drwxr-xr-x 7 root root 4096 Мар 12 19:17 48x48
drwxr-xr-x 7 root root 4096 Мар 12 19:17 64x64
drwxr-xr-x 7 root root 4096 Мар 12 19:17 72x72
drwxr-xr-x 7 root root 4096 Мар 12 19:17 96x96
drwxr-xr-x 7 root root 4096 Мар 12 19:17 scalable
Где /usr/share/icons/hicolor/scalable/apps --- каноническое место для SVG пиктограмм.
Естественно, что ничего не мешает класть и в другие папки.
Более того,
я б советовал в случае, если всех нужных пиктограм нет и лень сваять
необходимые пиктограммы из имеющихся, то хотя бы бросить хоть какую то
нестандартного размера пиктограмму (в /usr/share/pixmaps ?),
возможно, буде пиктограмма в понимаемом этим оконным менеджером формате,
то он ее смасштабирует к нужному размеру.
Я такое наблюдал в icewm.
$ sudo apt-get install последний libgtk+2
$ rm -f /usr/share/{pixmaps,icons}/icon-theme.cache
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
архив
Нужно класть в %_miconsdir, %_liconsdir, %_niconsdir.
/usr/share/icons/*.{xpm,png} и /usr/share/icons/{large,mini} --
это устаревшие пути, на которые ранее указывали макросы
%_liconsdir, %_miconsdir, %_iconsdir.
начиная с 3.0, эти макросы изменили свои значения, а
макрос %_iconsdir изменил свой смысл (устарел?),
и вместо него нужно использовать %_niconsdir.
Пакеты с указанными путями нужно пересобрать, не забыв поменять
%_iconsdir
на
%_niconsdir
такой макрос есть, он указывает в $prefix/share/icons.
но это место больше не должно использоваться для размещения
пиктограмм. Для этого введен новый макрос %_niconsdir.
Старые пакеты использовали
%_miconsdir, %_liconsdir, %_iconsdir,
теперь нужно
%_miconsdir, %_liconsdir, %_niconsdir.
> > Это когда-то уже писалось, что в связи с переходом на freedesktop
по теме:
архив
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
Единственное место с упоминанием /usr/share/pixmaps следующее:
<cite>
Directory Layout:
Icons and themes are looked for in a set of directories. By default,
apps should look in $HOME/.icons (for backwards compatibility), in
$XDG_DATA_DIRS/icons and in /usr/share/pixmaps (in that order).
</cite>
В этом месте говорится только о том, что /usr/share/icons
имеет приоритет над /usr/share/pixmaps.
Более того, далее явно указывается /usr/share/icons как корень:
<cite>
Installing Application Icons:
So, you're an application author, and want to install application
icons so that they work in the KDE and Gnome menus. Minimally you
should install a 48x48 icon in the hicolor theme. This means
installing a PNG file in $prefix/share/icons/hicolor/48x48/apps.
</cite>
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
http://freedesktop.org/wiki/Standards_2ficon_2dtheme_2dspec
http://live.gnome.org/ThemableAppIcons