Как зарегистрировать ассоциацию файлов "Linux" с автоинструментами - PullRequest
1 голос
/ 14 июня 2011

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

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

1 Ответ

3 голосов
/ 27 июня 2011

Добавьте 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)"

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

...