Comparar con Nautilus Compare

Una de las operaciones mas habituales que termino haciendo cuando estoy trabajando en alguna aplicación es comparar. Si, como lo has leído, comparar. Básicamente comparo archivos de texto. No solo entre las diferentes versiones del código que estoy implementando, sino también con otras aplicaciones similares. Por ejemplo, algo que suelo hacer con relativa frecuencia es utilizar el código de una extensión que haya implementado en Nautilus, para hacer una nueva. Pero no solo esto, sino también cuando realizo una modificación en alguna aplicación, esta modificación la suelo aplicar en otras. Para esto, resulta imprescindible utilizar una aplicación como Meld, que te pone las cosas muy fáciles. Pero no solo Meld, también la extensión Nautilus Compare, te lo pone también muy fácil. Esta extensión te permite desde el propio gestor de archivos, ya sea Nautilus, Nemo o Caja poder comparar de forma sencilla dos o tres archivos o directorios.

Nautilus Compare

Comparar con Nautilus Compare

Sinergias

Antes de explicarte sobre esta extensión de Nautilus, Nemo y Caja, quería explicar esto que he comentado en la introducción. Quería enmarcarlo en las sinergias de la programación.

Me he dado cuenta durante estos años, que implementar varias aplicaciones en paralelo, tiene sus ventajas e inconvenientes. Por un lado, está el problema de que llevar varias aplicaciones a la vez, obliga a mantener estas aplicaciones. Y esto que a primera vista, podría parecer que no representa trabajo, si que lo lleva. Al final, los lenguajes de programación evolucionan con el paso del tiempo. Y no solo esto, sino también el framework, bajo el que trabajas también evoluciona. De esta forma, si no mantienes tu aplicación actualizada, tanto con el framework, como con el lenguaje, terminará por convertirse en una aplicación obsoleta.

Sin embargo, salvado este escollo, es realmente interesante llevar varias aplicaciones en paralelo, porque aprovechas las sinergias. Al implementar una funcionalidad en una, puedes aplicar esta misma funcionalidad en otra. Si detectas un error en una, puedes corregirlo en otra, simplemente por la tecnología es la misma.

Así, si vas a implementar diferentes aplicaciones, te resultará tremendamente útil, una herramienta como Meld. Porque comparando una versión de tu software, con otra versión, o una aplicación con otra, detectarás fácilmente donde acometer los cambios o corregirlos.

Sobre Nautilus Compare

Hace unos días leí sobre una extensión que ha desaparecido del catálogo de extensiones que hay disponibles a lo largo y ancho de internet. Creo recordar, que esta extensión estaba disponible desde los repositorios oficiales de Ubuntu. Sin embargo, con aquello de cambiar de versión de Python, migrando de la 2 a la 3, muchas de estas extensiones, se han caído por el camino.

La cuestión es que esta extensión es relativamente sencilla, porque lo único que hace es permitirte iniciar Meld, directamente desde el gestor de archivos, a partir de 2 o 3 archivos o directorios que tengas seleccionado.

No es que sea nada del otro mundo. Siempre podrías abrir Meld y luego abrir los archivos, pero, ¿porque hacerlo así?, ¿porque no recurrir a una extensión que te facilite la vida?.

Respecto a las diferentes alternativas que he visto para esta extensión, a lo largo y ancho de Internet, he introducido dos modificaciones, que conforme he explicado en esto de las sinergias de la programación, estoy aplicando no solo a otras extensiones, sino también a otras aplicaciones.

Extraer la ruta

Uno de los cambios interesantes es extraer la ruta de los archivos a comparar. En general lo que he encontrado es que habitualmente se obtiene la ruta, en el método get_file_items convirtiendo a texto y extrayendo la parte derecha.

Sin embargo, la cuestión es que los elementos devueltos en este método son del tipo FileInfo. Este tiene un método muy interesante get_location que te devuelve un objeto del tipo Gio.File, y a partir de aquí, es tan sencillo como obtener la ruta con get_path.

Inyección de código

Una de los problemas de llamar otros scripts o binarios desde una aplicación de Python, es que puede ser susceptible de una vulnerabilidad. Básicamente se puede inyectar código en nuestra aplicación, para realizar algo que no deseamos.

Para evitar este problema, he cambiado el módulo subprocess por el módulo plumbum. Esta librería no solo te permite ejecutar comandos locales, sino también remotos, a través de SSH, y otras características que resultan realmente interesantes.

Uso y funcionamiento de Nautilus Compare

Esta extensión de Nautilus, Nemo y Caja, es tremendamente sencilla de utilizar. Una vez instalada, tan solo tienes que seleccionar aquellos dos o tres archivos o directorios que quieras comparar, y seleccionar la opción adecuada del menú contextual.

Indicarte que si no tienes seleccionado dos o tres archivos, o directorios, esta opción de comparar no aparecerá en el menú contextual. Ahora, estoy pensando, que esta característica, puede que no sea la mas adecuada. Quizá sería mas interesante que la opción apareciera pero que no estuviera disponible. Aunque de igual forma esto puede resultar frustrante para el usuario final… tendré que investigarlo.

Una ayuda para comparar con Nautilus Compare

Instalación

Para instalar esta extensión debes elegir entre las diferentes variantes, en función del gestor de archivos que estás utilizando. Así en el caso de que estés utilizando Nautilus, las instrucciones son las siguientes,

sudo add-apt-repository ppa:atareao/nautilus-extensions
sudo apt update
sudo apt install nautilus-compare

En el caso de Nemo, las instrucciones serán,

sudo add-apt-repository ppa:atareao/nemo-extensions
sudo apt update
sudo apt install nemo-compare

Y por último, en el caso de que estés utilizando Caja, las instrucciones serán las siguientes,

sudo add-apt-repository ppa:atareao/caja-extensions
sudo apt update
sudo apt install caja-compare

En el caso de que no le encuentres utilidad a esta extensión, te hayas cansado de ella, o simplemente ya no la utilices, desinstalarla es tan sencilla como ejecutar las siguientes instrucciones,

sudo apt remove nautilus-compare
sudo add-apt-repository ppa:atareao/nautilus-extensions --remove

Solo te he puesto las instrucciones necesarias para el caso de la extensión de Nautilus. Sin embargo, las instrucciones serán muy similares par el caso de Nemo o Caja.

Conclusiones

Como ves, se trata de una extensión tremendamente sencilla, pero a la vez muy cómoda. Esto de poder comparar directamente desde el menú contextual de tu gestor de archivos es algo realmente práctico.

De cualquier forma, cualquier idea o sugerencia es siempre bienvenida. De esta forma, si tienes alguna recomendación para mejorar esta extensión, no dudes en ponerte en contacto conmigo y veremos como implementarla.


Imagen de portada de Amir-abbas Abdolali en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *