Як я можу зареєструвати спеціальний протокол за допомогою xdg?


22

Я сьогодні намагаюся пов’язати додаток із спеціальним протоколом, а саме: emacsclient та org-протокол .

Я закликаю цей протокол із закладки веб-браузера, і я отримую таку поведінку:

У хромі
відкривається діалогове вікно "Запуск програми" і викликає xdg-open org-протокол: // ..., який закінчується запуском нового кадру хрому.

У Firefox
я намагався встановити протокол network.protocol-handler.app.org на порожній рядок або мій шлях emacsclient, інакше я отримую таке повідомлення про помилку:
"Firefox не знає, як відкрити цю адресу, оскільки протокол (org-протокол) не пов'язаний з жодною програмою ", навіть не показуючи діалогового вікна вибору додатків.

Я не використовую жодного робочого середовища, тому мені потрібно змусити цю роботу суворо з xdg, однак, незважаючи на читання загальної інформації про mime тощо, я все ще не можу зрозуміти робочу конфігурацію.


Відповіді:


18

Метод XDG: Створіть emacsclient.desktopфайл, який обробляє x-scheme-handler/org-protocolтип MIME:

[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 w / out desktop env подібний до оригіналу автора)
збирайся

8
Ви також можете досягти останнього кроку через xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol, що, мабуть, є більш офіційним способом зробити це.
Адам Шпієр

Чи є ще якісь корисні змінні %u? Наприклад змінна, яка виражає лише домен або частину шляху URI?
Джонатан Нойфельд

11

@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 щоб вирішити проблему.


1
оновлення xdg-open працювало для мене, дякую!
Джордж Маркес

0

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

Оскільки xdg-open - це лише сценарій оболонки, ви можете легко адаптувати його до своїх потреб.


Дійсно, але саме конфігурація потрібна між xdg-open та xdg-mime дуже непрозора для мене, незважаючи на читання документів ...
julien

Якщо відкриття файлу: // URI Ubuntu взагалі не викликає xdg-mime, але використовує run-mailcap, якщо не працює в підтримуваному DE, Fedora 13 спочатку намагається знайти додаток за замовчуванням за допомогою xdg-mime, і якщо це не відбувається робота спадає на мімеопен. xdg-mime використовує базу даних Shared MIME Info freedesktop.org/wiki/Software/shared-mime-info
Флоріан Дієш,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.