En un programa que estoy escribiendo, quiero ofrecer la funcionalidad para abrir el directorio donde se encuentra el archivo que estoy procesando actualmente y seleccionar automáticamente ese archivo (para que el usuario no necesite buscarlo).
Sé que puedo abrir un directorio en el administrador de archivos predeterminado usando
xdg-open /path/to/directory
Sé que puedo abrir un directorio en nautilus y seleccionar un archivo usando
nautilus /path/to/file.txt
Yo pensé que podría utilizar
xdg-mime query default inode/directory
para obtener el administrador de archivos predeterminado y, si es nautilus, llámelo como se muestra arriba. Pero, a pesar de que nautilus es el valor predeterminado en mi sistema ( xdg-open
abre nautilus y también el menú de lugares en el shell gnome), xdg-mime
regresa Thunar.desktop
. (Lo intenté find / -name Thunar.desktop -mount 2>/dev/null
pero no encontré nada).
Además, no sé cómo abrir un directorio y seleccionar un sub directorio en Nautilus (con el enfoque mencionado anteriormente que abriría el subdirectorio).
¿Cómo puedo abrir un directorio en el administrador de archivos predeterminado y seleccionar un archivo en ese directorio (si seleccionar un directorio también fuera posible, sería genial, pero para esta aplicación no es necesario) o al menos encontrar el administrador de archivos predeterminado para que yo pueda puede llamarlo directamente?
mimeapps.list
. ¿Puede explicar en qué consisten estas asociaciones "si después de que se manejan todos los archivos, aún no hemos encontrado una aplicación predeterminada, seleccione la aplicación más preferida (según las asociaciones) que admita el tipo"? ¿Conoces la forma de averiguar qué programa se iniciará automáticamente sin necesidad de volver a implementar este algoritmo?Es posible que desee considerar el uso de dbus para abrir su archivo, ya que rápidamente se está volviendo más popular.
El concepto de un administrador de archivos "predeterminado" solo existe realmente si está centrado únicamente en
xdg-mime
, sin embargo, en dbus land, y de hecho la mayoría de las aplicaciones, la historia toma un giro diferente, y el concepto de un administrador de archivos "predeterminado" deja de existir.Así es como abre un archivo (
/home/me/path/to/folder/or/file
) en el administrador de archivos (¿predeterminado?), Usando dbus:Lo que hace este comando es buscar cualquier servicio dbus que implemente la
org.freedesktop.FileManager1
interfaz y lo llame con la ruta al archivo que desea abrir.La razón por la que pongo un signo de interrogación después del valor predeterminado es porque dbus no respeta el concepto de administrador de archivos "predeterminado"; todo lo que hace es enviar la llamada al primer servicio que encuentra que implementa la interfaz y le permite manejar la operación. Ahora puede ser que la aplicación que elija sea su administrador de archivos "predeterminado", pero eso no siempre es una garantía.
La mayoría de las aplicaciones modernas usarán
dbus
de forma predeterminada y luego recurrirán axdg-mime
si la llamada dbus falla, así que esto es lo que te sugiero que hagas.fuente