He estado luchando esta mañana tratando de asociar una aplicación con un protocolo personalizado, a saber, emacsclient y org-protocol .
Llamo a este protocolo desde un bookmarklet de navegador web y obtengo el siguiente comportamiento:
En cromo,
aparece el cuadro de diálogo "Iniciar aplicación", y llama a xdg-open org-protocol: // ... que termina disparando un nuevo marco de cromo.
En firefox,
he intentado configurar el protocolo network.protocol-handler.app.org en una cadena vacía o en la ruta de mi emacsclient, de todos modos
aparece el siguiente mensaje de error: "Firefox no sabe cómo abrir esta dirección, porque protocol (org-protocol) no está asociado con ningún programa "sin siquiera mostrar ningún diálogo de selección de aplicación externa.
No estoy usando ningún entorno de escritorio, así que necesito hacer que esto funcione estrictamente con xdg, sin embargo, a pesar de leer la especificación de información mime compartida, etc., todavía no puedo entender una configuración que funcione.
fuente
Respuestas:
El método XDG: cree un
emacsclient.desktop
archivo que maneje elx-scheme-handler/org-protocol
tipo MIME:(Tenga en cuenta la
MimeType=
línea anterior, que es paraorg-protocol:
URI).Pon el archivo en
~/.local/share/applications
o/usr/local/share/applications
.Puede que tenga que abrir el archivo
~/.local/share/applications/mimeapps.list
y agregar una línea como esta:Agregue eso debajo de la
[Default Applications]
sección.fuente
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
, que es probablemente la forma más oficial de hacerlo.%u
? Por ejemplo, ¿una variable que expresa solo la parte del dominio o la ruta del URI?@grawity es casi correcto, pero pasó por alto dos detalles:
Después de instalar el
.desktop
archivo, es posible que deba ejecutarlo manualmentesudo update-desktop-database
. (Esto puede hacerse por usted si instaló el.desktop
archivo usandoxdg-desktop-menu install emacsclient.desktop
)Eso fue lo que se requería para que mi Firefox mostrara "¿Qué debería manejar este protocolo?" diálogo en lugar de solo mostrar una página de error.
En el momento en que se hizo esta pregunta, había un error
xdg-open
que causaba que entregara URL a ciegas en$BROWSER
escritorios "genéricos" (no KDE, no GNOME, no Xfce, etc.) y que produce exactamente el comportamiento @ julien estaba experimentando.Debería arreglarse en las versiones modernas de xdg-open pero, si su escritorio no está usando una versión moderna por alguna razón, aquí está la versión de xdg-open que uso
/usr/local/bin
para resolver el problema.fuente
Al menos en Fedora 13 y en varias distribuciones basadas en Debian, xdg-open abre todas las URL que no tienen un esquema file: // en un navegador si no se ejecuta en un entorno de escritorio compatible. La forma en que intenta detectar qué navegador usar depende de la distribución.
Como xdg-open es solo un script de shell, puede adaptarlo fácilmente a sus necesidades.
fuente