web-dev-qa-db-fra.com

Comment puis-je enregistrer un protocole personnalisé avec XDG?

J'ai eu du mal ce matin en essayant d'associer une application avec un protocole personnalisé, à savoir emacsclient et org-protocole .

J'appelle ce protocole d'un bookmarklet WebBrowser et je reçois le comportement suivant:

En chrome,
[.____] La boîte de dialogue "Application de lancement" apparaît et appelle XDG-Ouvrir Org-protocole: // ... qui finit par tirer un nouveau cadre de chrome.

Dans Firefox,
[.____] J'ai essayé de définir le réseau.Protocol-handler.app.org-protocole vers une chaîne vide ou mon chemin emacsclient, de toute façon, je reçois le message d'erreur suivant:
[.____] "Firefox ne sait pas comment ouvrir cette adresse, car le protocole (Org-protocole) n'est associé à aucun programme" sans même afficher une boîte de dialogue de sélection d'applications externe.

Je n'utilise aucun environnement de bureau, j'ai donc besoin de rendre ce travail strictement avec XDG, malgré la lecture de l'info mime partagé, etc., je ne peux toujours pas faire comprendre une configuration de travail.

22
julien

@ Grawity est presque correct, mais il a surlevé deux détails:

  1. Après avoir installé le .desktop Fichier, vous devrez peut-être courir manuellement Sudo update-desktop-database. (Cela peut être fait pour vous si vous avez installé le .desktop fichier en utilisant xdg-desktop-menu install emacsclient.desktop)

    C'était ce qui était nécessaire pour faire afficher mon Firefox "ce qui devrait gérer ce protocole?" dialogue plutôt que d'afficher une page d'erreur.

  2. Au moment où cette question a été posée, il y avait un bogue dans xdg-open qui l'a causé à la main aveuglément à la main à $BROWSER sur "générique" (non-KDE, non-gnome, non-xfce, etc.), et qui produit exactement le comportement @ julien connaissait.

    Il devrait être fixé dans des versions modernes de XDG-Open, mais si votre bureau n'utilise pas une version moderne pour une raison quelconque, voici la version de xdg-ouverte Je dépose dans /usr/local/bin résoudre le problème.

11
ssokolow