tawasuyu · Llimphi
¿Qt, GTK, Flutter, Electron? No: un motor gráfico de cero, enteramente en Rust
Llimphi dibuja cada píxel de tawasuyu, incluso dentro de un sistema operativo que arranca sin Linux debajo. Por qué existe, cómo funciona y qué tan cierto es eso de «de cero».
5 min de lecturaPor Redacción Gioser
Cada vez que abres una aplicación, algo tiene que dibujar en tu pantalla cada botón, cada letra y cada ventana, decenas de veces por segundo. Ese algo es un motor gráfico, y casi nadie hace el suyo: la mayor parte del software del mundo se pinta con Qt, GTK, Flutter o Electron. Tawasuyu, la suite de software con nombres en quechua que se escribe en el taller de Gioser, decidió no pedir prestado.
Su motor se llama Llimphi, que en quechua quiere decir color, brillo, pigmento. Con él se dibuja la suite entera: el escritorio, el editor, el reproductor de video, los paneles de control y la interfaz del sistema operativo propio del proyecto. Hoy son 276 piezas de la suite las que se pintan con Llimphi.
Por qué no usar uno que ya existe
Hasta mayo de 2026, tawasuyu se dibujaba con GPUI, el motor del editor Zed. El 26 de mayo lo retiraron por completo, y la razón no fue capricho: el proyecto tiene su propio sistema operativo, wawa, que arranca directamente sobre el hardware, sin Linux debajo. Ningún motor existente sabe dibujar ahí.
Qt, GTK y Flutter dan por hecho que hay un sistema operativo convencional, con su gestor de ventanas, sus fuentes instaladas y su manejo de memoria. Llimphi se diseñó desde el primer día para pintar tanto en una ventana de escritorio como en la memoria de video de un kernel recién encendido. Esa exigencia obligó a escribirlo desde cero.
Qué quiere decir «de cero»
Conviene ser precisos, porque es la pregunta que hace todo programador. Llimphi no reinventó cada pieza. Igual que Flutter se apoya en Skia y GTK en Cairo, Llimphi usa cuatro proyectos libres de la comunidad de Rust para los trabajos más especializados. Lo que es propio es todo lo demás: la forma en que una aplicación describe su pantalla, cómo reacciona a cada clic, los componentes y los caminos para llegar a los píxeles.
| Trabajo | Quién lo hace |
|---|---|
| Hablar con la tarjeta de video | wgpu · comunidad |
| Trazar curvas y rellenos con suavizado | vello · comunidad |
| Calcular dónde va cada caja (flexbox y grid) | taffy · comunidad |
| Componer texto: árabe, chino, emoji, ligaduras | parley · comunidad |
| El ciclo de vida de cada aplicación | Llimphi |
| Componentes, temas, animación, accesibilidad | Llimphi |
| Pintar sin tarjeta de video, dentro del kernel | Llimphi |
| Aislar una aplicación y pintar su dibujo desde afuera | Llimphi |
Las cuatro piezas de la comunidad también están escritas en Rust. Por eso el titular dice «enteramente en Rust» y lo sostiene.
Cómo piensa una aplicación de Llimphi
Llimphi sigue la arquitectura de Elm, un lenguaje conocido por sus aplicaciones que casi no fallan. La idea es simple: la aplicación no modifica la pantalla, sino que la describe. Cada vez que pasa algo, el motor recorre seis pasos:
- inputLlega un clic, una tecla o un gesto.
- updateLa aplicación calcula su nuevo estado.
- viewDescribe cómo debería verse con ese estado.
- layoutEl motor calcula la posición de cada caja.
- rasterConvierte esa descripción en píxeles.
- presentMuestra el cuadro terminado.
Como nadie toca la pantalla directamente, no hay dos partes del programa peleándose por el mismo botón. Es la misma razón por la que este estilo se volvió popular en la web con React, solo que acá corre nativo y sin navegador en el medio.
Un pincel, cuatro caminos hasta tu pantalla
La parte más inusual de Llimphi es que el mismo dibujo puede llegar a la pantalla por caminos completamente distintos, según dónde corra la aplicación. El equipo no se conformó con que «se vea parecido»: puso cada camino lado a lado y contó los píxeles.
Con tarjeta de video
El camino de todos los días en el escritorio.
Es la referencia contra la que se mide el resto.
Solo con el procesador
El que usa el kernel de wawa, que no tiene controlador de video.
Rellenos y capas idénticos bit a bit. El texto con acentos puede variar, porque el kernel solo trae tres fuentes.
Por mensaje
Una aplicación aislada no toca la pantalla: manda su dibujo como mensaje y el sistema lo pinta por ella.
0 píxeles de diferencia en las cuatro escenas de prueba.
Para teléfonos
Un camino que funciona en chips gráficos móviles sin cómputo general, como el Mali-G57.
Ningún píxel difiere en más de 1/255 sobre 19.200.
Que el camino «por mensaje» dé cero diferencia tiene una consecuencia práctica: una aplicación puede vivir encerrada, sin ningún permiso para tocar la pantalla, y aun así verse exactamente igual. Es seguridad que no se paga en apariencia.
Lo que ya trae
- Cerca de ochenta componentes: botones, tablas, editores de texto con varios cursores, grafos de nodos, divisores de paneles, calendarios y más.
- Once módulos que combinan componentes en piezas de aplicación completas.
- Texto de verdad: escritura de derecha a izquierda, caracteres chinos, emoji, ligaduras y métodos de entrada para idiomas asiáticos.
- Accesibilidad: cada elemento puede declarar qué es y cómo se llama, y las pruebas lo consultan como lo haría un lector de pantalla.
- Pruebas contra imagen: una pantalla se compara con su versión aprobada, y cualquier cambio inesperado hace fallar la prueba.
- Un motor 3D de vóxeles que se monta dentro de la misma interfaz, como un componente más.
Lo que todavía no
Un motor que promete demasiado pierde la confianza de quien lo prueba, así que vale decir también lo que falta:
- El camino para teléfonos está probado en hardware real, pero ninguna aplicación publicada lo usa todavía. Las versiones de Android actuales van por otro camino que no funciona en todos los chips.
- Fuera de sus tres fuentes integradas, el texto puede verse distinto en el kernel y en el escritorio. El origen está identificado: sin un sistema operativo debajo, no hay de dónde sacar más fuentes.
- Parte de Llimphi ya está publicada en crates.io, el registro oficial de Rust, pero la publicación está incompleta y algunas piezas recientes todavía no subieron.
Cómo probarlo
Para quien programa en Rust, la entrada es un solo paquete:
cargo add llimphi
El paquete reúne el núcleo, los temas y el motor 3D. Para el resto, la mejor demostración es tawasuyu mismo: cada ventana de la suite es una aplicación de Llimphi.