¿Cómo sabe el comando xdg-open qué aplicación usar para abrir un archivo?

21

Esperaría que el comando xdg-open use la misma aplicación que se abre cuando hago doble clic en el archivo en el administrador de archivos predeterminado, pero esto no siempre es cierto.

Por ejemplo, mi DE es XFCE, mi administrador de archivos es Thunar y mi visor de imágenes predeterminado es Ristretto. Sin embargo, xdg-open example.pngabre el archivo PNG de ejemplo en Pinta. ¿Por qué?

Ivan
fuente

Respuestas:

23

xdg-open es una herramienta independiente del escritorio para configurar las aplicaciones predeterminadas de un usuario. Muchas aplicaciones invocan el comando xdg-open internamente. Dentro de un entorno de escritorio (como GNOME, KDE o Xfce), xdg-open simplemente pasa los argumentos a la aplicación de apertura de archivos de ese entorno de escritorio (por ejemplo, gvfs-open, kde-open o exo-open). lo que significa que las asociaciones se dejan en el entorno de escritorio. Cuando no se detecta un entorno de escritorio (por ejemplo, cuando se ejecuta un administrador de ventanas independiente como, por ejemplo, Openbox), xdg-open utilizará sus propios archivos de configuración.

de archwiki

específico para su pregunta, puede intentar esto para configurar la aplicación predeterminada asociada con el archivo png:

xdg-mime default <ristretto.desktop> image/png

necesita saber cuál es exactamente el nombre del archivo de escritorio de Ristretto. luego, puedes verificarlo con esto:

xdg-mime query default image/png
oxnz
fuente
1
Esto puede considerarse una respuesta formal, pero en realidad no explica el fenómeno que he mencionado.
Ivan
actualizada, por favor, puedes volver a intentarlo
oxnz
Gracias. Y esto es muy divertido: xdg-mime query default image/pngvuelve wine-extension-png.desktop:-)
Ivan
2

@Ivan Eso sucede probablemente, porque no proporcionó el tipo de archivo correcto cuando solicitó la aplicación predeterminada. Importante es cómo xdg llama a ese tipo de archivo específico. Esto se puede descubrir fácilmente ejecutando

xdg-mime query filetype example.png

Como ejemplo, si hago esto con un archivo png específico en mi computadora, vuelve image/x-apple-ios-png. Una vez que haya resuelto el tipo de archivo real, puede ejecutar

xdg-mime query default <new filetype>

y obtenga la aplicación que usa xdg para este tipo de archivo específico. En caso de que no se defina una aplicación para este tipo de archivo, xdg-open verifica si el archivo /etc/debian_versionestá disponible, si este es el caso, se iniciará run-mailcap, que es muy similar a xdg-open e intenta encontrar un programa para abrir el archivo también .

Solo si esto falla también, xdg-open le pedirá al usuario que defina un programa para abrir el archivo.

lauve
fuente
¿No es eso lo que oxnz ya escribió?
Jeff Schaller
oxny solo menciona cómo configurar y verificar la aplicación para un tipo de archivo conocido. Le falta la referencia para xdg-mime query filetype example.pngverificar el tipo de archivo de un archivo específico, porque simplemente suponiendo que un archivo .png también cae en la categoría imagen / png no siempre es correcto. Al observar los comentarios de Ivan , creo que su problema aún no se ha resuelto.
lauve