Как я могу зарегистрировать пользовательский протокол с помощью xdg?

13022
julien

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

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

В chromium
появляется диалоговое окно «Launch Application» и вызывает xdg-open org-protocol: // ..., который завершает запуск нового кадра хрома.

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

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

20
http://askubuntu.com/questions/62585/how-do-i-set-a-new-xdg-open-setting Ciro Santilli 新疆改造中心 六四事件 法轮功 8 лет назад 0

3 ответа на вопрос

14
grawity

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

[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]разделе.

это все еще открывает хромовое окно для меня; что-нибудь еще? (я использую Fluxbox без рабочего стола env похож на ориг. автора) assem 10 лет назад 0
Вы также можете выполнить последний шаг с помощью `xdg-mime default emacsclient.desktop x-circuit-handler / org-protocol`, что, вероятно, является более официальным способом сделать это. Adam Spiers 8 лет назад 6
Есть ли другие полезные переменные, кроме `% u`? Например, переменная, которая выражает только часть домена или пути URI? Jonathan Neufeld 5 лет назад 0
11
ssokolow

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

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

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

  2. В то время, когда задавался этот вопрос, была ошибка, из-за xdg-openкоторой он слепо передавал URL-адреса $BROWSERна «общие» (не KDE, не GNOME, не Xfce и т. Д.) Рабочие столы, и это приводило к точному поведению @ Жюльен переживал.

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

обновление xdg-open у меня сработало, спасибо! George Marques 8 лет назад 1
0
Florian Diesch

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

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

Действительно, но именно конфигурация, которая необходима между xdg-open и xdg-mime, очень непрозрачна для меня, несмотря на чтение документов ... julien 13 лет назад 0
Если открыть файл: // URI Ubuntu вообще не вызывает xdg-mime, но использует run-mailcap, если не работает под поддерживаемым DE, Fedora 13 сначала пытается найти приложение по умолчанию, используя xdg-mime, и если это не так работа возвращается к мимеопен. xdg-mime использует базу данных общей информации MIME http://freedesktop.org/wiki/Software/shared-mime-info Florian Diesch 13 лет назад 0