Come posso registrare un protocollo personalizzato con xdg?


21

Stamattina stavo lottando cercando di associare un'applicazione con un protocollo personalizzato, vale a dire emacsclient e org-protocol .

Sto chiamando questo protocollo da un bookmarklet del browser Web e ottengo il seguente comportamento:

In cromo,
viene visualizzata la finestra di dialogo "Avvia applicazione" e chiama xdg-open org-protocol: // ... che termina con l'attivazione di un nuovo frame chromium.

In Firefox,
Ho provato a impostare network.protocol-handler.app.org-protocol su una stringa vuota o sul mio percorso emacsclient, comunque ottengo il seguente messaggio di errore:
"Firefox non sa come aprire questo indirizzo, perché il protocollo (org-protocol) non è associato a nessun programma" senza nemmeno mostrare alcuna finestra di dialogo di selezione delle applicazioni esterne.

Non sto usando alcun ambiente desktop, quindi ho bisogno di farlo funzionare rigorosamente con xdg, tuttavia, nonostante la lettura delle specifiche di mime condivise, ecc, non riesco ancora a capire una configurazione funzionante.


Risposte:


16

Il metodo XDG: Creare un emacsclient.desktop file che gestisce il x-scheme-handler/org-protocol Tipo MIME:

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

(Notare la MimeType= linea sopra, che è per org-protocol: URI.)

Inserisci il file ~/.local/share/applications o /usr/local/share/applications.

Potrebbe essere necessario aprire il file ~/.local/share/applications/mimeapps.list e aggiungi una riga come questa:

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

Aggiungi quello sotto il [Default Applications] sezione.


per me apre ancora una finestra cromata; qualunque altra cosa? (Mi capita di usare fluxbox w / out env desktop simile all'autore originale)
assem

7
È anche possibile raggiungere l'ultimo passaggio tramite xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol, che è probabilmente il modo più ufficiale per farlo.
Adam Spiers

Ci sono altre variabili utili oltre %u? Ad esempio una variabile che esprime solo la parte del dominio o del percorso dell'URI?
Jonathan Neufeld

11

@grawity è quasi corretto, ma ha trascurato due dettagli:

  1. Dopo aver installato il .desktop file, potrebbe essere necessario eseguire manualmente sudo update-desktop-database. (Questo può essere fatto per te se hai installato il .desktop file usando xdg-desktop-menu install emacsclient.desktop )

    Era quello che era necessario per far visualizzare al mio Firefox "Cosa dovrebbe gestire questo protocollo?" dialogo piuttosto che visualizzare semplicemente una pagina di errore.

  2. All'epoca in cui è stata posta questa domanda, c'era un bug in xdg-open che lo ha indotto a consegnare ciecamente gli URL a $BROWSER su desktop "generici" (non KDE, non GNOME, non-Xfce, ecc.) e che produce esattamente il comportamento @julien stava vivendo.

    Dovrebbe essere corretto nelle versioni moderne di xdg-open ma, se il tuo desktop non usa una versione moderna per qualche motivo, ecco il versione di xdg-open I drop in /usr/local/bin per risolvere il problema.


1
l'aggiornamento xdg-open ha funzionato per me, grazie!
George Marques

0

Almeno in Fedora 13 e varie distribuzioni basate su Debian xdg-open apre tutti gli URL che non hanno un file:// schema in un browser se non viene eseguito in un ambiente desktop supportato. Il modo in cui tenta di rilevare quale browser utilizzare dipende dalla distribuzione.

Come xdg-open è solo uno script di shell che puoi facilmente adattare alle tue esigenze.


In effetti, ma è la configurazione necessaria tra xdg-open e xdg-mime che è molto opaco per me, nonostante la lettura dei documenti ...
julien

Se si apre un file: // URI Ubuntu non chiama affatto xdg-mime ma usa run-mailcap se non è in esecuzione con un DE supportato, Fedora 13 prima cerca di trovare l'app predefinita usando xdg-mime e se non lo fa il lavoro ricade su mimeopen. xdg-mime usa il database di informazioni MIME condiviso freedesktop.org/wiki/Software/shared-mime-info
Florian Diesch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.