[devel] *.desktop

Sergey N. Yatskevich =?iso-8859-1?q?syatskevich_=CE=C1_mail=2Eru?=
Пт Мар 21 22:43:38 MSK 2008


> Чтобы был готовый шаблон, что нужно делать?

Коротенько (на примере pybookreader):

Если программа работает с каким-либо специфическим форматом файла (для
pybookreader это Fiction Book 2.0 и зазипованный Fiction Book 2.0), то
нужно описать свой MIME-тип. Вот пример:

Содержимое файла fb2.xml (имя выбираете сами, какое угодно)

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/x-fb2">
    <sub-class-of type="text/xml"/>
    <comment>Fiction Book 2.0 file</comment>
    <glob pattern="*.fb2"/>
  </mime-type>

  <mime-type type="application/x-zip-compressed-fb2">
    <sub-class-of type="application/x-zip-compressed"/>
    <comment>Zipped Fiction Book 2.0 file</comment>
    <glob pattern="*.fb2.zip"/>
  </mime-type>
</mime-info>


В данном случае описываются два новых MIME-типа, один является
подклассом XML, а другой - ZIP-архива. В обоих случаях типы распознаются
по шаблону имени файла - *.fb2 и *.fb2.zip (так эти файлы
распространяются online-библиотеками, например http://www.fictionbook.ru
или http://lib.aldebaran.ru). При упаковке этот файл кладётся
в /usr/share/mime/packages (можно использовать макро из shared-mime-info
- %_xdgmimedir/packages). В %post %postun прописываете %update_mimedb
(из того же shared-mime-info). Всё, новые типы зарегистрированы.

Теперь нужно указать, что Ваше приложение умеет обрабатывать данные
MIME-типы. Это делается с помощью *.desktop файлов, которые кладутся в %
_desktopdir (это макроопределение входит в список стандартных путей,
поставляемых вместе с ALT'овским rpm) и регистрируются в системе в %post
%postun с помощью макро %update_desktopdb из пакета desktop-file-utils.

Теперь собственно файл. Вот минимальный набор (pybookreader.desktop):

[Desktop Entry]
Encoding=UTF-8
Name=Book Reader
GenericName=Book Reader
Comment=Display and organize your book collection
Type=Application
Icon=pybookreader
Exec=pybr %f
StartupNotify=true
Terminal=false
Categories=GNOME;GTK;Application;
MimeType=application/x-fb2;application/x-zip-compressed-fb2;


Самые важные для обработки MIME-типов поля - это Exec (обратите внимание
на %f, который говорит, что данное приложение может обрабатывать только
локальные файлы, причем только один за раз) и MimeType (в котором
перечисляются MIME-типы файлов, обрабатываемых данным приложением).

Более подробную информацию можно найти на:

http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec
http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec
http://www.freedesktop.org/wiki/Specifications/icon-theme-spec
http://www.freedesktop.org/wiki/Specifications/icon-naming-spec

P.S. В настоящий момент я никак не могу понять, как задать собственную
иконку для MIME-типа. Раньше для этого достаточно было положить картинку
в /usr/share/icons/hicolor/%size/mimetypes под именами (для ранее
определённых типов) - application-x-fb2.png и
application-x-zip-compressed-fb2.png. Однако после выхода нового
nautilus это перестало работать (скорее всего это связано с переходом на
GIO, так как в диалогах открытия и в приложениях, которые работают через
GnomeVFS иконки пока показываются). Никакие мои ухищрения пока проблемы
не решили :-(.
-- 
Sergey N. Yatskevich <syatskevich на mail.ru>
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20080321/7a94a081/attachment-0002.html>


Подробная информация о списке рассылки Devel