2 puntos por GN⁺ 2025-06-17 | 1 comentarios | Compartir por WhatsApp
  • Chawan es un nuevo navegador web TUI que funciona en una terminal basada en texto
  • Esta versión 0.2.0 incluye todas las funciones esenciales de la etapa MVP y no presenta errores críticos conocidos
  • Solo requiere como dependencias obligatorias las bibliotecas libssh2, libbrotli y OpenSSL/LibreSSL, y se eliminaron varias dependencias presentes en versiones anteriores
  • También se ofrece como binario estático y paquete .deb para Linux amd64, lo que facilita su distribución e instalación
  • La próxima versión tendrá como objetivo mejorar el rendimiento del módulo de layout y ofrecer una mejor experiencia de UI

Presentación de Chawan 0.2.0

Chawan es un navegador web ligero basado en una interfaz de usuario de terminal (TUI), diseñado como un proyecto de código abierto para facilitar la navegación web en entornos de texto. Esta versión 0.2.0 es la primera versión estabilizada que incorpora todas las funciones principales de la etapa de producto mínimo viable (MVP), y hasta ahora no se han reportado errores críticos importantes.

Distribución e instalación

  • Se ofrece un tarball del árbol de código fuente, y si se desea compilar manualmente, basta con seguir las instrucciones del README
  • Se ofrece una distribución en binario estático para Linux amd64, que puede instalarse fácilmente después de descomprimir el archivo con el comando make install
    • La desinstalación puede hacerse con make uninstall
  • La misma distribución también se ofrece en formato de paquete .deb, por lo que puede instalarse directamente en sistemas basados en Debian

Información para mantenedores de paquetes

  • Las dependencias obligatorias en tiempo de ejecución de Chawan son las siguientes:
    • libssh2
    • libbrotli (incluye libbrotlicommon y libbrotlidec)
    • OpenSSL (3.0 o superior) o LibreSSL (probado en OpenBSD 7.7)
  • zlib, libseccomp, termcap/ncurses y libcurl, entre otras, que se usaban en versiones de desarrollo anteriores, ya no son necesarias y por eso fueron eliminadas de las dependencias
  • Si surge algún problema durante el empaquetado, se recomienda contactar primero al desarrollador antes de aplicar parches, ya que es muy probable que el problema pueda resolverse directamente aguas arriba

Planes a futuro

  • Aunque esta versión 0.2.0 tardó más de lo esperado, se decidió publicarla oficialmente porque ya cuenta con todas las funciones del MVP
  • La rama v0.2 en adelante recibirá solo correcciones de errores, mientras que la incorporación de nuevas funciones continuará en la rama master
  • La próxima versión se centrará en mejorar el rendimiento y la precisión del módulo de layout, además de hacer la UI más amigable para el usuario

Importancia y ventajas del proyecto

  • Chawan es un navegador web optimizado para entornos de terminal, lo que permite acceder a contenido web en servidores y entornos con recursos limitados
  • A diferencia de los navegadores web de texto tradicionales, se distingue por su soporte para protocolos modernos de cifrado y compresión, así como por su enfoque en minimizar dependencias
  • Al ser de código abierto, facilita la expansión y personalización adicionales

1 comentarios

 
GN⁺ 2025-06-17
Comentarios en Hacker News
  • Me da gusto cada vez que veo un proyecto escrito en Nim. Me da la impresión de que Nim es uno de los lenguajes más interesantes, en algún punto entre C/C++ y Python. En comparación con el tamaño de la comunidad de Nim, la productividad de sus usuarios parece alta, y aunque no lo conozco tan bien, siento cierta confianza en que mi impresión sobre Nim es correcta. Me da pena que Nim no haya logrado crecer de forma más masiva.

  • shiomiru, me pregunto cuál sería el mejor recurso para aprender conceptos relacionados con TTY. Agradezco recomendaciones, ya sean gratis o de pago. Sobre TTY conozco la introducción de linusakesson.net, pero reconozco la limitación de que no cubre termcap/terminfo/curses. En otro comentario se menciona el libro O'Reilly's Termcap & Terminfo (también se puede ver en línea aquí).

    • Como usé un módulo de terminal personalizado propio en chawan, no tengo un conocimiento tan profundo del estándar X/Open curses. Para lo relacionado con secuencias de escape reales, considero que el documento ctlseqs.ms de XTerm es un recurso muy útil. También tomé muchas ideas del proyecto notcurses de Nick Black, y recomiendo especialmente sus notas sobre "sprixels".
  • Siempre se agradece una forma nueva que pueda usarse por un rato para experimentar, sin recurrir a otro motor más basado en Chrome. Lo que se presentó hoy me da muchas ganas de probarlo yo mismo después de clases. Como una alternativa muy buena, especialmente en entornos sin sixel, recomiendo carbonyl, el port de terminal de chromium. Su autor original ya no puede desarrollarlo activamente, así que sus funciones son muy limitadas y todavía faltan varias, como atajos de teclado y guardado de archivos. Aun así, su compatibilidad con la Web y lo novedoso que se siente me parecen muy impresionantes. Ojalá alguien con experiencia en Rust retome el proyecto. Cuando lo revisé hace unos meses, no había ningún fork popular.

  • Me encantan este tipo de proyectos. Ojalá hubiera una lista de sitios basados en texto. Personalmente, mis dos favoritos son plaintextsports.com y lite.cnn.com.

  • Está muy bien hecho. Probé compilarlo yo mismo con termux en una Lenovo M8 de 4.ª generación, y solo hace falta instalar Nim. Me impresionó lo limpio que quedó instalado, incluso sin usuario root.

  • Es una implementación realmente hermosa. Tengo ganas de usarla en trabajo real para comprobar hasta dónde se puede llevar. El sitio de HN se ve muy bien.

  • Siempre me he esforzado por hacer que mi sitio web también se vea bien en Links, y ahora siento que apareció un nuevo candidato. Con algo de soporte de CSS, también aumentan las cosas de las que hay que preocuparse, como el espaciado entre elementos. En Links ignoraba por completo margin/padding, así que podía acomodar limpiamente cosas como menús en una sola línea, pero ahora la situación se volvió más complicada.

    • En principio, el objetivo era que "simplemente funcionara" sin configuración adicional, pero en la práctica a veces no pasa. En esos casos, se puede considerar un bug. Si realmente necesitas CSS personalizado para un layout con grid, chawan sí soporta la media query estándar de grid.
  • Es un proyecto realmente genial, y además está hecho en Nim, lo cual merece elogio. Al escribir cha example.com, me confundí porque no entendía para nada cómo usar los comandos básicos (hjkl, etc.). Si presiono números, aparecen en la esquina inferior izquierda, pero fuera de eso no pasa nada. Lo compilé yo mismo en MacOS Sequoia 15.5 Apple Silicon con Nim 2.24. La página web carga bien, pero los comandos no funcionan. Me pregunto si se me está escapando algo o si esto es un bug.

    • Me pasa lo mismo en varios terminales, incluidos Ghostty, iTerm2 y Terminal.app.
  • Me llamó la atención que ya no use termcap/ncurses. Me da curiosidad si eso significa que maneja el terminal directamente.

    • Explicó que Chawan en realidad prácticamente no usaba ncurses, sino termcap. Como ncurses incluye una implementación interna de termcap, eso puede causar confusión. Al principio empezó con termcap porque había usado w3m, pero termcap ahora es una interfaz casi inútil y ni siquiera puede representar true color, que es necesario en terminales modernos. Su única ventaja es que, con suerte, podría funcionar en terminales antiquísimos de los años 80, pero incluso eso le parece de poco valor. En vez de pasarse a terminfo, decidió abandonarlo por completo y adoptar un método basado en consultas al terminal. También tiene una base de datos de terminales integrada, que solo se usa para identificar algunos valores de TERM incompatibles con XTerm. Si el terminal responde correctamente a las consultas, funciona bien sin importar el valor de TERM.
  • Me impresionó que en macOS se pueda compilar fácilmente con un solo comando make. Qué bueno que apareció un reemplazo moderno para elinks.