Vamos a hablar un poco sobre Programas “Graficos” basados en consola sin necesidad de entorno Grafico
Se nos puede dar el caso que queremos crear un programa gráfico sin tener que instalar un entorno gráfico completo en nuestro Linux, únicamente usando la terminal y ya. Para eso está Lanterna, una biblioteca de Java que nos permite desarrollar interfaces gráficas basadas en terminal (TUI, por sus siglas en inglés: Text User Interface).
Lanterna es ideal para aquellos que desean crear aplicaciones funcionales, interactivas y atractivas sin recurrir a bibliotecas pesadas o a la dependencia de un entorno gráfico como GNOME o KDE. Todo se ejecuta directamente en la consola, lo que lo hace perfecto para sistemas ligeros, servidores o dispositivos con recursos limitados.
¿Qué es Lanterna?
Lanterna es una biblioteca escrita en Java que proporciona herramientas para crear interfaces de usuario basadas en texto. Es decir, puedes diseñar ventanas, menús, botones, cuadros de texto, listas desplegables y mucho más, todo con un estilo visual retro inspirado en los sistemas de terminal antiguos. Esto no solo es nostálgico, sino también práctico en sistemas donde la terminal es la única interfaz disponible.
Algunas de las características más destacadas de Lanterna incluyen:
- Soporte para múltiples terminales: Lanterna funciona en prácticamente cualquier emulador de terminal moderno, incluyendo xterm, gnome-terminal y terminator, así como terminales de sistemas más antiguos.
- Diseño modular: Ofrece un modelo de programación flexible, permitiendo construir desde interfaces simples hasta aplicaciones complejas.
- Compatibilidad multiplataforma: Al ser Java, puede ejecutarse en cualquier sistema operativo que tenga una JVM instalada, ya sea Linux, Windows o macOS.
- Modo de entrada avanzada: Soporta ratón (si tu terminal lo admite), entrada de teclado avanzada y combinación de teclas.
- Colores y estilos: Aunque se basa en texto, permite el uso de colores y estilos que enriquecen la experiencia del usuario.
¿Por qué usar Lanterna en lugar de otros enfoques?
- Simplicidad: No necesitas instalar ni configurar un servidor gráfico ni preocuparte por las dependencias de librerías gráficas como GTK o Qt. Lanterna se ejecuta directamente sobre la terminal.
- Rendimiento: Dado que se basa en texto y gráficos simples, es extremadamente ligero. Ideal para sistemas antiguos o de recursos limitados.
- Flexibilidad: Perfecto para aplicaciones administrativas, utilidades de servidor, gestores de sistemas o herramientas CLI avanzadas con una interfaz más interactiva que una línea de comandos básica.
- Portabilidad: Un programa creado con Lanterna puede ejecutarse en cualquier terminal compatible sin modificaciones.
"Se nos puede dar el caso que queremos crear un programa gráfico sin tener que instalar un entorno gráfico completo en nuestro Linux, únicamente usando la terminal y ya. Para eso está Lanterna, una biblioteca de Java que nos permite desarrollar interfaces gráficas basadas en terminal (TUI, por sus siglas en inglés: Text User Interface).
Lanterna es ideal para aquellos que desean crear aplicaciones funcionales, interactivas y atractivas sin recurrir a bibliotecas pesadas o a la dependencia de un entorno gráfico como GNOME o KDE. Todo se ejecuta directamente en la consola, lo que lo hace perfecto para sistemas ligeros, servidores o dispositivos con recursos limitados.
¿Qué es Lanterna?
Lanterna es una biblioteca escrita en Java que proporciona herramientas para crear interfaces de usuario basadas en texto. Es decir, puedes diseñar ventanas, menús, botones, cuadros de texto, listas desplegables y mucho más, todo con un estilo visual retro inspirado en los sistemas de terminal antiguos. Esto no solo es nostálgico, sino también práctico en sistemas donde la terminal es la única interfaz disponible.
Algunas de las características más destacadas de Lanterna incluyen:
- Soporte para múltiples terminales: Lanterna funciona en prácticamente cualquier emulador de terminal moderno, incluyendo xterm, gnome-terminal y terminator, así como terminales de sistemas más antiguos.
- Diseño modular: Ofrece un modelo de programación flexible, permitiendo construir desde interfaces simples hasta aplicaciones complejas.
- Compatibilidad multiplataforma: Al ser Java, puede ejecutarse en cualquier sistema operativo que tenga una JVM instalada, ya sea Linux, Windows o macOS.
- Modo de entrada avanzada: Soporta ratón (si tu terminal lo admite), entrada de teclado avanzada y combinación de teclas.
- Colores y estilos: Aunque se basa en texto, permite el uso de colores y estilos que enriquecen la experiencia del usuario.
¿Por qué usar Lanterna en lugar de otros enfoques?
- Simplicidad: No necesitas instalar ni configurar un servidor gráfico ni preocuparte por las dependencias de librerías gráficas como GTK o Qt. Lanterna se ejecuta directamente sobre la terminal.
- Rendimiento: Dado que se basa en texto y gráficos simples, es extremadamente ligero. Ideal para sistemas antiguos o de recursos limitados.
- Flexibilidad: Perfecto para aplicaciones administrativas, utilidades de servidor, gestores de sistemas o herramientas CLI avanzadas con una interfaz más interactiva que una línea de comandos básica.
- Portabilidad: Un programa creado con Lanterna puede ejecutarse en cualquier terminal compatible sin modificaciones.
Ejemplo básico con Lanterna
Para empezar a usar Lanterna, necesitas añadir la biblioteca a tu proyecto. Si estás usando Maven, el siguiente snippet te ayudará:
<dependency>
<groupId>com.googlecode.lanterna</groupId>
<artifactId>lanterna</artifactId>
<version>3.1.1</version>
</dependency>
Si no usas Maven, simplemente descarga el archivo .jar
desde el repositorio oficial de Lanterna en GitHub y añádelo a tu proyecto.
Aquí tienes un ejemplo de código para mostrar una ventana simple con un mensaje:
import com.googlecode.lanterna.TerminalSize;
import com.googlecode.lanterna.gui2.*;
import com.googlecode.lanterna.screen.*;
import com.googlecode.lanterna.terminal.DefaultTerminalFactory;
import java.io.IOException;
public class EjemploLanterna {
public static void main(String[] args) {
try {
// Crear la terminal
Screen screen = new DefaultTerminalFactory().createScreen();
screen.startScreen();
// Crear el panel principal
TerminalSize size = new TerminalSize(30, 10);
Panel panel = new Panel();
panel.setPreferredSize(size);
// Añadir un label al panel
panel.addComponent(new Label("¡Hola, Lanterna!"));
// Crear y mostrar el cuadro de diálogo
BasicWindow window = new BasicWindow("Mi Primera Ventana");
window.setComponent(panel);
MultiWindowTextGUI gui = new MultiWindowTextGUI(screen);
gui.addWindowAndWait(window);
} catch (IOException e) {
e.printStackTrace();
}
}
}
¿Cómo funciona este ejemplo?
- Se inicializa la terminal y se configura el tamaño de la pantalla.
- Se crea un panel principal donde se colocan los componentes como etiquetas o botones.
- Se monta una ventana básica que contiene el panel.
- La ventana se muestra al usuario a través de un gestor GUI basado en texto.
Aplicaciones prácticas
Con Lanterna puedes desarrollar desde simples menús interactivos hasta aplicaciones completas como:
- Gestores de tareas.
- Herramientas de monitoreo de servidores.
- Interfaces para scripts complejos.
- Juegos sencillos basados en texto.
Conclusión
Lanterna es una opción poderosa y versátil para quienes buscan combinar la simplicidad de la terminal con la interactividad de una interfaz gráfica. Si buscas una solución ligera, multiplataforma y fácil de usar para tus proyectos en Java, Lanterna es una excelente elección.
Curioso. En C suelo emplear ncurses, por lo cual realizo todas las “animaciones” ¿Existe algo similar para C?
Muy bue artículo. Solo voy a añadir que en Pyrhon estoy explorando Textual, que es una librería para elaborar TUIs en el propio lenguaje.
Una TUI (Terminal User Interface) es una leve capa gráfica sobre la CLI (Command Línea Interface), permitiendo interactuar con la misma con el puntero del mouse como cualquier aplicación gráfica, pero no deja de correr por terminal.
Realmente me gustó mucho por lo eficaz en relación a recursos utilizados y fluidez del programa sin escatimar en belleza visual.
Me agradan mucho estas alternativas gráficas.
Muy interesante!! Me gustan las aplicaciones de consola, le pegaré un ojo a Lanterna.
Gracias!