xdg-utils (Русский)

From ArchWiki
(Redirected from Xdg-open (Русский))

Состояние перевода: На этой странице представлен перевод статьи xdg-utils. Дата последней синхронизации: 19 апреля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

xdg-utils предоставляет официальные утилиты для управления MIME-приложениями XDG.

  • xdg-desktop-menu(1) — установка элементов меню рабочего стола
  • xdg-desktop-icon(1) — копирование ярлыков приложений на рабочий стол пользователя
  • xdg-email(1) — открытие предпочитаемого пользователем клиента электронной почты (с возможностью указания темы и других параметров создаваемого сообщения)
  • xdg-icon-resource(1) — установка значков
  • xdg-mime(1) — запрос и установка типов и ассоциаций MIME
  • xdg-open(1) — открытие файла или URI в предпочтительном приложении пользователя
  • xdg-screensaver(1) — разрешение, запрещение или приостановка хранителя экрана
  • xdg-settings(1) — установка веб-браузера и обработчиков URL-адресов по умолчанию

Установка

Установите пакет xdg-utils.

Использование

Переменные окружения

Примечание: Нормально работающая среда рабочего стола должна автоматически устанавливать эти переменные. Этот раздел необходим только для понимания того, как работает xdg-utils, то есть для устранения неполадок.

xdg-utils пытается интегрироваться с вашей средой рабочего стола, вызывая специализированные программы, которые она предоставляет, где это применимо. Выяснение текущей среды ребочего стола происходит так [1]:

  • Если стандартная переменная окружения XDG_CURRENT_DESKTOP содержит одно из известных значений, то используется оно.
  • Если присутствуют какие-либо классические fallback'и или специфичные для среды переменные, такие как KDE_FULL_SESSION в KDE, то используется соответствующее значение.
  • Если старая переменная окружения DESKTOP_SESSION содержит одно из известных значений, то используется оно.

Когда совпадение найдено, переменная DE внутренне перезаписывается нормализованным значением обнаруженной среды рабочего стола. Таким образом, DE — это и переменная окружения, и внутренняя переменная состояния xdg-utils. Например, если XDG_CURRENT_DESKTOP имеет значение KDE, то xdg-utils внутренне установит DE в значение kde. Если соответствие не найдено, то будет использовано любое ранее существующее значение DE; то есть, установка XDG_CURRENT_DESKTOP=KDE — это то же самое, как если бы переменная XDG_CURRENT_DESKTOP отсутствовала, а вместо неё была бы DE=kde. Это важная деталь реализации заслуживает внимания, так как следствие — предварительно установленная переменная DE игнорируется, если среда рабочего стола указана где-то ещё.

Значения переменных, которые распознаёт xdg-utils, следующие:

Среда XDG_CURRENT_DESKTOP DE DESKTOP_SESSION
X-Generic1 generic
Cinnamon Cinnamon, X-Cinnamon deepin
Deepin Deepin, DEEPIN, deepin1 cinnamon
Enlightenment ENLIGHTENMENT1 enlightenment
GNOME GNOME2 gnome gnome
GNOME Flashback GNOME-Flashback, GNOME-Flashback:GNOME2 gnome gnome
KDE Plasma KDE kde
LXDE LXDE lxde LXDE
LXQt LXQt lxqt
MATE MATE mate mate
Xfce XFCE xfce xfce, xfce4, Xfce Session
  1. Это не среда, зарегистрированная на freedesktop.org.
  2. Варианты GNOME, в том числе режим GNOME Classic, рассматриваются xdg-utils как одно и то же.

Имейте в виду, что это лишь список того, что способны обнаружить скрипты, которые предоставляет xdg-utils. Скрипты всё равно будут выполнять общие действия, не зависящие от среды, при следующих условиях:

  • Была запрошена общая процедура через XDG_CURRENT_DESKTOP=X-Generic или DE=generic.
  • Определить среду не удалось. Все соответствующие переменные окружения были не распознаны или не установлены, а поиск классических fallback'ов ни к чему не привёл.
  • Действия, специфичные для среды, были выполнены, но не увенчались успехом, например, из-за отсутствия нужной программы.

xdg-mime

xdg-mime(1) — это скрипт для прямого запроса и изменения стандартных приложений MIME. Он используется в других скриптах, таких как xdg-open, а также является полезным инструментом при устранении неполадок.

Определение MIME-типа файла:

$ xdg-mime query filetype photo.jpeg
image/jpeg

Определение приложения по умолчанию для MIME-типа:

$ xdg-mime query default image/jpeg
gimp.desktop

Изменение приложения по умолчанию для MIME-типа:

$ xdg-mime default feh.desktop image/jpeg

Отладка приложения по умолчанию для MIME-типа:

$ env XDG_UTILS_DEBUG_LEVEL=10  xdg-mime query default text/html
Checking /home/пользователь/.config/mimeapps.list
Checking /home/пользователь/.local/share/applications/defaults.list and /home/пользователь/.local/share/applications/mimeinfo.cache
Checking /usr/local/share/applications/defaults.list and /usr/local/share/applications/mimeinfo.cache
Checking /usr/share/applications/defaults.list and /usr/share/applications/mimeinfo.cache
qutebrowser.desktop

Когда нужно определить MIME-тип файла, xdg-mime пытается использовать программу, подходящую для среды рабочего стола:

Среда Программа Пакет
Cinnamon gio glib2
GNOME
GNOME Flashback
LXDE
MATE
Xfce
Deepin
Enlightenment
LXQt
KDE Plasma kmimetypefinder kde-cli-tools

В общем случае xdg-mime будет:

  • Обращаться к mimetype, если он доступен (пакет perl-file-mimeinfo).
  • Обращаться к file, если он доступен.

xdg-open

xdg-open(1) — это инструмент открытия ресурсов, используемый многими приложениями, реализующий стандарт XDG MIME Applications и при этом максимально интегрированный со средой рабочего стола.

Если среда рабочего стола обнаружена, будет вызван предоставляемый ею обработчик [2]:

Среда Программа Пакет
Cinnamon gio glib2
GNOME
GNOME Flashback
MATE
Deepin dde-open deepin-api
Enlightenment enlightenment_open enlightenment
KDE Plasma kde-open kde-cli-tools
LXDE pcmanfm pcmanfm
LXQt
Xfce exo-open1 exo
  1. Также может быть предпринята попытка использования gio из пакета glib2.

В общем случае xdg-open:

  • Обратится к #xdg-mime, чтобы узнать связанное с ресурсом приложение по умолчанию, прочитает соответствующий .desktop файл и запустит прописанную в нём команду.
  • Обратится к run-mailcap, если он доступен (пакет run-mailcapAUR).
  • Обратится к mimeopen, если он доступен (пакет perl-file-mimeinfo).
Совет: Чтобы узнать, какой бэкенд будет использовать xdg-open, установите переменную окружения XDG_UTILS_DEBUG_LEVEL=3.

Поскольку xdg-mime полагается на пакет perl-file-mimeinfo для реализации стандарта XDG MIME Applications, если вы не используете среду рабочего стола, вам нужно либо установить пакет perl-file-mimeinfo, либо выбрать другой инструмент открытия ресурсов.

xdg-settings

См. xdg-settings(1).

Ярлык для открытия всех веб-типов MIME с помощью одного приложения:

$ xdg-settings set default-web-browser firefox.desktop

Ярлык для установки приложения по умолчанию для схемы URL:

$ xdg-settings set default-url-scheme-handler irc xchat.desktop

Советы и рекомендации

Обработчики URL схем

Для установки приложений по умолчанию для URL схем необходимо определить приложение по умолчанию для x-scheme-handler/* MIME-типов.

$ xdg-mime default firefox.desktop x-scheme-handler/https x-scheme-handler/http