Quiero usar xdg-open
para abrir irc://
enlaces, ¿cómo puedo hacer el parámetro requerido?
Quiero usar xdg-open
para abrir irc://
enlaces, ¿cómo puedo hacer el parámetro requerido?
Respuestas:
xdg-open básicamente solo busca ver qué entorno de escritorio tiene y luego ejecuta gnome-open, gvfs-open, xfce-open, etc. Consulte a continuación las instrucciones específicas del entorno de escritorio ...
Gnome usa el programa gnome-open que usa gconf para almacenar todo. Por ejemplo, en mi máquina con Ubuntu 10.10 ejecutando gnome-open irc: // blah abre xchat porque xchat incluye un parche de configuración de gconf para agregar un controlador irc: //.
Esto muestra cómo gnome hace esto, con una configuración de gconf en /desktop/gnome/url-handlers/
. Ver xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas
como un ejemplo.
Para KDE, debe mirar los archivos .protocol en / usr / share / kde4 / services /, crear uno nuevo para su nuevo protocolo y ponerlo en ~ / .kde / share / kde4 / services /, si es súper útil, entonces considere agregarlo al paquete como una solución para otros usuarios.
KDE está utilizando kde-open o kfmclient dependiendo de lo que esté disponible y de la versión de KDE que tenga.
XFCE usa un programa llamado exo-open, este programa no tiene ninguna forma de configurarlo o agregar controladores de uri. Ver el código fuente muestra que utiliza archivos de escritorio para especificar solo tres tipos de programas. TerminalEmulator, WebBrowser y EmailClient.
Con XFCE4 (y probablemente también otros) es posible configurar xdg-open para definir un controlador de protocolo personalizado. En algunos tienes que crear / editar los siguientes archivos:
~ / .local / share / aplicaciones / protocolhandler.desktop ~ / .local / share / aplicaciones / mimeapps.list
Se proporciona un ejemplo que agrega un controlador para el protocolo ed2k en stackexchange.com 2 .
Lo describiré con el magnet:
tipo de URI y la transmisión (es decir, caso de bittorent), pero el mismo método se puede aplicar a cualquier esquema o tipo de archivo.
También verifiqué esto con Debian Jessie, y en realidad no tengo una máquina Ubuntu, pero creo que debería funcionar igual (al menos para xdg-open , tenga en cuenta que los administradores de archivos pueden optar por usar una lógica diferente).
Descubra la cadena de tipo MIME. Para los tipos de archivos MIME, puede encontrarlo con el comando de archivo :
$ file -i Broken_Blossoms.webm Broken_Blossoms.webm: video/webm; charset=binary $
Para el archivo anterior, el tipo MIME es video/webm
.
Para los manejadores de URI, el tipo es x-scheme-handler/<scheme>
, donde
<scheme>
es la parte de URI antes de los dos puntos, por ejemplo, "http", "mailto", "irc" o "magnet". Los siguientes son ejemplos de tipos MIME válidos:
x-scheme-handler/http
x-scheme-handler/irc
x-scheme-handler/magnet
x-scheme-handler/mailto
Averigüe el nombre del archivo .desktop de la aplicación.
A menudo no es lo mismo que el nombre "oficial" sino una versión en minúsculas del mismo, o un nombre completamente diferente. Los archivos .desktop instalados viven bajo / usr / share / aplicaciones. Como son archivos de texto normales y contienen el nombre "oficial", el siguiente comando puede ayudarlo:
$ grep "Transmission" -l -r /usr/share/applications /usr/share/applications/transmission-gtk.desktop $
El comando efectivamente significa "listar archivos en este directorio que contienen la palabra 'Transmisión'". Algunas aplicaciones pueden instalarse solo para el usuario, en ese caso la ruta sería
~/.local/share/applications
.
En caso de que tenga una aplicación "extraña" que no tenga el archivo, siempre puede crear una (y quizás enviarla a los desarrolladores de la aplicación). Una manera fácil sería copiar una existente, reescribir los campos que comprenda y eliminar los que no. Consulte la especificación para más detalles.
Realice la asignación con el comando xdg-mime :
$ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet $
Tenga en cuenta que no importa dónde esté realmente el archivo (/ usr / share / aplicaciones, ~ / .local / share / aplicaciones ...), siempre usa solo el nombre , no la ruta completa.
Normalmente, el comando no generará nada, eso está bien. Si desea verificar lo que acaba de hacer o ver lo que está asignado actualmente a cualquier tipo MIME sin abrirlo:
$ xdg-mime query default x-scheme-handler/magnet transmission-gtk.desktop $
Nota 1: si desea consultar otros tipos MIME, puede consultar /etc/mime.types. No contiene todos los tipos en el mundo; por ejemplo, los manejadores de URI, pero podría usarse para una forma "agresiva" de manejar las asociaciones. Por ejemplo:
grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop
asociaría todos los formatos de video conocidos a VLC.
Nota 2: los archivos .desktop a menudo contienen una lista de tipos MIME que afirman poder manejar usando el MimeType
campo. La
página de manual de xdg-mime dice que el archivo .desktop debe reclamar el tipo MIME antes de que funcione el comando mencionado anteriormente, pero para mí parece funcionar incluso si falta el campo. (Quiero decir, la asociación se aplicará y la aplicación se iniciará, si realmente puede manejar el tipo es una pregunta diferente). No estoy seguro de cuál es el inconveniente (tal vez en el futuro el xdg-mime será más restrictivo).
xdg-mime query filetype FILE
es la forma XDG de encontrar tipos mime. 2) También puede editar los valores predeterminados para mantener las cosas más organizadas y respaldarlas más tarde: .config/mimeapps.list
es el archivo.
xdg-mime query filetype xyz.wbem
OTOH da menos información y es mucho más para escribir.
Quería asociar postman
enlaces con mi aplicación Postman instalada manualmente (no con la extensión de Chrome) para poder abrir documentos de Postman desde el navegador de esta manera:
El enlace que quería asociar se ve así:
postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...
Para hacer la asociación hice los siguientes pasos:
/home/andrzej.rehmann/software/postman/
/usr/share/applications/Postman.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
postman
enlace xdg con la aplicación ejecutando:xdg-mime default Postman.desktop x-scheme-handler/postman
He respondido esta configuración si alguien está interesado: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml