Hace aproximadamente un año comencé una transición de Google Fotos a Immich. Mi frustración llegó cuando algunos videos y fotos aparecieron en la parte superior de la línea de tiempo, y la razón es que los tomé de grupos de WhatsApp donde amigos los compartían. Podría usar simplemente la función incorporada de Immich para corregir la fecha, pero al parecer tomé la misma decisión con Google Photos hace años y ahora me arrepiento de ello.

Así que no, decidí que la fecha y hora deben estar incluidas en los archivos y para hacerlo, usé una herramienta frontend para ExifTool llamada jExifToolGUI (sí, los programadores a veces no somos muy originales). El proyecto original tiene una GUI, pero solo funciona en Windows, por eso usé la alternativa que está escrita en Java y es multiplataforma. Funciona, sí, pero se siente como una herramienta de Windows que resulta extraña en mi sistema Linux. Y no solo eso, realmente me disgusta el aspecto de Windows, así que por mi salud mental necesitaba crear una aplicación nativa para Linux.

jExifToolGUI
jExifToolGUI

He probado varias bibliotecas/frameworks GUI para crear aplicaciones de escritorio, como Tauri, Slint, y Compose Multiplatform. Pero ninguna de ellas realmente cumplió mis necesidades, la más cercana es Compose Multiplatform, pero como quizás hayas notado, realmente me gusta Rust, así que quise intentar desarrollo nativo para Linux usando GTK4.

¿Por qué no QT, podrías preguntar. Bueno, no sé si tiene bindings de Rust, y ni siquiera quiero buscarlo. La razón es simple, QT y el escritorio Plasma están muy cerca de Windows en términos de apariencia.

Plasma desktop
Plasma desktop

Tenía una idea clara, algo simple para un primer lanzamiento. No demasiadas características ni elementos complicados de UI. No, solo un par de campos de texto que permitan al usuario ver y editar la fecha actual, hora y diferencia horaria.

Revisé un poco la documentación de gtk-rs y me di cuenta de inmediato que no sería fácil. Luego encontré una plantilla que aceleraría el desarrollo, pero decidí hacer un fork de una aplicación llamada Switcheroo. Esta aplicación ya tiene funcionalidad de arrastrar y soltar y muestra una miniatura de la imagen.

Una vez que todo funcionaba, todo lo que tenía que hacer era eliminar los elementos de UI que no necesitaba, agregar mis campos de texto, y por supuesto la funcionalidad principal con exiftool funcionando por debajo.

Metamorphosis
Metamorphosis

Funciona tal cual está, aunque no planeo mantenerlo tan simple. Me gustaría implementar un selector de fecha y mostrar algo como Zona Horaria con un selector adecuado en lugar de Offset Time. Mi objetivo es tener dos pestañas, una llamada Básico con este tipo de elementos de UI, y otra pestaña llamada Avanzado con datos crudos disponibles para ser modificados.

Procesar múltiples archivos a la vez es otra cosa que tengo en mente, pero no ahora. Avanzaré en pasos pequeños principalmente porque no estoy usando IA para generar el código. Sí, leíste bien, estoy programando a mano.

Software store
Software store

Ya está disponible para descargar en Flathub, así que solo tienes que buscar “Metamorphosis” en tu tienda de aplicaciones de software.

¿Encuentras útil esta aplicación para ti? Por favor envíame tus pensamientos, solicitudes de características, bugs o todo lo que quieras en un issue de GitHub aquí, o si no te sientes cómodo con GitHub siéntete libre de enviarme un DM en mis redes sociales o un correo aquí: deimoshall.dev@proton.me

Te deseo un buen día y recuerda ser feliz.