Зарегистрируйте расширения файлов / типы MIME в Linux

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

Как я могу зарегистрировать расширение файла и связать его с моим приложением в Linux? Я ищу способ, который является стандартным (работает с системами на основе GNOME и KDE) и может выполняться автоматически при установке или запуске моей программы в первый раз.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
58
0
30 791
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

1) в Linux это функция среды вашего рабочего стола, а не самой ОС. 2) GNOME и KDE используют разные методы для достижения этой цели. 3) Вам ничего не мешает делать это в обоих направлениях.

Это состоит из двух частей. Вам нужно зарегистрировать новый тип файла, а затем создать запись на рабочем столе для вашего приложения. Запись на рабочем столе связывает ваше приложение с вашим новым типом MIME.

Я думал, что и Gnome, и KDE (может быть, только 4+?) Использовали Спецификация общей информации mime в freedesktop, но я вполне могу ошибаться.

Ответ принят как подходящий

Используйте xdg-utils от freedesktop.org Портленд.

Зарегистрируйте значок для типа MIME:

xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype

Создайте файл конфигурации (Freedesktop Общая документация MIME):

<?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.

В Ubuntu 9.04 и Fedora Core 10 по умолчанию установлены утилиты xdg.

jldupont 21.10.2009 05:23

Попробуйте этот сценарий: необходимо:

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 находится в / usr / bin (или в $ PATH)

Другие вопросы по теме