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 пытается интегрироваться с вашей средой рабочего стола, вызывая специализированные программы, которые она предоставляет, где это применимо. Выяснение текущей среды ребочего стола происходит так [1][устаревшая ссылка 2023-05-06 ⓘ]:
- Если стандартная переменная окружения 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
|
- Это не среда, зарегистрированная на freedesktop.org.
- Варианты 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][устаревшая ссылка 2023-05-06 ⓘ]:
| Среда | Программа | Пакет |
|---|---|---|
| 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 |
- Также может быть предпринята попытка использования
gioиз пакета glib2.
В общем случае xdg-open:
- Обратится к #xdg-mime, чтобы узнать связанное с ресурсом приложение по умолчанию, прочитает соответствующий
.desktopфайл и запустит прописанную в нём команду. - Обратится к run-mailcap, если он доступен (пакет run-mailcapAUR).
- Обратится к mimeopen, если он доступен (пакет perl-file-mimeinfo).
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