Файлы .desktop: как указать путь к значку [дубликат]

Я просмотрел файлы .desktop в моей системе Ubuntu 12.04, и у многих из них нет полного пути к файлу значков. Это скорее что-то вроде:

Icon=anjuta

или

Icon=vlc

или

Icon=application-x-clementine

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

например.

Icon=/usr/local/share/my-icon.png

работает нормально, но

Icon=my-icon.png

не работает.

Приветствуется любая помощь!

26
задан 18 March 2014 в 00:14

3 ответа

Да, поиск довольно сложный. Вот спецификации значков freedesktop для макетов каталогов:

Значки и темы ищутся в наборе каталогов. По умолчанию приложения должны искать в $ HOME / .icons (для обратной совместимости), в $ XDG_DATA_DIRS / icons и в / usr / share / pixmaps (именно в таком порядке) . Приложения могут также добавлять свои собственные каталоги значков в этот список, и пользователи могут расширять или изменять список (в приложении / на рабочем столе специфическими способами) .В каждом из этих каталогов темы хранятся как подкаталоги. Тема может быть распределена по нескольким базовым каталогам. имея подкаталоги с тем же именем. Таким образом пользователи могут расширить и переопределить системные темы.

Чтобы сторонние приложения могли устанавливать свои иконки всегда должна существовать тема под названием "hicolor" 1 . Данные для темы hicolor можно скачать по адресу: http://www.freedesktop.org/software/icon-theme/ . Реализации требуется искать в теме "hicolor", если значок не был найден в текущая тема.

Каждая тема хранится как подкаталоги базовых каталогов. В внутреннее имя темы - это имя подкаталога, хотя видимое пользователем имя, указанное в теме, может отличаться. Следовательно, имена тем чувствительны к регистру и ограничены ASCII. символы. Имена тем также не могут содержать запятую или пробел.

По крайней мере в одном из каталогов тем должен быть файл с именем index.theme, который описывает тему. Первая найденная index.theme при поиске в базовых каталогах по порядку. Этот файл описывает общие атрибуты темы.

В каталоге темы также есть набор подкаталогов, содержащих файлы изображений. Каждый каталог содержит значки, предназначенные для определенного номинальный размер значка, как описано в файле index.theme. В подкаталоги могут иметь несколько уровней глубины, например в подкаталог «48x48 / apps» в теме «hicolor» окажется в $ basedir / hicolor / 48x48 / apps.

Файлы изображений должны быть одного из типов: PNG, XPM или SVG, а расширение должно быть «.png», «.xpm» или «.svg» (нижний регистр). Поддержка для файлов SVG не является обязательным. Реализации, не поддерживающие SVG следует просто игнорировать любые файлы ".svg". В дополнение к этому может быть дополнительный файл с дополнительными значками-данными для каждого файла. Он должен иметь то же базовое имя, что и у файла изображения, с расширением ".icon". например если файл значка называется "mime_source_c.png", соответствующий файл будет называться "mime_source_c.icon".

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

18
ответ дан 18 March 2014 в 00:14

Если вы поместите значки в / usr / share / icons / (для всей системы) или в свой домашний ~ / .icons , то вы может использовать только имя файла значка без расширения в файле .desktop. Например,

Icon=vlc

В противном случае необходимо использовать абсолютный путь к значку в файле .desktop. Например,

Icon=/usr/local/share/my-icon.png
8
ответ дан 18 March 2014 в 00:14

У меня есть опыт работы только с эмблемами, а не с иконками, но это должно сработать:

mkdir -p $HOME/.icons/hicolor/48x48/

поместите иконку в этом каталоге, предположим, это myicon.png

cp  myicons.png $HOME/.icons/hicolor/48x48/

Добавьте файл описания:

gedit $HOME/.icons/hicolor/48x48/myicon.icon

с содержимым:

[Icon Data]

DisplayName=myicon

, и теперь ваша строка Icon = myicon должна работать. Он работает с эмблемами, если вы поместите их в подкаталог emblems:

personalized emblem

Благодаря @Oli теперь я знаю , почему это работает :-)

6
ответ дан 18 March 2014 в 00:14

Другие вопросы по тегам:

Похожие вопросы: