Как зарегистрировать ассоциацию файлов Linux с помощью autotools

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

В настоящее время мое приложение можно установить без root, например, на ~/.local. Было бы неплохо сохранить эту функцию.


person Robert Hensing    schedule 14.06.2011    source источник


Ответы (1)


Добавьте в проект myapp.xml, который содержит желаемые данные MIME. Это будет выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="image/png">
     <comment xml:lang="en">PNG image</comment>
     <comment xml:lang="af">png beeld</comment>
     ...
     <magic priority="50">
            <match type="string" value="\x89PNG" offset="0"/>
     </magic>
     <glob pattern="*.png"/>
  </mime-type>
</mime-info>

Дополнительные сведения о формате файлов XML см. В руководстве.

Теперь вам нужно выяснить, куда установить XML-файл. В своих проектах я предоставляю --with-xdgdatadir вариант configure, который оставляю читателю в качестве упражнения. По умолчанию XDGDATADIR должно быть ${prefix}/share (т.е. ${datarootdir}). Добавьте в свой Makefile.am следующее:

xdgdatadir=@XDGDATADIR@
mimedir=$(xdgdatadir)/mime
xmldir=$(mimedir)/packages
xml_DATA = myapp.xml

Это обеспечит правильную установку данных MIME.

Наконец, необходимо убедиться, что база данных MIME обновлена ​​make install и make uninstall. Добавьте чек на инструмент update-mime-database в свой configure.ac. Затем добавьте в свой Makefile.am следующее:

install-data-hook:
    $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(mimedir)"

uninstall-hook:
    $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(mimedir)"

Надеюсь, это ответ на ваш вопрос.

person Peter T.B. Brett    schedule 27.06.2011