XDG MIME Applications (Русский)
Спецификация от XDG для приложений MIME основывается на #Общей базе данных MIME и на #Ярлыках приложений для предоставления приложений по умолчанию.
Общая база данных MIME
Спецификация от XDG для общей база данных MIME-info облегчает общую базу данных MIME в среде рабочего стола и позволяет приложениям легко регистрировать новые типы MIME общесистемно.
База данных построена из файлов XML, установленных пакетами в /usr/share/mime/packages/
, используя инструменты из shared-mime-info.
Файлы в /usr/share/mime/
не должны редактироваться напрямую, однако их можно сохранить в отдельную базу данных для каждого пользователя в ~/.local/share/mime/
.
"Обработка схемы URI [..] обрабатывается через приложения, обрабатывающие x-scheme-handler/foo mime-type
, где foo - это схема URI, о которой идет речь."[1]
Новый тип MIME
В этом примере определяется новый тип MIME application/x-foobar
и присваивается любому файлу с расширением .foo. Просто создайте следующий файл:
~/.local/share/mime/packages/application-x-foobar.xml
<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/x-foobar"> <comment>foo file</comment> <icon name="application-x-foobar"/> <glob-deleteall/> <glob pattern="*.foo"/> </mime-type> </mime-info>
А затем обновите базу данных MIME:
$ update-mime-database ~/.local/share/mime
Конечно, это никак не повлияет, если ярлыки приложения не связаны с типом MIME. Вам может потребоваться создать новые #Ярлыки приложений или отредактировать #mimeapps.list.
Ярлыки приложений
Каждый пакет может использовать ярлыки приложений для предоставления информации о типах MIME, которые могут быть обработаны с помощью программного обеспечения. Чтобы обеспечить быстрый поиск в обратном направлении, система использует инструменты из пакета desktop-file-utils для анализа файлов рабочего стола и создания обратного сопоставления, хранящегося в /usr/share/applications/mimeinfo.cache
. Это единственный файл, который программы должны прочитать, чтобы найти все файлы рабочего стола, которые могут использоваться для обработки данного типа MIME. Использование базы данных проще и быстрее, чем непосредственно считывать сотни файлов .desktop.
Файлы в /usr/share/applications/
не должны редактироваться напрямую, можно поддерживать отдельную базу данных для каждого пользователя в ~/.local/share/applications/
. Для получения дополнительной информации смотрите статью Ярлыки приложений.
mimeapps.list
Стандарт XDG является наиболее распространенным при настройке окружения рабочего стола. Приложения по умолчанию для каждого типа MIME хранятся в файлах mimeapps.list
, которые могут храниться в нескольких местах. Их проверяют в следующем порядке, причем более ранние ассоциации имеют приоритет над более поздними:
Путь | Применение |
---|---|
~/.config/mimeapps.list |
пользовательские переопределения |
/etc/xdg/mimeapps.list |
общесистемные переопределения |
~/.local/share/applications/mimeapps.list |
(Устаревшее) пользовательские переопределения |
/usr/local/share/applications/mimeapps.list /usr/share/applications/mimeapps.list
|
переопределения предоставляемые дистрибутивом по умолчанию |
Кроме того, можно определить окружение рабочего стола по умолчанию для конкретных приложений в файле с именем desktop-mimeapps.list
где desktop
это имя окружения рабочего стола (Из переменной окружения XDG_CURRENT_DESKTOP
). Например, /etc/xdg/xfce-mimeapps.list
определяет общесистемные переопределения приложений по умолчанию для Xfce. Эти переопределения для рабочего стола имеют приоритет над соответствующим файлом, не относящимся к окружению рабочему столу. Например, /etc/xdg/xfce-mimeapps.list
имеет приоритет над /etc/xdg/mimeapps.list
, но по-прежнему переопределяется ~/.config/mimeapps.list
.
Формат
Рассмотрим следующий пример:
mimeapps.list
[Added Associations] image/jpeg=bar.desktop;baz.desktop video/H264=bar.desktop [Removed Associations] video/H264=baz.desktop [Default Applications] image/jpeg=foo.desktop
Каждый раздел назначает один или несколько ярлыков приложений типам MIME.
-
Added Associations (Добавленные ассоциации) указывают, что приложения поддерживают открытие этого типа MIME. Например,
bar.desktop
иbaz.desktop
могут открывать изображения JPEG. Это может повлиять на список приложений, который вы видите при щелчке правой кнопкой мыши по файлу в файловом менеджере. -
Removed Associations (Удаленные ассоциации) указывают, что приложения не поддерживают этот тип MIME. Например,
baz.desktop
не может открыть видео H.264. -
Default Applications (Приложения по умолчанию) указывают, что приложения должны выбираться по умолчанию для открытия этого типа MIME. Например, изображения JPEG должны быть открыты с помощью
foo.desktop
. Это неявно добавляет связь между приложением и типом MIME. Если есть несколько приложений, они проверяются по порядку.
Каждый раздел является необязательным и может быть опущен, если он не нужен.
Утилиты
Хотя можно настроить приложения по умолчанию и типы MIME путем прямого редактирования #mimeapps.list[broken link: invalid section] и #Shared MIME database[broken link: invalid section], существует множество инструментов, которые могут упростить процесс. Эти инструменты также важны, поскольку приложения могут делегировать открытие файлов этими инструментами, а не пытаться реализовать стандарт типа MIME.
Если вы используете окружение рабочего стола, вы должны сначала проверить, предоставляет ли он свою собственную утилиту. Она должна быть предпочтительнее этих альтернатив.
Официальные утилиты xdg-utils содержат инструменты для управления типами MIME и приложениями по умолчанию в соответствии со стандартом XDG (xdg-mime). Самое главное, что он предоставляет xdg-open, который многие приложения используют для открытия файла с его приложением по умолчанию.
lsdesktopf
lsdesktopfAUR предоставляет несколько способов поиска в базе данных MIME и ярлыков MIME на рабочем столе.
Например, чтобы увидеть все расширения MIME в файлах .desktop в системе, которые имеют тип MIME video
, вы можете использовать lsdesktopf --gm -gx video
или для поиска в файлах базы данных XML, используйте lsdesktopf --gdx -gx video
. Чтобы получить краткий обзор того, сколько и какие файлы .desktop могут быть связаны с определенным типом MIME, используйте lsdesktopf --gen-mimeapps
. Чтобы просмотреть все расширения имен файлов в файлах базы данных XML, используйте lsdesktopf --gdx -gfx
.
Решение проблем
Если файл не открывается вашим желаемым приложением по умолчанию, существует несколько возможных причин. Вам может потребоваться проверить каждый случай.
Отсутствует ярлык приложения
Для связывания приложений с типами MIME требуются ярлыки приложений. Убедитесь, что такая запись существует и может использоваться для открытия (вручную) файлов в приложении.
Отсутствует ассоциация
Если в ярлыке приложения не указан тип MIME под его ключом MimeType
, он не будет учитываться, когда приложение необходимо для открытия этого типа. Измените #mimeapps.list, чтобы добавить связь между файлом .desktop и типом MIME.
Нет приложения по умолчанию
Если ярлык приложения связан с типом MIME, его просто нельзя установить как значение по умолчанию. Измените #mimeapps.list[broken link: invalid section], чтобы установить связь по умолчанию.
Нестандартная ассоциация
Приложения могут игнорировать или частично реализовывать стандарт XDG. Проверьте использование устаревших файлов, таких как ~/.local/share/applications/mimeapps.list
и ~/.local/share/applications/defaults.list
. Если вы пытаетесь открыть файл из другого приложения (например, веб-браузера или файлового менеджера), проверьте, имеет ли это приложение собственный способ выбора приложений по умолчанию.
Переменные в файлах .desktop, которые влияют на запуск приложения
Окружения рабочего стола и файловые менеджеры, поддерживающие программы запуска спецификаций в соответствии с определением в файлах .desktop. Смотрите раздел Ярлыки приложений#Ярлык приложения.
Как правило, настройка упакованных файлов .desktop не требуется, но она может быть с ошибками. Даже если приложение содержит необходимое описание типа MIME в файле .desktop, то иногда переменная MimeType
, которая используется для ассоциации, может неправильно запускаться или вообще не запускаться, или запускаться без открытия файла.
Это может произойти, например, если в переменной Exec
отсутствуют внутренние параметры, необходимые для открытия файла или того, как приложение отображается в меню. Переменная Exec
обычно начинается с %
; чтобы узнать поддерживаемые параметры в настоящее время смотрите exec-переменные.
В следующей таблице перечислены основные записи переменных файлов .desktop которые влияют на запуск приложения, если у него есть тип MIME, связанный с ним.
Имена переменных | Пример 1 | Пример 2 | Описание |
---|---|---|---|
DBusActivatable | DBusActivatable=true | DBusActivatable=false | Приложение взаимодействует с D-Bus. Смотрите также настройки: D-Bus. |
MimeType | MimeType=application/vnd.oasis.opendocument.text | MimeType=application/vnd.sun.xml.math | Список типов MIME, поддерживаемых приложением |
StartupWMClass | StartupWMClass=google-chrome | StartupWMClass=xpad | Связывает окна с владельцем приложения |
Terminal | Terminal=true | Terminal=false | Запуск в терминале по умолчанию |