# Ghostling: Terminal mínimo usando libghostty para demostrar la API en C
El equipo de Ghostty ha lanzado un proyecto de demostración de código abierto llamado Ghostling: un terminal monohilo en un solo archivo C que utiliza libghostty-vt para la emulación VT y Raylib para el renderizado. El proyecto demuestra la integración de la biblioteca sin aceleración GPU, centrándose en el análisis de secuencias, gestión de estados y entrada/salida básica.
Arquitectura y componentes clave
Ghostling se basa en libghostty-vt, una biblioteca sin dependencias externas, incluida libc. Maneja el análisis de secuencias VT, posicionamiento del cursor, aplicación de estilos, reflujo de texto, desplazamiento y gestión del renderizador. El renderizado y el bucle de ventana se implementan mediante Raylib con un renderizador 2D, lo que simplifica la demostración y resalta la portabilidad de libghostty.
El proyecto hereda optimizaciones de Ghostty: análisis SIMD, soporte Unicode y uso eficiente de memoria. Libghostty proporciona APIs en C y Zig para embeber en cualquier aplicación, separando la emulación de la interfaz de usuario.
Advertencia importante: Ghostling no es un terminal de producción. Es un ejemplo mínimo viable sin una auditoría exhaustiva del código, destinado al estudio de la API.
Funcionalidades compatibles
El proyecto implementa la funcionalidad principal del emulador de terminal:
- Redimensionado de ventana con reflujo de texto;
- Color de 24 bits y paleta de 256 colores;
- Estilos de texto (negrita, cursiva, subrayado);
- Unicode y clústeres de grafemas multi-codepoint sin artefactos;
- Entrada de teclado con modificadores (Shift, Ctrl, Alt, Super);
- Protocolo de teclado Kitty;
- Seguimiento del ratón (modos X10, normal, botón, cualquier evento);
- Formatos de informe del ratón (SGR, URxvt, UTF8, X10);
- Rueda del ratón para desplazamiento o pasar a la app;
- Barra de desplazamiento con arrastre para desplazar.
Estas funcionalidades cubren escenarios típicos de aplicaciones de shell, demostrando la robustez de libghostty-vt en modo desacoplado.
Diferencias con el Ghostty principal
Ghostty utiliza renderizado GPU y multihilo para un alto rendimiento. Ghostling está simplificado: monohilo con renderizado 2D en CPU. Esto permite probar libghostty en escenarios embebidos donde la GPU no está disponible o el sobrecargo es indeseable. Raylib proporciona soporte multiplataforma sin bibliotecas de ventanas complejas.
Para desarrolladores intermedios/senior, el proyecto sirve como punto de partida para terminales personalizados: añade tu propio renderizador (Vulkan, SDL, lienzo personalizado) sobre libghostty-vt.
Puntos clave
- Libghostty-vt es un motor VT independiente sin renderizado, ideal para embeber;
- Ghostling muestra la integración de un solo archivo de la API en C con Raylib;
- Compatibilidad completa VT: colores, Unicode, ratón, protocolos de teclado;
- Sin dependencias, optimizaciones SIMD, bajo uso de memoria;
- Demostración para prototipado, no para uso diario.
Planes de desarrollo
Los desarrolladores anunciaron una hoja de ruta:
- Protocolo gráfico Kitty para imágenes;
- Soporte para portapapeles OSC;
- Configuración de título de ventana OSC.
Esto ampliará la utilidad para aplicaciones GUI con salida de terminal, como plugins de IDE o clientes de escritorio remoto.
— Editorial Team
Aún no hay comentarios.