Mime Policy: различия между версиями

Материал из ALT Linux Wiki
Строка 94: Строка 94:


Если более чем одно приложение может обработать данный MIME тип, то возникает проблема, которое из них выбрать по умолчанию.
Если более чем одно приложение может обработать данный MIME тип, то возникает проблема, которое из них выбрать по умолчанию.
defaults.list
Без настроек выбор текущего обработчика связан с порядком установки пакетов.
mimeapps.list
Например, ожидалось, что для просмотра видео будет запущен видеоплеер, а был запущен видео редактор.
Или был запущен видеоплеер среды KDE, но в среде GNOME.
Или запущенный видеоплеер не соответствовал желаниям пользователя.


TODO
Есть два типа файлов настроек приоритета:
applications/defaults.list
applications/mimeapps.list
 
{{path|mimeapps.list}} имеет более гибкие возможности по настройке, а {{path|defaults.list}} к тому же не поддерживается {{pkg|kde4libs}}.
Примеры таких файлов можно посмотреть в пакете {{pkg|altlinux-mime-defaults}}.
 
В этих файлах MIME типам сопоставляются ''desktop ids''. ''desktop id'' -- это относительный путь к .desktop файлу относитедьно {{path|applications/}},
у которого слеши заменены на дефисы. К примеру, {{path|/usr/share/applications/gimp.desktop}} имеет ''desktop id'' {{path|gimp.desktop}} а {{path|/usr/share/applications/kde/ktorrent.desktop}} имеет ''desktop id'' {{path|kde-ktorrent.desktop}}.
 
Места, где DE ищут эти файлы, регулируются стандартом [http://standards.freedesktop.org/basedir-spec/latest/ XDG Base Directory Specification].
Для этого обходится список каталогов, состоящий из каталога $XDG_DATA_HOME (по умолчанию {{path|~/.local/share}}) и списка каталогов
$XDG_DATA_DIRS (по умолчанию {{path|/usr/share}}, для GNOME, например, {{path|/usr/share/gnome:/usr/share}}).
В каждом из каталогов ищутся файлы {{path|applications/{defaults,mimeapps}.list}}. Для каждого MIME типа приложением по умолчанию выбирается первый найденный реально существующий ''desktop id''.


== Ресурсы ==
== Ресурсы ==

Версия от 20:50, 14 августа 2011

Stub.png
Черновик политики Sisyphus
Автор(ы) — viy@


Общие сведения

Internet media type ранее называемый MIME type (Multipurpose Internet Mail Extensions) является стандвртом наиманования различных типов файлов. MIME идентификатор состоит из двух частей: основного типа и подтипа, разделенных косой чертой. Узнать MIME идентификатор файла можно командой xdg-mime:

xdg-mime query filetype article1.tex 
text/x-tex

Поддержка форматов файлов

Ранее каждый файловый менеджер имел свои собственные несовместимые настройки для запуска приложений при открытии файлов определенного типа. С появлением стандарта freedesktop.org эти настройки вынесены из приложений в отдельные базы данных. стандарты freedesktop.org поддерживаются GNOME с 2.2x, KDE, начиная с 4.x, XFCE, ...

По стандарту настройки для запуска приложений при открытии файлов определенного типа формируются следующим образом:

  1. С помощью базы данных MIME-типов из пакета shared-mime-info определяется MIME-тип файла, например, video/mp4. Приложения могу т расширять базу данных MIME-типов, например, игра может определить собственный MIME-тип для формата карт местности, чтобы связать этот MIME-тип с редактором карт. Подробнее см. http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
  2. Приложения, способные обрабатывать данные, должны указывать MIME-типы этих данных в ключе MimeType=... .desktop файла соответствующего приложения. При этом они также должны указать в ключе Exec=... один из параметров %U, %u, %F, %f, описывающий тип принимаемого аргумента. Подробнее см. http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
  3. Приложение (Файловый менеджер) с помощью shared-mime-info определяет MIME-тип файла, читает из базы данных .desktop файлов список приложений, могущих обработать данный MIME-тип. Обычно этот список можно увидеть в контекстном меню файла в подпункте "Открыть с помощью".
параметр значение
%U может быть несколько аргументов, путь к файлу или URL, например file:/usr/
%u может быть только один аргумент, путь к файлу или URL
%F может быть несколько аргументов, пути к файлам
%f может быть только один аргумент, путь к файлу

Замечания

  • .desktop файл приложения также используется для показа приложения в меню. Однако иногда для обработки MIME-типа необходимо вызвать приложение со специальными опциями, либо же приложение не предназначено для показа в меню (например, при простом запуске сразу же завершает свою работу или не создает окна). В таком случае удобно разделить роль пункта меню и роль обработчика MIME-типов на разные .desktop файлы. В те .desktop файлы, которые не предназначены для меню и используются только как обработчики, нужно добавить (см. menu-spec)
NoDisplay=true
  • проверить, поддерживает ли приложение аргументы типа URL, можно, заменив путь к файлу на URL вида file:/path/.

Пример

Хотим добавить приложение oqtplayer из пакета openquicktime-utils как обработчик *.MOV файлов (MIME-тип video/quicktime). Для этого достаточно создать /usr/share/applications/oqtplayer.desktop

[Desktop Entry]
Type=Application
Name=oqtplayer
GenericName=quicktime player
Comment=Play quicktime movies and songs
Icon=multimedia_section.png
Exec=oqtplayer %f
Terminal=false
NoDisplay=true
MimeType=video/quicktime;

приложение oqtplayer не предназначено для самостоятельного запуска (завершает свою работу, если файл не указан), поэтому здесь

NoDisplay=true

Поддержка протоколов

Почтовые клиенты

Почтовый клиент должен поддерживать протокол mailto:. Это можно проверить, запустив почтовый клиент с командной строки:

$ mailprogram протокол:test@altlinux.org

Если протокол mailto: поддерживается приложением, в его .desktop файл следует добавить

MimeType=x-scheme-handler/mailto;

Файловые менеджеры

freedesktop-совместимый файловый менеджер должен поддерживать протоколы computer: trash: network: и mime-тип inode/directory (каталог). Это можно проверить, посмотрев, обрабатываются ли эти протоколы как аргументы командной строки:

$ filemanager computer:
$ filemanager trash:
$ filemanager network:

для каждого поддерживаемого протокола нужно добавить в ключ MimeType .desktop файла mime-тип "обработчик протокола", соответственно

x-scheme-handler/computer
x-scheme-handler/trash
x-scheme-handler/network

таким образом, рекомендуемый вид для filemanager.desktop

...
Exec=filemanager %U
MimeType=x-scheme-handler/computer;x-scheme-handler/trash;x-scheme-handler/network;inode/directory;

Приоритет приложений

Если более чем одно приложение может обработать данный MIME тип, то возникает проблема, которое из них выбрать по умолчанию. Без настроек выбор текущего обработчика связан с порядком установки пакетов. Например, ожидалось, что для просмотра видео будет запущен видеоплеер, а был запущен видео редактор. Или был запущен видеоплеер среды KDE, но в среде GNOME. Или запущенный видеоплеер не соответствовал желаниям пользователя.

Есть два типа файлов настроек приоритета:

applications/defaults.list
applications/mimeapps.list

mimeapps.list имеет более гибкие возможности по настройке, а defaults.list к тому же не поддерживается kde4libs. Примеры таких файлов можно посмотреть в пакете altlinux-mime-defaults.

В этих файлах MIME типам сопоставляются desktop ids. desktop id -- это относительный путь к .desktop файлу относитедьно applications/, у которого слеши заменены на дефисы. К примеру, /usr/share/applications/gimp.desktop имеет desktop id gimp.desktop а /usr/share/applications/kde/ktorrent.desktop имеет desktop id kde-ktorrent.desktop.

Места, где DE ищут эти файлы, регулируются стандартом XDG Base Directory Specification. Для этого обходится список каталогов, состоящий из каталога $XDG_DATA_HOME (по умолчанию ~/.local/share) и списка каталогов $XDG_DATA_DIRS (по умолчанию /usr/share, для GNOME, например, /usr/share/gnome:/usr/share). В каждом из каталогов ищутся файлы applications/{defaults,mimeapps}.list. Для каждого MIME типа приложением по умолчанию выбирается первый найденный реально существующий desktop id.

Ресурсы