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.
quelle
Antworten:
Die XDG-Methode: Erstellen Sie eine
emacsclient.desktop
Datei, die denx-scheme-handler/org-protocol
MIME-Typ behandelt:(Beachten Sie die
MimeType=
obige Zeile fürorg-protocol:
URIs.)Legen Sie die Datei in
~/.local/share/applications
oder/usr/local/share/applications
.Möglicherweise müssen Sie die Datei öffnen
~/.local/share/applications/mimeapps.list
und eine Zeile wie die folgende hinzufügen:Fügen Sie das unter dem
[Default Applications]
Abschnitt hinzu.quelle
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
ist wahrscheinlich die offiziellere Methode.%u
? Zum Beispiel eine Variable, die nur den Domänen- oder Pfadteil des URI ausdrückt?@grawity ist fast richtig, aber er übersah zwei Details:
Nach der Installation der
.desktop
Datei müssen Sie möglicherweise manuell ausführensudo update-desktop-database
. (Dies kann für Sie erledigt werden, wenn Sie die.desktop
Datei 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.
Als diese Frage gestellt wurde, gab es einen Fehler,
xdg-open
der dazu führte, dass URLs blind$BROWSER
an "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/bin
das Problem behebe .quelle
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.
quelle