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

Материал из ALT Linux Wiki
 
(не показаны 22 промежуточные версии 3 участников)
Строка 1: Строка 1:
{{DraftPolicy
{{span|font-size: 180%|}}
|responsible=viy@
{{Policy
|discussion_link=
|since_branch=6.0
|discussion_since=
|responsible=Igor Vlasenko (viy)
}}
}}


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


[http://en.wikipedia.org/wiki/Internet_media_type Internet media type] ранее называемый MIME type (Multipurpose Internet Mail Extensions)
[http://en.wikipedia.org/wiki/Internet_media_type Internet media type] ранее называемый MIME type (Multipurpose Internet Mail Extensions)
является стандвртом наиманования различных типов файлов.  
является стандартом наименования различных типов файлов.  
MIME идентификатор состоит из двух частей: типа и подтипа, разделенных косой чертой.
MIME идентификатор состоит из двух частей: основного типа и подтипа, разделенных косой чертой.
Узнать MIME идентификатор файла можно командой {{cmd|xdg-mime}}:
Узнать MIME идентификатор файла можно командой {{cmd|xdg-mime}}:
  xdg-mime query filetype article1.tex  
  xdg-mime query filetype article1.tex  
Строка 17: Строка 18:


Ранее каждый файловый менеджер имел свои собственные несовместимые настройки для запуска приложений при открытии файлов определенного типа.
Ранее каждый файловый менеджер имел свои собственные несовместимые настройки для запуска приложений при открытии файлов определенного типа.
С появлением стандарта [http://standards.freedesktop.org freedesktop.org] эти настройки вынесены из приложений в отдельные
базы данных. стандарты [http://standards.freedesktop.org freedesktop.org] поддерживаются GNOME с 2.2x, KDE, начиная с 4.x,
XFCE, ...
По стандарту настройки для запуска приложений при открытии файлов определенного типа формируются следующим образом:
# С помощью базы данных MIME-типов из пакета {{pkg|shared-mime-info}} определяется MIME-тип файла, например, {{cmd|video/mp4}}. Приложения могут расширять базу данных MIME-типов, например, игра может определить собственный MIME-тип для формата карт местности, чтобы связать этот MIME-тип со своим редактором карт. Подробнее см. http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
# Приложения, способные обрабатывать данные, должны указывать MIME-типы этих данных в ключе MimeType=... .desktop файла соответствующего приложения. При этом они также должны указать в ключе Exec=... один из параметров %U, %u, %F, %f, описывающий тип принимаемого аргумента. Подробнее см. http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
# Приложение (Файловый менеджер) с помощью {{pkg|shared-mime-info}} определяет MIME-тип файла, читает из базы данных .desktop файлов список приложений, могущих обработать данный MIME-тип. Обычно этот список можно увидеть в контекстном меню файла в подпункте "Открыть с помощью".
{| class="standard sortable"
|-
!параметр||значение
|-
|%U|| может быть несколько аргументов, путь к файлу или URL, например file:/usr/
|-
|%u|| может быть только один аргумент, путь к файлу или URL
|-
|%F|| может быть несколько аргументов, пути к файлам
|-
|%f|| может быть только один аргумент, путь к файлу
|}
=== Замечания ===
* .desktop файл приложения также используется для показа приложения в меню. Однако иногда для обработки MIME-типа необходимо вызвать приложение со специальными опциями, либо же приложение не предназначено для показа в меню (например, при простом запуске сразу же завершает свою работу или не создает окна). В таком случае удобно разделить роль пункта меню и роль обработчика MIME-типов на разные .desktop файлы. В те .desktop файлы, которые не предназначены для меню и используются только как обработчики, нужно добавить (см. [http://standards.freedesktop.org/menu-spec/menu-spec-latest.html menu-spec])
NoDisplay=true
* проверить, поддерживает ли приложение аргументы типа URL, можно, заменив путь к файлу на URL вида file:/path/.
=== Пример ===
Хотим добавить приложение oqtplayer из пакета {{pkg|openquicktime-utils}} как обработчик *.MOV файлов
(MIME-тип video/quicktime). Для этого достаточно создать {{path|/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


== Поддержка протоколов ==
== Поддержка протоколов ==
Строка 51: Строка 94:
== Приоритет приложений ==
== Приоритет приложений ==


TODO
Если более чем одно приложение может обработать данный MIME тип, то возникает проблема, которое из них выбрать по умолчанию.
Без настроек выбор текущего обработчика связан с порядком установки пакетов.
Например, ожидалось, что для просмотра видео будет запущен видеоплеер, а был запущен видео редактор.
Или был запущен видеоплеер среды KDE, но в среде GNOME.
Или запущенный видеоплеер не соответствовал желаниям пользователя.
 
Есть два типа файлов настроек приоритета, отличающихся форматом:
applications/defaults.list
applications/mimeapps.list
 
Примеры таких файлов можно посмотреть в пакете {{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}}.
 
В {{path|defaults.list}} можно указать только одно приложение, а в {{path|mimeapps.list}} -- список предпочтений.
Для домашних настроек пользователя рекомендуется использовать {{path|mimeapps.list}}, так как он имеет более гибкие возможности по настройке, а {{path|defaults.list}} к тому же не поддерживается {{pkg|kde4libs}}.
 
Места, где 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''.
 
Пакет {{pkg|altlinux-mime-defaults}} предоставляет набор достаточно разумных умолчаний для дистрибутива в целом.
Предпочтения пользователя необходимо вписывать в {{path|~/.local/share/applications/mimeapps.list}}.
 
Что касается настроек, специфических для конкретного DE, то freedesktop-совместимый DE должен хранить свои настройки
в {{path|/usr/share/<DE>/applications/}} и экспортировать этот путь в переменной {{term|XDG_DATA_DIRS}} в своем стартовом скрипте {{cmd|/usr/bin/start_DE_}}
XDG_DATA_DIRS=/usr/share/<DE>:${XDG_DATA_DIRS:-/usr/share}
export XDG_DATA_DIRS
 
Составлять и сопровождать <DE>-специфические файлы {{path|applications/{defaults,mimeapps}.list}} достаточно хлопотно.
Рекомендуемый метод порождения таких файлов -- автогенерация из базы данных repocop в пакете {{pkg|altlinux-mime-defaults}}.


== Ресурсы ==
== Ресурсы ==
[http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html Desktop Entry Specification]
* [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html Desktop Entry Specification]
* [http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html Shared MIME-info Database]
* [http://git.altlinux.org/people/viy/packages/?p=altlinux-mime-defaults.git;a=summary altlinux-mime-defaults.git]

Текущая версия от 14:14, 30 августа 2011

Stamp90cw.png
Действующая политика Sisyphus

Политика действует, начиная со стабильного бранча 6.0 и выше.

Ответственный за проведение политики в жизнь — Igor Vlasenko (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

Примеры таких файлов можно посмотреть в пакете 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.

В defaults.list можно указать только одно приложение, а в mimeapps.list -- список предпочтений. Для домашних настроек пользователя рекомендуется использовать mimeapps.list, так как он имеет более гибкие возможности по настройке, а defaults.list к тому же не поддерживается kde4libs.

Места, где 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.

Пакет altlinux-mime-defaults предоставляет набор достаточно разумных умолчаний для дистрибутива в целом. Предпочтения пользователя необходимо вписывать в ~/.local/share/applications/mimeapps.list.

Что касается настроек, специфических для конкретного DE, то freedesktop-совместимый DE должен хранить свои настройки в /usr/share/<DE>/applications/ и экспортировать этот путь в переменной XDG_DATA_DIRS в своем стартовом скрипте /usr/bin/start_DE_

XDG_DATA_DIRS=/usr/share/<DE>:${XDG_DATA_DIRS:-/usr/share}
export XDG_DATA_DIRS

Составлять и сопровождать <DE>-специфические файлы applications/{defaults,mimeapps}.list достаточно хлопотно. Рекомендуемый метод порождения таких файлов -- автогенерация из базы данных repocop в пакете altlinux-mime-defaults.

Ресурсы