Перейти к содержимому

Xdg open что такое

  • автор:

Шпаргалка по xdg-open

Небольшая заметка про xdg-open . Эта утилита открывает файлы или URI “наиболее подходящим” приложением, как записано в файлах *.desktop .

Увы, как показывает практика, “наиболее подходящим” оказывается нередко какой-нибудь Firefox, что явно не всегда самое удачное решение.

Алгоритм

Выбор осуществляется по достаточно прямолинейному алгоритму.

  1. Во-первых, если удаётся определить текущее окружение рабочего стола, используется аналогичная утилита, специфичная для окружения. Скажем, для Xfce это exo-open и т.п.
  2. Если это не удаётся, используется обобщенный алгоритм.

Обобщенный алгоритм выглядит так:

  1. Проверяется наличие файла и права доступа на чтение.
  2. Если установлена переменная окружения DISPLAY (т.е. если утилита выполняется в рамках сессии X), производится попытка открыть файл приложением, возвращаемым xdg-mime query default . При этом *.desktop -файл ищется в директориях:
    1. $XDG_DATA_HOME/applications (по умолчанию $HOME/.local/share )
    2. $XDG_DATA_DIRS/applications (по умолчанию /usr/local/share и /usr/share )

    Теперь, как работает команда xdg-mime query default .

    1. Просматривается файл ассоциаций “по умолчанию” $XDG_CONFIG_HOME/mimeapps.list , и, если есть, системные $XDG_CONFIG_DIRS/mimeapps.list . Имеет значение только раздел Default Applications (см. ниже)
    2. Просматривается альтернативное расположение файла ассоциаций “по умолчанию” $XDG_DATA_HOME/applications/mimeapps.list , и, если есть, системные $XDG_DATA_DIRS/applications/mimeapps.list .
    3. Просматривается файлы кэша $XDG_DATA_/applications/mimeinfo.cache и умолчаний $XDG_DATA_/applications/defaults.list .
    4. Просматриваются все файлы *.desktop в $XDG_DATA_/applications (включая поддиректории) MimeType . Выбирается вариант с наивысшим InitialPreference , или первый подходящий.
    5. Если ничего не найдено, возвращается ошибка.

    Формат файла mimeapps.list

    mimeapps.list имеет формат секционированного key-value файла (т.е. INI-файла). Нас, как указано выше, в данном контексте интересует только секция Default Applications . Ключом является mime-тип, а значением – название desktop-файла с расширением. Разделитель ключа и значения – символ = . Например:

     [Default Applications] image/jpeg=okular.desktop

    Так же в этом файле есть разделы Added Associations и Removed Associations . В контексте xdg-open они не имеют значения, однако в контексте других приложений (особенно kde4) оказываются важны. Формат совпадает с секциями Default Applications , но в значениях может быть разделённый ; список.

    Замечание

    mimeapps.list в общем случае может иметь префикс, который определяется переменной окружения XDG_CURRENT_DESKTOP . Так же эта переменная окружения используется для определения текущего окружения рабочего стола и использования специфичных для него утилит. Рекомендуется особое внимание к этой переменной.

    Команды xdg-mime

    xdg-mime позволяет узнать mime-тип файла и приложение по умолчанию для открытия данного mime-типа. Кроме того, эта утилита позволяет установить приложение по умолчанию.

    Запросы

    xdg-mime query filetype позволяет узнать mime-тип файла.

    xdg-mime query default – узнать приложение по умолчанию для открытия данного mime-типа.

    Установка умолчаний

    xdg-mime default . позволяет установить приложение по умолчанию для открытия одного или нескольких mime-типов. – это название desktop-файла, который будет использован (без пути, с расширением)

    xdg-mime default okular.desktop image/jpeg image/png

    В случае, если возможно установить окружение рабочего стола, для этого будут использованы средства окружения. Иначе, будут добавлены записи в файл mimeapps.list (первый найденный) в секцию Default Applications .

    Рекомендации

    Всегда устанавливайте переменную BROWSER . Если она не установлена, можно ждать неожиданностей. Можно указывать список, разделённый двоеточием : .

    Используйте xdg-mime default для установки приложений по умолчанию. Если требуется посмотреть список умолчаний, можно посмотреть в файл mimeapps.list , однако редактировать его напрямую в общем случае не рекомендуется.

    Как указать xdg-open что использовать для открытия ссылок определенного протокола?

    Раньше, когда я использовал Opera 12 я просто добавил протокол icedit указал что открывать их надо скриптом komodo-launcher который преобразовывал ссылку и передавал ее Komodo Edit, так чтобы он удаленно открывал этот файл. Как запилить такое в другом браузере, который дергает xdg-open для этих ссылок?

    Suntechnic ★★★★★
    17.11.14 02:27:22 MSK

    Как настроить xdg-open для открытия внешнего приложения по ссылке в браузере?

    Моя проблема заключается в том, что ни один браузер в linux-mint не может открывать steam-ссылки (хотя другие внешние приложения открываются нормально). Предположим, я хочу установить игру, нажимаю на соответствующую кнопку, и браузер пытается открыть ссылку наподобие «steam://run/449140» при помощи xdg-open. В результате получаем ошибку:

    gvfs-open: steam://run/449140: ошибка открытия адреса: Указанный адрес не поддерживается

    Но если запустить ту же ссылку через steam ( steam steam://run/449140 ), то всё пройдёт успешно и откроется окно с установкой игры. В общем, мне нужно как-то либо объяснить браузеру, что такие ссылки открываются при помощи steam, а не xdg, либо настроить xdg, чтобы тот запускал ссылку через steam. Я пробовал гуглить этот вопрос и нашёл вот что: How do I set a new xdg-open setting?. Добавил при помощи gconf новую ветку /desktop/gnome/url-handlers/steam и настроил её, но это не помогло. Возможно, мне нужно править файл ~/.local/share/applications/mimeapps.list , но я совершенно не соображаю как.

    xdg-open

    Opens a file or URL in the user’s preferred application. More information: https://man.archlinux.org/man/xdg-open.1.

    • Open the current directory in the default file explorer:
    • Open an URL in the default browser:
    • Open an image in the default image viewer:
    • Open a PDF in the default PDF viewer:

    Изображение Шпаргалка по командам Linux, FreeBSD и MacOS

    Операционная система Linux (Линукс или Лайнакс) во многом похожая на проприетарную Unix. Линукс распространён на серверах, что означает, что изучая её вы улучшаете свой навык администрирования, DevOps и программирования. Открытая …

    Фото Linux

    Заметки об Операционной Системе FreeBSD (фри бсд). Один из старейших Unix (Юникс), прародитель многих ОС, а также по мнению многих — самая свободная операционная система. Разработан в рамках общего проекта …

    Фото FreeBSD

    Трюки Bash

    Полезные заметки по работе с командной строкой: bash и прочие *sh. Однострочники, скрипты, позволяющие решать большие и малые задачи администрирования и настройки Юникс систем. Zsh для современного MacOS, Bash для …

    Фото Трюки Bash

    Терминал/Консоль

    Команды и инструкции терминала (консоли) Linux, MacOS, Windows и прочих операционных систем. Трюки и особенности командных оболочек, скрипты для администрирования Unix. Программирование и скриптование Windows и Linux, тонкая настройка Macos. …

    Фото Терминал/Консоль

    Также может быть вам интересно:

    • Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable
    • Пример своей консольной команды в Django проекте
    • Как на Bash посчитать число строк в проекте (директории)
    • И снова sudo, и снова «решето»
    • О многозадачности и планировщике задач (шедулер)

    Свежее на «Цифре»
    MessageId или как дебажить систему с минимумом проблем
    Программы, 09.09.2023
    Проверочный список для выпуска промышленных приложений с иллюстрациями
    Работа и управление, 30.07.2023
    В Google Pixel и Windows Snipping Tool есть возможность восстановления обрезанных изображений
    Новости, 23.03.2023
    Два подарка «под ёлочку» от Heroes of Might and Magic
    Новости, 25.12.2022
    Вышел Pulsar – редактор кода на основе Atom
    Новости, 25.12.2022
    Ленивый backup PostgreSQL
    Программы, 17.12.2022
    Google анонсировала OSV-Scanner: сканер уязвимостей в программных проектах
    Новости, 16.12.2022

    Фото Найдена уязвимость в утилите ping для FreeBSD

    Найдена уязвимость в утилите ping для FreeBSD

    Во FreeBSD найдена уязвимость, позволяющая выполнить код от пользователя root. Самое забавное, что на этот раз «дыра» была обнаружена в …

    Фото Как запустить программу в терминале в фоне, без вывода какого либо текста

    Как запустить программу в терминале в фоне, без вывода какого либо текста

    Запускаем программу в терминале в фоновом режиме и разбираемся, как и почему это работает в Linux / Unix терминале.

    Фото Как установить часовой пояс в Linux

    Как установить часовой пояс в Linux

    В рамках первичной настройки Операционной Системы важно установить и по какому времени вы живёте, ведь при следующем обновлении времени через …

    Фото Как найти самые большие папки и файлы в Linux

    Как найти самые большие папки и файлы в Linux

    Когда кончается место на жестком диске, возникает закономерный вопрос: на что же оно было потрачено, какие файлы разрослись больше положенного?

    Фото Команда grep – полезные ключи и примеры использования

    Команда grep – полезные ключи и примеры использования

    У команды «grep» довольно много различных особенностей. особенно, если учесть, что с английского это «решето» – а что может войти …

    Фото Как создать неизменяемый файл в Linux / MacOS / FreeBSD

    Как создать неизменяемый файл в Linux / MacOS / FreeBSD

    Само собой, root может всё (если введёт пару команд), однако, это вполне легальный способ запретить изменение файла.

    Фото Как удалить все Docker образы и контейнеры

    Как удалить все Docker образы и контейнеры

    Не всегда нужно удалять всё, но объяснение данного «рецепта» объяснит как в целом удалять образы и контейнеры.

    Bash < потоки ввода >вывода && управляющие конструкции || коротко о главном

    Небольшая заметка о конструкциях Bash, в которых путается большинство новичков. А именно: >,

    Фото Лучше плохо, но сейчас. Взгляд на пути развития ПО

    Лучше плохо, но сейчас. Взгляд на пути развития ПО

    Сейчас такие языки как Perl и Ruby чувствуют себя не лучшим образом. Но ещё 10 – 15 лет назад они …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *