Регистрация расширений файлов / типов mime в Linux
Я разрабатываю приложение Linux, которое имеет свой собственный формат файла. Я хочу, чтобы мое приложение открывалось при двойном щелчке по этим файлам.
Как я могу зарегистрировать расширение файла и связать его с моим приложением на Linux? Я ищу способ, который является стандартным (работает с системами на основе GNOME и KDE) и может быть выполнен автоматически, когда моя программа установлена или запущена в первый раз.
4 ответа:
использовать
xdg-utils
от freedesktop.org Портленд.зарегистрируйте значок для типа MIME:
xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype
создать файл конфигурации (freedesktop Shared MIME documentation):
<?xml version="1.0"?> <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> <mime-type type="application/x-mytype"> <comment>A witty comment</comment> <comment xml:lang="it">Uno Commento</comment> <glob pattern="*.myapp"/> </mime-type> </mime-info>
установите файл конфигурации:
xdg-mime install mytype-mime.xml
это получает ваши файлы распознаны и связаны со значком.
xdg-mime default
может использоваться для связывания приложения с типом MIME после получения.desktop
.
есть две части к этому. Вам нужно зарегистрировать новый тип файла а то создать запись рабочего стола для вашего приложения. Запись рабочего стола связывает приложение с новым типом mime.
Я думал, что и Gnome и KDE (может быть, только 4+?) использовал freedesktop shared MIME info spec, но я могу ошибаться.
1) в linux это функция вашего рабочего стола, а не самой ОС.
2) GNOME и KDE имеют различные методы для достижения этой цели.
3) ничто не мешает вам делать это в обе стороны.
попробуйте этот скрипт: нужно:
1. your application icon -> $APP = FIREFOX.png 2. your mimetype icon -> application-x-$APP = HTML.png
в текущем каталоге:
#BASH SCRIPT: Register_my_new_app_and_its_extension.sh APP="FOO" EXT="BAR" COMMENT="$APP's data file" # Create directories if missing mkdir -p ~/.local/share/mime/packages mkdir -p ~/.local/share/applications # Create mime xml echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\"> <mime-type type=\"application/x-$APP\"> <comment>$COMMENT</comment> <icon name=\"application-x-$APP\"/> <glob pattern=\"*.$EXT\"/> </mime-type> </mime-info>" > ~/.local/share/mime/packages/application-x-$APP.xml # Create application desktop echo "[Desktop Entry] Name=$APP Exec=/usr/bin/$APP %U MimeType=application/x-$APP Icon=$APP Terminal=false Type=Application Categories= Comment= "> ~/.local/share/applications/$APP.desktop # update databases for both application and mime update-desktop-database ~/.local/share/applications update-mime-database ~/.local/share/mime # copy associated icons to pixmaps cp $APP.png ~/.local/share/pixmaps cp application-x-$APP.png ~/.local/share/pixmaps
убедитесь, что: Foo binary есть в /usr / bin (или в $PATH)