21

Сегодня утром я пытался связать приложение с пользовательским протоколом, а именно с emacsclient и org-protocol.

Я вызываю этот протокол из букмарклета веб-браузера и получаю следующее поведение:

В хром,
Откроется диалоговое окно "Запустить приложение", которое вызывает xdg-open org-protocol://..., что приводит к запуску нового кадра хрома.

В Firefox,
Я попытался установить для network.protocol-handler.app.org-protocol пустую строку или путь к emacsclient, в любом случае я получаю следующее сообщение об ошибке:
«Firefox не знает, как открыть этот адрес, потому что протокол (org-protocol) не связан ни с одной программой», даже не показывая диалог выбора внешнего приложения.

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

3 ответа3

16

Метод XDG: создайте файл emacsclient.desktop который обрабатывает MIME-тип обработчика x- circuit x-scheme-handler/org-protocol :

[Desktop Entry]
Name=Emacs Client
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol;

(Обратите внимание на MimeType= выше, которая предназначена для org-protocol: URI.)

Поместите файл в ~/.local/share/applications или /usr/local/share/applications .

Возможно, вам придется открыть файл ~/.local/share/applications/mimeapps.list и добавить строку, подобную этой:

x-scheme-handler/org-protocol=emacsclient.desktop

Добавьте это в разделе [Default Applications] .

11

@ Grawity почти правильно, но он упустил из виду две детали:

  1. После установки файла .desktop может потребоваться вручную запустить sudo update-desktop-database . (Это может быть сделано для вас, если вы установили файл .desktop с помощью xdg-desktop-menu install emacsclient.desktop)

    Это было то, что требовалось, чтобы мой Firefox отображал «Что должно обрабатывать этот протокол?"диалог, а не просто отображение страницы с ошибкой.

  2. В то время, когда задавался этот вопрос, в xdg-open была ошибка, из -за которой он слепо передавал URL-адреса $BROWSER на "общих" (не KDE, не GNOME, не Xfce и т.д.) Рабочих столах, и это производит именно то поведение, которое испытывал @julien .

    Это должно быть исправлено в современных версиях xdg-open, но если по какой-то причине ваш рабочий стол не использует современную версию, вот версия xdg-open, которую я добавляю в /usr/local/bin для решения проблемы.

0

По крайней мере, в Fedora 13 и различных дистрибутивах на основе Debian xdg-open открывает все URL, которые не имеют схемы file:// в браузере, если он не работает в поддерживаемой среде рабочего стола. То, как он пытается определить, какой браузер использовать, зависит от дистрибутива.

Поскольку xdg-open - это всего лишь сценарий оболочки, вы можете легко адаптировать его к вашим потребностям.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .