Wie kann ich ein benutzerdefiniertes Protokoll bei xdg registrieren?

13090
julien

Ich habe heute Morgen Probleme damit gehabt, eine Anwendung mit einem benutzerdefinierten Protokoll zu verknüpfen, nämlich emacsclient und org-protocol .

Ich rufe dieses Protokoll aus einem Webbrowser-Bookmarklet auf und erhalte folgendes Verhalten:

In Chrom erscheint
der Dialog "Anwendung starten" und ruft das xdg-open org-protocol auf: // ..., wodurch ein neuer Chromrahmen 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. Ich erhalte jedoch die folgende Fehlermeldung:
"Firefox weiß nicht, wie man diese Adresse öffnet Protokoll (org-protocol) ist keinem Programm "zugeordnet, ohne dass ein Dialogfeld zur Auswahl externer Anwendungen angezeigt wird.

Ich verwende keine Desktop-Umgebung, daher muss ich diese Funktion strikt mit xdg ausführen. Trotz Lesen der gemeinsamen MIME-Informationsspezifikation usw. kann ich immer noch keine funktionierende Konfiguration ausloten.

20
http://askubuntu.com/questions/62585/how-do-i-set-a-new-xdg-openssetting Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 8 Jahren 0

3 Antworten auf die Frage

14
grawity

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=Zeile oben, die sich auf org-protocol:URIs bezieht.)

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

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

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

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

es öffnet sich immer noch ein Chromfenster für mich; noch etwas? (Ich verwende zufällig Fluxbox ohne Desktop-Env, ähnlich wie orig. author) assem vor 11 Jahren 0
Sie können den letzten Schritt auch über `xdg-mime default emacsclient.desktop x-schema-handler / org-protocol 'erreichen. Dies ist wahrscheinlich der offiziellere Weg. Adam Spiers vor 9 Jahren 6
Gibt es neben "% u" noch andere nützliche Variablen? Zum Beispiel eine Variable, die nur die Domäne oder den Pfadteil der URI ausdrückt? Jonathan Neufeld vor 6 Jahren 0
11
ssokolow

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

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

    Das war es, was erforderlich war, damit mein Firefox die Meldung "Was sollte dieses Protokoll behandeln?" Anzeigen. Dialog anstatt nur eine Fehlerseite anzuzeigen.

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

    Es sollte in modernen xdg-open-Versionen behoben sein. Wenn Ihr Desktop aus irgendeinem Grund jedoch keine moderne Version verwendet, ist hier die xdg-open-Version, in der ich /usr/local/bindas Problem löse.

Update XDG-Open funktionierte für mich, danke! George Marques vor 9 Jahren 1
0
Florian Diesch

Zumindest in Fedora 13 und verschiedenen Debian-basierten Distributionen öffnet xdg-open alle URLs, die kein file: // -Schema in einem Browser haben, 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 Shellskript ist, können Sie es leicht an Ihre Bedürfnisse anpassen.

In der Tat, aber es ist die Konfiguration, die zwischen xdg-open und xdg-mime benötigt wird, was für mich sehr undurchsichtig ist, obwohl ich die Dokumente gelesen habe ... julien vor 14 Jahren 0
Wenn Sie eine Datei öffnen: // URI Ubuntu ruft xdg-mime nicht auf, sondern verwendet run-mailcap, wenn es nicht unter einer unterstützten DE ausgeführt wird. Fedora 13 versucht zunächst, die Standard-App mit xdg-mime zu finden Die Arbeit fällt auf Mimeopen zurück. xdg-mime verwendet die Shared MIME Info-Datenbank http://freedesktop.org/wiki/Software/shared-mime-info Florian Diesch vor 14 Jahren 0