ABR Image Viewer
Visor de imágenes privado para Windows, Linux y el navegador, hecho a mi gusto. Su función principal es el mosaico configurable, con varias imágenes a la vez y cada una con su zoom, su desplazamiento y su giro, diseños propios con celdas que se mueven y redimensionan, y autoreproducción por página o por celda. Además, galería con búsqueda, favoritos, metadatos EXIF, atajos reasignables y modo incógnito. La app de escritorio usa Tauri y su instalador ocupa 2 MB.





- instalador de Windows
- 2 MB
- instalador de Windows
- diseños de mosaico de serie
- 8
- diseños de mosaico de serie
- tests (Vitest)
- 177
- tests (Vitest)
- commits
- 261
- commits
Qué hace
- Mosaico configurable. Varias imágenes a la vez, en ocho diseños de serie (de 1x2 a 4x4) o en diseños propios con celdas que se mueven y redimensionan. Cada celda tiene su zoom, su desplazamiento y su giro, y se pueden sincronizar todas.
- Navegar por celda o por página. Con una celda seleccionada, las flechas cambian solo esa imagen. Sin selección, o con Mayús, avanza el mosaico entero.
- Autoreproducción. En vista única o en mosaico, por páginas enteras o solo en la celda seleccionada, con el intervalo que quieras y en orden aleatorio si se activa.
- Galería. Miniaturas guardadas para que carguen al instante, búsqueda por nombre, favoritos con su pestaña, formato y dimensiones de cada imagen.
- Visor. Zoom hacia el cursor, ajustar a la pantalla o al ancho, tamaño real, girar, voltear, pantalla completa y copiar la imagen o su ruta.
- Escritorio. Abre las imágenes con doble clic desde el explorador y carga toda la carpeta. Recuerda las carpetas recientes, mueve a la papelera del sistema y muestra el archivo en el explorador.
- Privado. No sube nada a ningún sitio. Tiene modo incógnito para no guardar la sesión ni las miniaturas.
- Metadatos EXIF agrupados con aviso de GPS, atajos de teclado reasignables, tema claro u oscuro, e interfaz en español, inglés y chino.
Cómo está hecho
Una base de código, dos plataformas
Es una SPA de Nuxt sin servidor. La misma compilación se publica como web instalable en GitHub Pages y se empaqueta con Tauri como app de escritorio para Windows y Linux. Todo lo que cambia entre plataformas (abrir archivos, borrar del disco, mostrar en el explorador) pasa por una única interfaz, NativeBridge, con una versión web y otra de Tauri.
Tauri en vez de Electron
Tauri usa el WebView que ya trae el sistema en vez de meter un Chromium dentro de cada aplicación, y el backend es Rust. Por eso el instalador de Windows ocupa 2 MB y la app consume menos recursos. El backend son cuatro comandos propios: mover a la papelera, mostrar en el explorador, leer la carpeta de una imagen y recibir los archivos con los que se abrió.
Galerías grandes
La galería está virtualizada y un gestor limita a 60 las URLs de imagen vivas a la vez, con prioridad para lo visible, la imagen seleccionada y las celdas del mosaico. Las miniaturas se guardan en IndexedDB y los metadatos EXIF se leen en un Web Worker.
Problemas que resolví
- Un escritorio que funcionaba como la web. Hasta la versión 1.0.3 la app no detectaba que estaba en Tauri, porque en Tauri 2 el objeto
window.__TAURI__solo existe si se activa una opción. Funcionaba porque la versión web también funciona dentro del WebView. - Fotos que no cargaban. Para mostrar archivos locales hacía falta activar el protocolo de assets de Tauri y darle un ámbito; sin eso, las URLs de las imágenes no cargaban.
- Rutas con espacios. Para que el explorador abra la carpeta con el archivo seleccionado hay que llamar a
explorer /select,"ruta". Rust entrecomilla el argumento entero cuando lleva espacios, y asíexplorerno reconoce la orden. Ahora el argumento se pasa tal cual. - Diseños que no se guardaban. Pinia entrega objetos reactivos y IndexedDB no los puede clonar. Diseños, preferencias, atajos y metadatos se convierten a objetos planos antes de guardarse.