Default applications (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Default applications
. Дата последней синхронизации: 9 апреля 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Программы реализуют ассоциации приложений по умолчанию разными способами. В то время как программы командной строки традиционно используют
переменные окружения
, графические приложения обычно используют
XDG MIME Applications
через
GIO
API,
Qt
API или путём запуска
/usr/bin/xdg-open
, который является частью
xdg-utils
. Поскольку
xdg-open
и
XDG MIME Applications
довольно сложны, были разработаны различные альтернативные
инструменты открытия ресурсов
. В следующей таблице приведены примеры приложений для каждого метода.
Метод
Использует XDG
Примеры приложений
GIO GAppInfo
Да
Firefox
,
GNOME Files
,
PCManFM
,
Thunar
,
Thunderbird
,
Telegram
/usr/bin/xdg-open
По умолчанию
Chromium
(Открытие загруженного файла)
свой
Обычно нет
mc
,
ranger
переменные окружения
Нет
man
,
sudoedit
,
systemctl
D-Bus
FileManager1
org.freedesktop.FileManager1
Firefox
(Показать в папке), Zotero (Отображение файла),
Telegram
(Показать в папке)
Общая информация
Иногда программам нужно открыть файл или
URI
в приложении, которое предпочитает пользователь. Для этого необходимо определить тип файла (обычно с помощью расширения или
сигнатуры
, сопоставленной с MIME-типом) и приложение, ассоциированное с этим типом.
Программы
Heirloom
UNIX использовали
mime.types
для определения типов MIME и
mailcap
для ассоциации приложений.
Инструменты открытия ресурсов
XDG MIME Apps
: реализует спецификацию
XDG MIME Applications
Правила RegEx
: позволяет ассоциировать типы MIME с приложениями с помощью регулярных выражений
Поддержка URI
: позволяет ассоциировать произвольные схемы URI с приложениями
Имя
Пакет
XDG MIME Apps
Правила RegEx
Поддержка URI
xdg-open
xdg-utils
Да
Нет
Да
mimeopen(1p)
perl-file-mimeinfo
Да
Нет
Нет
mimeo
mimeo
AUR
Да
Да
Да
linopen
linopen
AUR
[
ссылка недействительна
: package not found]
Нет
Да
Да
mimi
mimi-git
AUR
Нет
Нет
частично
busking
busking-git
AUR
Нет
Да
Да
rifle(1)
ranger
Нет
Да
Нет
handlr
handlr
AUR
Да
Нет
Да
clifm
clifm
AUR
Нет
Да
частично
xdg-open
xdg-open
(часть
xdg-utils
) реализует
XDG MIME Applications
и используется многими программами.
Из-за его сложности бывает сложно отлаживать ситуации, когда открывается неправильное приложение по умолчанию. Из-за этого существует множество альтернатив, которые пытаются улучшить его. Некоторые из этих альтернатив заменяют двоичный файл
/usr/bin/xdg-open
, тем самым изменяя поведение приложений по умолчанию для большинства приложений. Другие просто предоставляют альтернативный метод выбора приложений по умолчанию.
perl-file-mimeinfo
perl-file-mimeinfo
предоставляет инструменты
mimeopen
и
mimetype
. Они имеют немного более приятный интерфейс, чем их эквиваленты
xdg-utils
:
# определение типа MIME файла
$ mimetype photo.jpeg
photo.jpeg: image/jpeg

# выбор приложения по умолчанию для этого файла
$ mimeopen -d photo.jpeg
Please choose an application

    1) Feh (feh)
    2) GNU Image Manipulation Program (gimp)
    3) Pinta (pinta)

use application #

# открытие файла со своим стандартным приложением
$ mimeopen -n photo.jpeg
Самое главное, что приложения
xdg-utils
на самом деле вызывают
file
вместо
mimetype
для обнаружения типа MIME, если они не смогли определить вашу
среду рабочего стола
. Это важно, потому что
file
соответствует стандарту XDG.
Примечание
perl-file-mimeinfo
до версии 0.28-1 не
полностью
соответствует стандарту XDG. Например, он не считывает
переопределения предоставляемые дистрибутивом по умолчанию
и сохраняет конфигурацию в
устаревших местах
.
mimeo
mimeo
AUR
предоставляет инструмент
mimeo
который объединяет функции
xdg-open
и
xdg-mime
.
# определение типа MIME файла
$ mimeo -m photo.jpeg
photo.jpeg
  image/jpeg

# выбор приложения по умолчанию для этого типа MIME
$ mimeo --add image/jpeg feh.desktop

# открытие файла со своим стандартным приложением
$ mimeo photo.jpeg
Однако большая разница с
xdg-utils
заключается в том, что mimeo также поддерживает пользовательские "файлы ассоциаций", которые допускают более сложные ассоциации. Например, передача определенных аргументов командной строки на основе регулярного выражения соответствует:
# открытие ссылки на YouTube в VLC, не открывая новый экземпляр
vlc --one-instance --playlist-enqueue %U
  ^https?://(www.)?youtube.com/watch\?.*v=
xdg-utils-mimeo
AUR
патчит
xdg-utils
так, что
xdg-open
использует mimeo в качестве fallback, если используемая среда рабочего стола не определилась.
handlr
handlr
AUR
, написанный на Rust, предоставляет функциональность
xdg-open
и
xdg-mime
с упрощённым интерфейсом.
По сравнению с
xdg-utils
, он включает:
установку ассоциаций по расширению, устраняя необходимость искать или запоминать MIME-типы
проверку MIME-типов и расширений
удаление недействительных записей из
mimeapps.list
интеллектуальное определение MIME-типов по содержимому файла в случае, если имя файла неоднозначно
автодополнение MIME-типов, расширений и ярлыков приложений
# Следующие две команды эквивалентны
handlr set .png feh.desktop
handlr set image/png feh.desktop

# Отображение списка приложений по умолчанию
handlr list

# Получение обработчика mime-типа или расширения
$ handlr get .png --json
{"handler":"pqiv.desktop","name":"pqiv","cmd":"/usr/bin/pqiv"}

# Запуск обработчика с опциональным путём/URL
handlr launch x-scheme-handler/https
handlr launch x-scheme-handler/https --
https://google.ca
xdg-utils-handlr
AUR
[
ссылка недействительна
: package not found]
предоставляет версию
xdg-open
, которая использует
handlr
.
clifm
Lira
, встроенный в
clifm
инструмент открытия ресурсов, может быть использован сам по себе с помощью опции командной строки
--open
. Файл настроек (
~/.config/clifm/profiles/PROFILE_NAME/mimelist.cfm
) поддерживает регулярные выражения как для MIME-типов, так и для имён файлов (или расширений файлов). Несколько примеров:
# Открытие обычного файла
clifm --open /etc/hosts

# Открытие каталога
clifm --open /media/data

# Открытие URL (через приложение, ассоциированное с MIME-типов text/http в файле настроек)
clifm --open www.archlinux.org
Минималистичные замены
Следующие пакеты конфликтуют с
xdg-utils
, поскольку предоставляют свой собственный скрипт
/usr/bin/xdg-open
.
Если вы хотите использовать один из них и при этом иметь возможность использовать
xdg-utils
, установите их вручную в каталог PATH перед
/usr/bin
.
linopen
AUR
[
ссылка недействительна
: package not found]
— Bash-скрипт в 170 строк, разрешает правила регулярного выражения, может указывать запасное приложение для открывания файлов
mimi-git
AUR
— Bash-скрипт в 130 строк, может изменять аргументы команды для каждого типа MIME
busking-git
AUR
— Perl-скрипт в 80 строк, аналогичен
mimi
, но при этом поддерживает правила регулярных выражений
run-mailcap
Важно
Если вы используете
run-mailcap
AUR
, возможно, что
xdg-open
будет передавать выполнение ему. Это вызовет бесконечный цикл, если вы используете
/etc/mailcap
из пакета
mailcap
, потому что он тоже передаёт выполнение в
xdg-open
.