Вход:  Пароль:  
FreeSource: AltLinux/Policy/IconPaths ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Policy/IconPaths за 2007-01-01 17:52:07..

RFC полиси по пиктограммам (значкам) для меню оконных менеджеров


Оглавление документа

Упаковка пиктограмм (значков) для меню


Этот раздел предназначен для помощи майнтайнерам, пакующим приложения
для десктопа.


Итак, пусть Вы имеете пакет, который предоставляет пункт(ы) меню
(содержит по cтаринке /usr/lin/menu/<app> файл, либо, по-новому,
предоставляет .desktop).


Рассмотрим возможные варианты:

1. В пакете нет пиктограмм для меню.


В таком случае на нет и суда нет. Этот случай находится за рамками
данного полиси.


Но на всякий случай проверьте, не содержит ли 
menu/ либо .desktop файл ссылок на несуществующие пиктограммы
(icon="xxx.xxx" в /usr/lin/menu/<app>, Icon=xxx(.xxx)? в .desktop.


Пример бага:

> в qt3-designer.desktop написано
> Icon=designer, хотя в пакете такой пиктограммы нет :(.

Хороший оконный менеджер это проигнорирует, а плохой да не введем во искушение.


Было бы также хорошо при желании нарисовать свои пиктограммы, добавить
их в пакет и поделиться с upstream.

1. Правильная установка пиктограмм.


Далее будем предполагать, что пиктограммы в пакете есть.


При этом может быть ситуация, что после make install эти пиктограммы
где-то лежат, более того, Вы их уже видите в своем любимом оконном
менеджере напротив пункта Вашего приложения.
К сожалению, не расслабляйтесь
make install кладет эти пиктограммы
как автору на душу легло, и скорее всего, нестандартным образом.


Поэтому такие пиктограммы в одних оконных менеджерах видятся, а в
других
нет, пиктограммы разбросаны по кучам папок и т. д. и т. п.


Правильной их упаковке и посвящено настоящее полиси.

1. Проверьте расширение пиктограммы.


В /usr/lin/menu/<app> файле имя пиктограммы имя пиктограммы
указывается с расширением, например, icon="ee.xpm".
в .desktop расширение можно опускать, например, допустимы и 
Icon=ee.xpm, и просто Icon=ee


Грабли второго случая, что во втором случае подразумевается
Icon=ee.png (.png ).


При этом пакет может содержать именно “ee.xpm”, что порождает
следующий баг: как минимум в оконных менеджерах, использующих
menu-methods, например в Ice WM?, WMaker, ... и др. пиктограмма
отображаться не будет.

> > 1) откуда берется именно png ?
> Это издержки перехода на freedesktop.menu
> и иногда некоторая неаккуратность при упаковке.
> Например, в licq-gtk используется menu файл, где написано
> icon="licq.xpm". Поэтому иконка видна.
> В licq-qt используется .desktop файл, где написано
> Icon=licq. подразумевается licq.png, которого нет.
> явно .png добавляется в update-menus.

Отметим, что расширение должно быть только в нижнем регистре:
<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>

1. Какого размера должны быть пиктограммы?


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 по возможности.

1. Куда класть пиктограммы?

> Майнтайнерам пакетов нужно сердцем осознать, что это не хорошо —
> Вася Пупкин устанавливает Alt Linux?, запускает свой любимый
> dtwfwm и видит, что у половины приложений иконок нет, хотя
> в том же KDE (Вася не любит KDE) все пиктограммы есть.

В идеале приложение должно корректно отображаться не только в (KDE, ...,
подставить сюда любимый оконный менеджер майнтайнера приложения)
но и в любом другом оконном менеджере из наличных в дистрибутиве. Для этого
майнтайнер должен озаботиться наличием 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, раньше (включительно до М30) это место называлось %_iconsdir/
архив )


При наличии этих пиктограмм их неотображение в меню оконного менеджера является багом
майнтайнера соответствующего оконного менеджера.
Если же их нет, то то неотображение их в меню оконного менеджера уже является багом
майнтайнера соответствующего пакета.


Если в пакете есть пиктограммы других размеров, то каноническим местом для них являются
подпапки %_iconsdir/ вида %_iconsdir/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/icons
(а так же для гарантии и в /usr/share/pixmaps ?),
возможно, буде пиктограмма в понимаемом этим оконным менеджером формате,
то он ее смасштабирует к нужному размеру.


Я такое наблюдал в icewm.
Неплохо было бы это тонкое место обсудить и вывести совет в policy:
какая папка будет fallback icon location, /usr/share/icons или /usr/share/pixmaps,
(может быть, обе?)
и рекомендовать майнтайнерам оконных менеджеров малых народов севера
добавить ее при необходимости в конец icon path.

Настройка оконного менеджера

Порядок поиска пиктограмм


Из вышесказанного следует, что правильно настроенный оконный менеджер
должен искать пиктограммы в следующем порядке:


если он поддерживает SVG, то сначала в 
/usr/share/icons/<theme>/scalable/apps.
и в /usr/share/icons/hicolor/scalable/apps,


если он поддерживает темы, то затем в 
/usr/share/icons/<theme>/<SIZExSIZE>/apps.


Затем в любом случае смотрит
/usr/share/icons/hicolor/<SIZExSIZE>/apps,
где по выбору <SIZExSIZE> это одно из 16х16, 32х32 и 48х48 по выбору.


Если оконный менеджер поддерживает масштабирование иконок, то затем
смотрит в /usr/share/icons/<theme>/48х48/apps, и в
/usr/share/icons/hicolor/48х48/apps (минимально гарантированная
пиктограмма).


Если оконный менеджер поддерживает масштабирование иконок, то
дополнительно смотрим в /usr/share/icons/ и в /usr/share/pixmaps
для совместимости с пакетами, которые бросают пиктограммы куда попало.

> /usr/share/icons – это старое стандартное положение иконок в ALT
> /usr/share/pixmaps – чисто GNOME
> Добавить можно обе.

Где прописывать пути


Есть 2 возможности: список путей в оконном менеджере
(если в нем есть такая возможность) и список путей в 
соответствующем методе для menu-methods (для оконных менеджеров,
не поддерживающих напрямую freedesktop menu).


Разберем это на примере Ice WM?.
Ice WM? поддерживает список путей в оконном менеджере,
поэтому пути прописываем в параметре Icon Path? конфигурации.


Ice WM? не поддерживает напрямую freedesktop menu,
но функцию findicon можно взять попроще:


function findicon($filename, $defaulticon)= \

ifeqelse($filename, , $defaulticon, replace(replace($filename, ".xpm",), “.png”,))

Если бы IceWM не поддерживал список путей, то их пришлось бы вбивать
в findicon наподобие следующего (размер пиктограмм 16x16):

function findicon($filename, $defaulticon)= \
ifeqelse($filename, , $defaulticon, \
ifelsefile($filename, $filename, \
ifelsefile(«/usr/share/icons/hicolor/16x16/apps/» $filename, «/usr/share/icons/default.kde/16x16/apps/» $filename, \
ifelsefile(«/usr/share/icons/hicolor/48x48/apps/» $filename, «/usr/share/icons/default.kde/32x32/apps/» $filename, \
ifelsefile(«/usr/share/icons/hicolor/32x32/apps/» $filename, «/usr/share/icons/hicolor/16x16/apps/» $filename, \
ifelsefile(«/usr/share/icons/slick/16x16/apps/» $filename,
«/usr/share/icons/slick/16x16/apps/» $filename, \
ifelsefile(«/usr/share/icons/mini/» $filename, «/usr/share/icons/mini/» $filename, \
ifelsefile(«/usr/share/pixmaps/» $filename, «/usr/share/pixmaps/» $filename, \

$defaulticon))))))))\

Ресурсы по теме

FAQ 

> Вчера заметил одну странную особенность Гнома 2.10: без видимых причин (читай: без обновления системы) пропали иконки из некоторых
> пунктов меню. Расследование показало, что видятся иконки, лежащие в /usr/share/pixmaps, а те, которые лежали в /usr/share/icons —
> пропали из поля зрения. После перекладывания иконок в /usr/share/pixmaps всё встало на свои места. Оставляя на совести майнтейнера
> Гнома такое его поведение хочу спросить: так куда же правильнее их класть теперь?

архив


$ 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
архив



> Кстати, а как насчет /usr/share/icons/*.{xpm,png} и
> /usr/share/icons/{large,mini} – как они вписываются в эту схему?
> Надо ли класть значки туда?

нет архив ( это пост из серии: Г. Остер. Вредные советы майнтайнерам :) ).
Как оказывается, нужно, сам Сергей (zerg@) об этом и пишет :).
ftp://ftp.altlinux.org/pub/people/zerg/menu/menu-policy-current.txt
Кстати: слово – не воробей, вылетит – не поймаешь.


Уже наплодилась куча пакетов с /usre/share/pixmaps/name.xpm only, не лезущих ни в какие полиси :(



>> Этот вопрос меня тоже волнует.
>> Пока я для надёжности делаю так:
>>пиктограмму кладу в /usr/share/pixmaps, а в /usr/share/icons делаю
>>ссылку на неё.
>
>Это неправильно
пропущена %_niconsdir.
>Правильно пиктограмму класть в %_niconsdir,
>(%_niconsdir != /usr/share/icons!!!)
>а в /usr/share/icons и /usr/share/pixmaps
>можно при желании положить ссылку на нее.
>
>>Если есть пиктограммы других размеров, то кладу их в
>>%_miconsdir и %_liconsdir соответственно.
>
>Это правильно.
>
>Кстати, ранее высказывалась
>такая точка зрения, что единственным правильным местом для пиктограмм
>является /usr/share/pixmaps
>
>Это была злая шутка :(


> А просто %_iconsdir больше не действует?

такой макрос есть, он указывает в $prefix/share/icons.
но это место больше не должно использоваться для размещения
пиктограмм. Для этого введен новый макрос %_niconsdir.
Старые пакеты использовали
%_miconsdir, %_liconsdir, %_iconsdir,
теперь нужно
%_miconsdir, %_liconsdir, %_niconsdir.
> > Это когда-то уже писалось, что в связи с переходом на freedesktop

> > пиктограммы 32x32 надо перекладывать из %_iconsdir в %_niconsdir :(


Обсуждение freedesktops.org и menu policy.

по теме:
архив


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


Страницы, ссылающиеся на данную: AltLinux/Policy
AltLinux/Sisyphus/IconsPackaging
AltLinux/Sisyphus/devel/УпаковкаWM


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]