J'ai eu du mal ce matin à essayer d'associer une application à un protocole personnalisé, à savoir emacsclient et org-protocol .
J'appelle ce protocole à partir d'un bookmarklet webbrowser et j'obtiens le comportement suivant:
Dans le chrome,
la boîte de dialogue "Lancer l'application" s'affiche et appelle xdg-open org-protocol: // ... qui finit par déclencher une nouvelle trame en chrome.
Dans Firefox,
j'ai essayé de définir le protocole network.protocol-handler.app.org sur une chaîne vide ou mon chemin emacsclient, de toute façon j'obtiens le message d'erreur suivant:
"Firefox ne sait pas comment ouvrir cette adresse, car le protocol (org-protocol) n'est associé à aucun programme "sans même afficher de boîte de dialogue de sélection d'application externe.
Je n'utilise aucun environnement de bureau, donc je dois faire fonctionner cela strictement avec xdg, cependant, malgré la lecture des spécifications d'informations sur le mime partagé, etc., je ne peux toujours pas imaginer une configuration de travail.
la source
Réponses:
La méthode XDG: créez un
emacsclient.desktop
fichier qui gère lex-scheme-handler/org-protocol
type MIME:(Notez la
MimeType=
ligne ci-dessus, qui concerne lesorg-protocol:
URI.)Mettez le fichier dans
~/.local/share/applications
ou/usr/local/share/applications
.Vous devrez peut-être ouvrir le fichier
~/.local/share/applications/mimeapps.list
et ajouter une ligne comme celle-ci:Ajoutez cela sous la
[Default Applications]
section.la source
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
, ce qui est probablement la manière la plus officielle de le faire.%u
? Par exemple, une variable qui exprime uniquement la partie domaine ou chemin de l'URI?@grawity est presque correct, mais il a négligé deux détails:
Après avoir installé le
.desktop
fichier, vous devrez peut-être exécuter manuellementsudo update-desktop-database
. (Cela peut être fait pour vous si vous avez installé le.desktop
fichier en utilisantxdg-desktop-menu install emacsclient.desktop
)C'est ce qui était nécessaire pour que mon Firefox affiche le message "Que doit gérer ce protocole?" plutôt que de simplement afficher une page d'erreur.
Au moment où cette question a été posée, il y avait un bogue
xdg-open
qui provoquait la transmission aveugle des URL à des$BROWSER
bureaux "génériques" (non-KDE, non-GNOME, non-Xfce, etc.) et qui produisait exactement le comportement @ julien connaissait.Il devrait être corrigé dans les versions modernes de xdg-open mais, si votre bureau n'utilise pas de version moderne pour une raison quelconque, voici la version de xdg-open dans laquelle je tombe
/usr/local/bin
pour résoudre le problème.la source
Au moins dans Fedora 13 et diverses distributions basées sur Debian, xdg-open ouvre toutes les URL qui n'ont pas de schéma file: // dans un navigateur s'il ne fonctionne pas dans un environnement de bureau pris en charge. La façon dont il essaie de détecter le navigateur à utiliser dépend de la distribution.
Comme xdg-open n'est qu'un script shell, vous pouvez facilement l'adapter à vos besoins.
la source