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

Jump to content

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

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи 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-Generic`1 | `generic` | –
Cinnamon | `Cinnamon`, `X-Cinnamon` | `deepin` | –
Deepin | `Deepin`, `DEEPIN`, `deepin`1 | `cinnamon` | –
Enlightenment | `ENLIGHTENMENT`1 | `enlightenment` | –
GNOME | `GNOME`2 | `gnome` | `gnome`
GNOME Flashback | `GNOME-Flashback`, `GNOME-Flashback:GNOME`2 | `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-open`1 | 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

Category:

- Freedesktop.org (Русский)