fin es una aplicación de línea de comandos y TUI escrita en Rust que actúa como cliente de servidores de música autoalojados compatibles con Jellyfin o Subsonic (Navidrome, Airsonic, Gonic, Astiga, entre otros), detectando automáticamente la variante del servidor en el inicio de sesión. Su objetivo es permitir buscar en la biblioteca, gestionar listas de reproducción y enviar el audio a distintos dispositivos sin necesidad de una interfaz gráfica pesada.
La reproducción local se ejecuta íntegramente dentro del propio binario: la descarga por HTTP, la decodificación mediante la biblioteca symphonia (compatible con MP3, FLAC, AAC, Opus, Vorbis, ALAC y WAV), el remuestreo y la salida de audio se realizan con cpal, de modo que el audio nunca llega a pasar por mpv. mpv solo se invoca cuando se reproduce vídeo. Además, fin puede enviar contenido a cualquier Chromecast descubierto por mDNS en la red local o a cualquier renderizador multimedia UPnP AV (Sonos, Kodi, Roon, televisores Samsung y LG, gmediarender), manteniendo una cola con autoavance gestionada por el cliente.
La interfaz TUI está construida con ratatui y emplea una paleta de colores neón (cian, turquesa y violeta); incluye búsqueda instantánea estilo fzf, navegación con drill-in a nivel de álbum, serie o lista, y pestañas dedicadas a la cola activa con marcador de pista en reproducción. Incorpora modos de reproducción aleatoria y repetición (off/all/one), ReplayGain, crossfade entre pistas con curvas coseno o mezclas DJ aditivas, y un ecualizador de 10 bandas basado en el DSP de Rockbox.
La cola de audio, el estado de aleatoriedad y repetición y la posición exacta dentro de la pista en curso persisten tras reinicios, restaurándose en pausa. La configuración se gestiona mediante flags CLI o un archivo TOML equivalente, con soporte para múltiples servidores y atajos de scripting (por ejemplo, fin play, fin queue --chromecast o fin devices). La instalación se ofrece vía Homebrew, paquetes .deb y .rpm, AUR, tarball precompilado, compilación con cargo desde el código fuente o una Nix flake que trae mpv integrado.
