viernes, 21 de diciembre de 2012

Texto de la terminal en color con Jansi

Jansi
Las aplicaciones de terminal o consola ya no son tan habituales en estos tiempos de interfaces gráficas y aplicaciones web pero de vez en cuando puede que necesitemos desarrollar una ya que para ciertas tareas son mucho más simples y rápidas además de poder automatizarse las tareas con scripts de comandos. Las terminales virtuales actuales que existen en Linux, Windows o Mac soportan varios colores. El uso adecuadamente de colores en una aplicación puede ayudar al usuario a identificar e interpretar mejor la información que está viendo.

En Java hay una librería, Jansi, que permite enviar a la consola los códigos de escape ANSI adecuados para cambiar los colores de las letras, del fondo o ponerlas en «negrita» asi como cambiar la posición del cursor o borrrar una linea entre otras cosas. La API de Jansi está formada por unas pocas clases y se aprende a usarla en unos pocos minutos, la clase principal es Ansi y no necesitaremos mucho más.

Veamos como es en la práctica el uso de Jansi con un ejemplo sencillo mediante un proyecto de ejemplo con Jansi alojado en GitHub:

Para construir el proyecto hay que ejecutar en una terminal:

En la carpeta build/distributions se habrá generado el archivo ColorConsola.zip que contendrá la librería de Jansi, la clase de ejemplo compilada y los archivos de linea de comandos para ejecutar la aplicación, basta con que descomprimamos el archivo y ejecutemos ColorConsola o ColorConsola.bat dependiendo de si nuestro sistema operativo es Unix compatible o Windows.
Para ejecutarlo:

El resultado es este:


Para crear ese arte ASCII puedes consultar la entrada Arte usando texto ASCII con FIGlet.

Referencia:
Código fuente de ejemplo Texto de la terminal en color con Jansi
http://jansi.fusesource.org/
http://stackoverflow.com/questions/5762491/how-to-print-color-in-console-using-system-out-println