Wie kann ich ein benutzerdefiniertes Protokoll bei xdg registrieren?

22

Ich habe heute Morgen Mühe gehabt, eine Anwendung mit einem benutzerdefinierten Protokoll zu verknüpfen , nämlich Emacsclient und Org-Protokoll .

Ich rufe dieses Protokoll über ein Webbrowser-Bookmarklet auf und erhalte das folgende Verhalten:

In Chrom wird
das Dialogfeld "Launch Application" (Anwendung starten) aufgerufen, in dem xdg-open org-protocol: // ... aufgerufen wird, wodurch ein neuer Chrom-Frame ausgelöst wird.

In Firefox
habe ich versucht, das network.protocol-handler.app.org-Protokoll auf eine leere Zeichenfolge oder meinen Emacsclient-Pfad zu setzen. Trotzdem wird die folgende Fehlermeldung angezeigt:
"Firefox kann diese Adresse nicht öffnen, weil die "protocol (org-protocol) ist keinem Programm zugeordnet", ohne dass ein Dialogfeld zur Auswahl einer externen Anwendung angezeigt wird.

Ich benutze keine Desktop-Umgebung, daher muss ich dafür sorgen, dass dies ausschließlich mit xdg funktioniert. Trotz des Lesens der freigegebenen MIME-Info-Spezifikation usw. kann ich eine funktionierende Konfiguration immer noch nicht ergründen.

julien
quelle

Antworten:

18

Die XDG-Methode: Erstellen Sie eine emacsclient.desktopDatei, die den x-scheme-handler/org-protocolMIME-Typ behandelt:

[Desktop Entry]
Name=Emacs Client
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol;

(Beachten Sie die MimeType=obige Zeile für org-protocol:URIs.)

Legen Sie die Datei in ~/.local/share/applicationsoder /usr/local/share/applications.

Möglicherweise müssen Sie die Datei öffnen ~/.local/share/applications/mimeapps.listund eine Zeile wie die folgende hinzufügen:

x-scheme-handler/org-protocol=emacsclient.desktop

Fügen Sie das unter dem [Default Applications]Abschnitt hinzu.

Grawity
quelle
es öffnet mir immer noch ein Chromfenster; noch etwas? (ich benutze zufällig fluxbox ohne desktop env ähnlich orig. author)
assem
8
Sie können den letzten Schritt auch über ausführen. Dies xdg-mime default emacsclient.desktop x-scheme-handler/org-protocolist wahrscheinlich die offiziellere Methode.
Adam Spires
Gibt es noch andere nützliche Variablen %u? Zum Beispiel eine Variable, die nur den Domänen- oder Pfadteil des URI ausdrückt?
Jonathan Neufeld
11

@grawity ist fast richtig, aber er übersah zwei Details:

  1. Nach der Installation der .desktopDatei müssen Sie möglicherweise manuell ausführen sudo update-desktop-database. (Dies kann für Sie erledigt werden, wenn Sie die .desktopDatei mit installiert haben. xdg-desktop-menu install emacsclient.desktop)

    Dies war erforderlich, damit mein Firefox die Meldung "Was sollte mit diesem Protokoll umgehen?" Dialog statt nur eine Fehlerseite anzuzeigen.

  2. Als diese Frage gestellt wurde, gab es einen Fehler, xdg-opender dazu führte, dass URLs blind $BROWSERan "generische" (Nicht-KDE-, Nicht-GNOME-, Nicht-Xfce- usw.) Desktops weitergegeben wurden und genau das Verhalten von @ julien erlebte.

    Es sollte in modernen Versionen von xdg-open behoben werden. Wenn Ihr Desktop jedoch aus irgendeinem Grund keine moderne Version verwendet, sehen Sie sich die Version von xdg-open an, in der ich /usr/local/bindas Problem behebe .

ssokolow
quelle
1
das updaten von xdg-open hat bei mir funktioniert, danke!
George Marques
0

Zumindest in Fedora 13 und verschiedenen Debian-basierten Distributionen öffnet xdg-open alle URLs, die kein file: // -Schema haben, in einem Browser, wenn es nicht in einer unterstützten Desktop-Umgebung ausgeführt wird. Die Art und Weise, wie versucht wird, den zu verwendenden Browser zu ermitteln, hängt von der Verteilung ab.

Da xdg-open nur ein Shell-Skript ist, können Sie es leicht an Ihre Bedürfnisse anpassen.

Florian Diesch
quelle
Tatsächlich aber ist die Konfiguration , die zwischen xdg offenen und xdg-mimt, die ich sehr undurchsichtig ist, trotz Lesen Sie die Dokumentation ... benötigt wird
julien
Wenn Sie eine Datei öffnen: // URI Ubuntu ruft xdg-mime überhaupt nicht auf, verwendet aber run-mailcap, wenn es nicht unter einer unterstützten DE läuft. Fedora 13 versucht zuerst, die Standard-App mit xdg-mime zu finden, und wenn dies nicht der Fall ist die arbeit fällt auf mimeopen zurück. xdg-mime nutzt die Shared MIME Info Datenbank freedesktop.org/wiki/Software/shared-mime-info
Florian Diesch