Сегодня утром я пытался связать приложение с пользовательским протоколом, а именно с emacsclient и org-protocol .
Я вызываю этот протокол из букмарклета веб-браузера и получаю следующее поведение:
В chromium
появляется диалоговое окно «Launch Application» и вызывает xdg-open org-protocol: // ..., который завершает работу над новым кадром chromium.
В Firefox
я попытался установить для network.protocol-handler.app.org-protocol пустую строку или путь к emacsclient, в любом случае я получаю следующее сообщение об ошибке:
«Firefox не знает, как открыть этот адрес, потому что протокол (org-protocol) не связан ни с одной программой ", даже не показывая диалог выбора внешнего приложения.
Я не использую какую-либо рабочую среду, поэтому мне нужно, чтобы это работало строго с xdg, однако, несмотря на чтение общей информации MIME и т. Д., Я все еще не могу понять рабочую конфигурацию.
источник
Ответы:
Метод XDG: создайте
emacsclient.desktop
файл, который обрабатываетx-scheme-handler/org-protocol
тип MIME:(Обратите внимание на
MimeType=
строку выше, которая предназначена дляorg-protocol:
URI.)Поместите файл в
~/.local/share/applications
или/usr/local/share/applications
.Возможно, вам придется открыть файл
~/.local/share/applications/mimeapps.list
и добавить строку вроде этой:Добавьте это в
[Default Applications]
разделе.источник
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
, что, вероятно, является более официальным способом сделать это.%u
? Например, переменная, которая выражает только часть домена или пути URI?@ Grawity почти правильно, но он упустил из виду две детали:
После установки
.desktop
файла вам может потребоваться запустить его вручнуюsudo update-desktop-database
. (Это может быть сделано для вас, если вы установили.desktop
файл с помощьюxdg-desktop-menu install emacsclient.desktop
)Это было то, что требовалось, чтобы мой Firefox отображал «Что должно обрабатывать этот протокол?» диалог, а не просто отображение страницы с ошибкой.
В то время, когда был задан этот вопрос, была ошибка, из-за
xdg-open
которой он слепо передавал URL-адреса$BROWSER
на «общие» (не KDE, не GNOME, не Xfce и т. Д.) Рабочие столы, и это приводило именно к поведению @ Жюльен переживал.Это должно быть исправлено в современных версиях xdg-open, но если по какой-то причине ваш рабочий стол не использует современную версию, вот версия xdg-open, в которую я загляну,
/usr/local/bin
чтобы решить проблему.источник
По крайней мере, в Fedora 13 и различных дистрибутивах на основе Debian xdg-open открывает все URL, которые не имеют схемы file: // в браузере, если он не работает в поддерживаемой среде рабочего стола. То, как он пытается определить, какой браузер использовать, зависит от дистрибутива.
Поскольку xdg-open - это всего лишь сценарий оболочки, вы можете легко адаптировать его к вашим потребностям.
источник