Default applications (Русский)

Программы реализуют ассоциации приложений по умолчанию разными способами. В то время как программы командной строки традиционно используют переменные окружения, графические приложения обычно используют 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 FileManager1org.freedesktop.FileManager1Firefox (Показать в папке), Zotero (Отображение файла), Telegram (Показать в папке)
Состояние перевода: На этой странице представлен перевод статьи Default applications. Дата последней синхронизации: 9 апреля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Общая информация

Иногда программам нужно открыть файл или URI в приложении, которое предпочитает пользователь. Для этого необходимо определить тип файла (обычно с помощью расширения или сигнатуры, сопоставленной с MIME-типом) и приложение, ассоциированное с этим типом.

Программы Heirloom UNIX использовали mime.types для определения типов MIME и mailcap для ассоциации приложений.

Инструменты открытия ресурсов

  • XDG MIME Apps: реализует спецификацию XDG MIME Applications
  • Правила RegEx: позволяет ассоциировать типы MIME с приложениями с помощью регулярных выражений
  • Поддержка URI: позволяет ассоциировать произвольные схемы URI с приложениями
ИмяПакетXDG MIME AppsПравила RegExПоддержка URI
xdg-openxdg-utilsДаНетДа
mimeopen(1p)perl-file-mimeinfoДаНетНет
mimeomimeoAURДаДаДа
linopenlinopenAURНетДаДа
mimimimi-gitAURНетНетчастично
buskingbusking-gitAURНетДаДа
rifle(1)rangerНетДаНет
handlrДаНетДа
clifmНетДачастично

xdg-open

xdg-open (часть xdg-utils) реализует XDG MIME Applications и используется многими программами.

Из-за его сложности бывает сложно отлаживать ситуации, когда открывается неправильное приложение по умолчанию. Из-за этого существует множество альтернатив, которые пытаются улучшить его. Некоторые из этих альтернатив заменяют двоичный файл /usr/bin/xdg-open, тем самым изменяя поведение приложений по умолчанию для большинства приложений. Другие просто предоставляют альтернативный метод выбора приложений по умолчанию.

perl-file-mimeinfo

perl-file-mimeinfo предоставляет инструменты и mimetype. Они имеют немного более приятный интерфейс, чем их эквиваленты :

# определение типа 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 на самом деле вызывают вместо mimetype для обнаружения типа MIME, если они не смогли определить вашу среду рабочего стола. Это важно, потому что соответствует стандарту XDG.

mimeo

предоставляет инструмент  который объединяет функции  и .
# определение типа 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-mimeoAUR патчит xdg-utils так, что использует mimeo в качестве fallback, если используемая среда рабочего стола не определилась.

handlr

, написанный на Rust, предоставляет функциональность и с упрощённым интерфейсом.

По сравнению с , он включает:

  • установку ассоциаций по расширению, устраняя необходимость искать или запоминать MIME-типы
  • проверку MIME-типов и расширений
  • удаление недействительных записей из
  • интеллектуальное определение 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-handlrAUR предоставляет версию , которая использует .

clifm

Lira, встроенный в инструмент открытия ресурсов, может быть использован сам по себе с помощью опции командной строки . Файл настроек () поддерживает регулярные выражения как для MIME-типов, так и для имён файлов (или расширений файлов). Несколько примеров:

# Открытие обычного файла
clifm --open /etc/hosts

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

# Открытие URL (через приложение, ассоциированное с MIME-типов text/http в файле настроек)
clifm --open www.archlinux.org

Минималистичные замены

Следующие пакеты конфликтуют с , поскольку предоставляют свой собственный скрипт /usr/bin/xdg-open.

Если вы хотите использовать один из них и при этом иметь возможность использовать , установите их вручную в каталог PATH перед .

  • linopenAUR — Bash-скрипт в 170 строк, разрешает правила регулярного выражения, может указывать запасное приложение для открывания файлов
  • mimi-gitAUR — Bash-скрипт в 130 строк, может изменять аргументы команды для каждого типа MIME
  • busking-gitAUR — Perl-скрипт в 80 строк, аналогичен mimi, но при этом поддерживает правила регулярных выражений
gollark: Well, yes, C++ bad, more so than Nim.
gollark: I feel like that was clear from me mentioning Nim.
gollark: Nim is. I am complaining about Nim.
gollark: I don't mean change C accordingly, I mean don't propagate the mistake to new languages.
gollark: A byte, i.e. "foolish ASCII or extended ASCII character", should just be `byte` or `u8` or something.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.