<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.18.0">
</HEAD>
<BODY>
<PRE>
> Чтобы был готовый шаблон, что нужно делать?
</PRE>
Коротенько (на примере pybookreader):<BR>
<BR>
Если программа работает с каким-либо специфическим форматом файла (для pybookreader это Fiction Book 2.0 и зазипованный Fiction Book 2.0), то нужно описать свой MIME-тип. Вот пример:<BR>
<BR>
Содержимое файла fb2.xml (имя выбираете сами, какое угодно)
<PRE>
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="<A HREF="http://www.freedesktop.org/standards/shared-mime-info">http://www.freedesktop.org/standards/shared-mime-info</A>">
<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>
</PRE>
<BR>
В данном случае описываются два новых MIME-типа, один является подклассом XML, а другой - ZIP-архива. В обоих случаях типы распознаются по шаблону имени файла - *.fb2 и *.fb2.zip (так эти файлы распространяются online-библиотеками, например <A HREF="http://www.fictionbook.ru">http://www.fictionbook.ru</A> или <A HREF="http://lib.aldebaran.ru">http://lib.aldebaran.ru</A>). При упаковке этот файл кладётся в /usr/share/mime/packages (можно использовать макро из shared-mime-info - %_xdgmimedir/packages). В %post %postun прописываете %update_mimedb (из того же shared-mime-info). Всё, новые типы зарегистрированы.<BR>
<BR>
Теперь нужно указать, что Ваше приложение умеет обрабатывать данные MIME-типы. Это делается с помощью *.desktop файлов, которые кладутся в %_desktopdir (это макроопределение входит в список стандартных путей, поставляемых вместе с ALT'овским rpm) и регистрируются в системе в %post %postun с помощью макро %update_desktopdb из пакета desktop-file-utils.<BR>
<BR>
Теперь собственно файл. Вот минимальный набор (pybookreader.desktop):
<PRE>
[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;
</PRE>
Самые важные для обработки MIME-типов поля - это Exec (обратите внимание на %f, который говорит, что данное приложение может обрабатывать только локальные файлы, причем только один за раз) и MimeType (в котором перечисляются MIME-типы файлов, обрабатываемых данным приложением).<BR>
<BR>
Более подробную информацию можно найти на:<BR>
<BR>
<A HREF="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec</A><BR>
<A HREF="http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec">http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec</A><BR>
<A HREF="http://www.freedesktop.org/wiki/Specifications/icon-theme-spec">http://www.freedesktop.org/wiki/Specifications/icon-theme-spec</A><BR>
<A HREF="http://www.freedesktop.org/wiki/Specifications/icon-naming-spec">http://www.freedesktop.org/wiki/Specifications/icon-naming-spec</A><BR>
<BR>
P.S. В настоящий момент я никак не могу понять, как задать собственную иконку для MIME-типа. Раньше для этого достаточно было положить картинку в /usr/share/icons/hicolor/%size/mimetypes под именами (для ранее определённых типов) - application-x-fb2.png и application-x-zip-compressed-fb2.png. Однако после выхода нового nautilus это перестало работать (скорее всего это связано с переходом на GIO, так как в диалогах открытия и в приложениях, которые работают через GnomeVFS иконки пока показываются). Никакие мои ухищрения пока проблемы не решили :-(.<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
-- <BR>
Sergey N. Yatskevich <<A HREF="mailto:syatskevich@mail.ru">syatskevich@mail.ru</A>>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>