Aunque algunos entornos de escritorio como Gnome, KDE o Cinnamon ofrecen un panel amigable (ver ejemplo de Cinnamon) para modificar las aplicaciones predeterminadas del sistema, este tipo de paneles suelen quedarse cortos al ofrecer opciones avanzadas respecto a diversos tipos de archivos.
El secreto de la definición de aplicaciones predeterminadas no es más que asociación por MIME Types. Los MIME Types son cadenas de texto que describen el contenido de un determinado archivo, cuyo origen puede ser trazado hacia los primeros dias del protocolo SMTP
En sistemas Linux las asociaciones entre tipo de archivo <-> aplicación predeterminada suelen construirse en base a los archivos .desktop almacenados en /usr/share/applications cuyo atributo MimeType describe los tipos de archivos soportados por el programa, para dar un ejemplo véase el archivo .desktop de Easytag.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [Desktop Entry] Name=EasyTAG GenericName=Sound File Metadata Editor GenericName[es]=Editor de metadatos de archivos de sonido GenericName[pt_BR]=Editor de metadados de arquivo de som Comment=Edit sound file metadata Comment[es]=Editar los metadatos de archivos de sonido Comment[pt_BR]=Edite metadados de arquivo de som # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! Keywords=mp3;tag;audio; Keywords[es]=mp3;etiqueta;sonido; Keywords[pt_BR]=mp3;tag;etiqueta;áudio;audio;som; Type=Application Icon=easytag Categories=GTK;AudioVideo;AudioVideoEditing;Audio; MimeType=inode/directory;audio/x-mp3;audio/x-mpeg;audio/mpeg;application/ogg;audio/x-vorbis+ogg;audio/x-flac;audio/x-musepack;audio/x-ape;audio/x-speex+ogg;audio/x-opus+ogg; Exec=easytag %F Terminal=false StartupNotify=true |
Una vez que cada aplicación instalada en el sistema dispone de un archivo .desktop, el ejecutable update-desktop-database parsea uno a uno los archivos almacenando el resultado final de asociaciones en /usr/share/applications/mimeinfo.cache y a pesar de que este archivo puede ser modificado, la información sera regenerada con cada actualización de paquetes.
Definiendo prioridades
En ocasiones se hace necesario definir prioridades entre N cantidad de aplicaciones que soportan los mismos archivos. Para esto, entornos compatibles con las especificaciones de Freedesktop buscan estas prioridades en archivos .list como se observa en la siguiente tabla:
Path predeterminado | Usualmente definido como | Objetivo |
---|---|---|
$XDG_CONFIG_HOME/$desktop-mimeapps.list | $HOME/.config/$desktop-mimeapps.list | Prioridad de usuario, por escritorio |
$XDG_CONFIG_HOME/mimeapps.list | $HOME/.config/mimeapps.list | Prioridades de usuarios |
$XDG_CONFIG_DIRS/$desktop-mimeapps.list | /etc/xdg/$desktop-mimeapps.list | Prioridad de sysadmin y distribuciones, por escritorio |
$XDG_CONFIG_DIRS/mimeapps.list | /etc/xdg/mimeapps.list | Prioridad de sysadmin y distribuciones |
$XDG_DATA_HOME/applications/$desktop-mimeapps.list | $HOME/.local/share/applications/$desktop-mimeapps.list | Compatibilidad, por escritorio |
$XDG_DATA_HOME/applications/mimeapps.list | $HOME/.local/share/applications/mimeapps.list | Compatibilidad |
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list | /usr/local/share/applications/$desktop-mimeapps.list and /usr/share/applications/$desktop-mimeapps.list | Específicos de la distribución, por escritorio |
$XDG_DATA_DIRS/applications/mimeapps.list | /usr/local/share/applications/mimeapps.list and /usr/share/applications/mimeapps.list | Específicos de la distribución |
Opción A: Definiendo las prioridades con un administrador de archivos
La forma mas fácil de definir estas prioridades es utilizar administradores de archivos como Nemo o Nautilus donde al hacer click derecho y buscar la opción «Abrir con», se nos ofrece una ventana similar a la siguiente:
Como se observa, esta ventana ofrece la opción de establecer la aplicación como predeterminada, ¿fácil no?
Opción B: Edición manual de archivos .list
Si por alguna razón fuese imposible utilizar los administradores de archivos, es también plausible editar manualmente cualquiera de los archivos .list de la tabla anteriormente mostrada. Es buena practica revisar si existe el archivo en ~/.local/share/applications/mimeapps.list antes de crear un archivo nuevo, ya que la mayoría de entornos de escritorio aun lo utilizan.
Por ejemplo para establecer Nemo como el explorador de archivos predeterminado, bastaría con agregar la siguiente linea al archivo antes mencionado
1 | inode/directory=nemo.desktop; |
Para obtener un listado completo de posibles MIMETypes, puede observarse el contenido del archivo /etc/mime.types
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Interesante post me sera de ayuda
Mozilla/5.0 (X11; Linux i686; rv:40.0) Gecko/20100101 Firefox/40.0
Excelente post vere que desruyo en puppy linux XD
Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Buen artículo, bien documentado y escrito. Gracias por tu tiempo.