Default applications (Русский) - ArchWiki

Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи 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 | mimeoAUR | Да | Да | Да
linopen | linopenAUR | Нет | Да | Да
mimi | mimi-gitAUR | Нет | Нет | частично
busking | busking-gitAUR | Нет | Да | Да
rifle(1) | ranger | Нет | Да | Нет
handlr | handlr | Да | Нет | Да
clifm | clifmAUR | Нет | Да | частично

### 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

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

### handlr

handlr, написанный на 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-handlrAUR предоставляет версию `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`.

- linopenAUR — Bash-скрипт в 170 строк, разрешает правила регулярного выражения, может указывать запасное приложение для открывания файлов
- mimi-gitAUR — Bash-скрипт в 130 строк, может изменять аргументы команды для каждого типа MIME
- busking-gitAUR — Perl-скрипт в 80 строк, аналогичен mimi, но при этом поддерживает правила регулярных выражений

#### run-mailcap

Важно: Если вы используете run-mailcapAUR, возможно, что `xdg-open` будет передавать выполнение ему. Это вызовет бесконечный цикл, если вы используете `/etc/mailcap` из пакета mailcap, потому что он тоже передаёт выполнение в `xdg-open`.
Category:

- System administration (Русский)