LEEME.md
llimphi
Framework de UI nativa: HAL · raster · layout · text · theme · ui — más widgets y módulos.

llimphi es el motor gráfico que comparten todas las apps del monorepo. Pipeline retained-mode declarativa sobre vello 0.9 + wgpu 29 + taffy 0.12, con shaping parley 0.6 (DejaVu Sans embebida como fallback de símbolos), theme Dark/Light/Aurora/Sunset, accesibilidad AccessKit, HAL multiplataforma (Wayland · X11 · Win32 · Android · Wawa).
Manual de uso: MANUAL.md — referencia completa (bucle Elm, DSL View<Msg>, los 79 widgets y 11 módulos, GPU directo, gotchas) para humanos e IA. Diseño y roadmap: SDD.md.
Filosofía: un widget no se diseña pensando en mockups; se diseña con lo que vello y taffy pueden hacer.
Instalación
# usar como dep en otro crate:
[dependencies]
llimphi-ui = { workspace = true }
llimphi-theme = { workspace = true }
llimphi-widget-... = { workspace = true }
Compatibilidad
- Linux/Wayland — backend principal.
- Linux/X11 — via XWayland (mediante
winit). - macOS / Windows —
winit+wgpu. - Android —
clear-screen-android,vello-hello-android,vello-text-androidpara validar el HAL móvil. - Wawa bare-metal — HAL alterno sobre framebuffer.
Crates: framework
| Crate | Rol |
|---|---|
llimphi-hal | Abstracción de superficie (winit / framebuffer / android). |
llimphi-raster | Rasterizer vello + cache de scenes (feature opt-in hybrid: renderer CPU+GPU sin compute shaders). |
llimphi-layout | Layout taffy + extensiones. |
llimphi-text | Shaping + fonts (parley; DejaVu Sans embebida como fallback). |
llimphi-theme | Themes Dark/Light/Aurora/Sunset + paleta + tokens de motion/elevation. |
llimphi-ui | View<Msg> retained-mode + Elm-arch + puente AccessKit. |
llimphi-compositor | Núcleo declarativo sin winit: árbol View<Msg>, mount taffy, paint a scene, hit-test. |
llimphi-image | Decode PNG/JPEG → peniko::Image. |
llimphi-svg | Puente vello_svg → Llimphi (SVG real, íconos .desktop). |
llimphi-icons | Íconos vectoriales propios (grid 24×24). |
llimphi-motion | Tweens e interpolación (incl. transform afín). |
llimphi-surface | Texturas externas. |
llimphi-workspace | Chasis tipo tmux: splits resizables sobre widget-panes. |
llimphi-gallery | Demo único del kit de elegancia (todos los widgets juntos). |
llimphi-gpu-bench | Bench standalone del path GPU directo. |
llimphi-layer | Corre un App como superficie wlr-layer-shell (barra anclada a un borde) en vez de ventana: así se pintan pata y el daemon de notificaciones. |
llimphi-test | Arnés golden-image headless y determinista — la razón por la que un cambio de UI se puede certificar como texto en vez de mirando una captura. |
llimphi-3d · llimphi-voxel · llimphi-voxel-app · llimphi-voxel-studio | El motor 3D (ray-march de voxels + mallas en una pasada de profundidad), la capa de contenido (worldgen procedural, personajes articulados, director de escenas) y el creador de mundos. |
llimphi-anim | Máquina de estados de animación estilo Rive, clip-agnóstica. |
llimphi-anim-studio | Los documentos serializables que autora el editor de animación (el grafo de estados). |
llimphi-lottie | Puente fino a velato (reproductor Lottie de Linebender). |
llimphi-mesh | Render de mallas deformables (huesos y skinning) a una vello::Scene. |
llimphi-video-plane | Plano de video. |
llimphi-term-graphics | Decodificador agnóstico de protocolos de gráficos de terminal. |
llimphi-wire-view | IR serializable de un subset de View<Msg> — el cable entre guest y host. |
llimphi-wasm-app-sdk | Lado guest de las apps WASM Tier 3: una app implementa WasmApp con su propio modelo y pinta un View<Msg> normal. |
llimphi-wasm-runner | Lado host sobre wasmi: carga un .wasm que sigue ese ABI. |
llimphi-wasm-core · -dist · -net · -registry · -open | Distribución por hash de apps WASM: el núcleo puro, la cara con baterías, el transporte P2P sobre Brahman, el puente data-driven a registros públicos y la apertura. |
llimphi-wasm-wasi | Corre apps WASI de consola sobre wasmi — el catálogo no es trampa. |
llimphi-wasm-demo-{counter,form} | Las apps guest de ejemplo. |
Crates: widgets (visuales reactivos)
| Widget | Función |
|---|---|
button | Botón con variantes. |
text-input | Input single-line. |
text-area | Textarea multi-line. |
text-editor | Editor (rope · cursor · undo · highlight · clipboard · find). |
text-editor-lsp | Editor + LSP. |
tree | Árbol jerárquico. |
list | Lista virtualizada. |
tabs | Tabs con cierre. |
splitter | Splitter horizontal/vertical. |
tiled | Tiled window manager dentro de la app. |
slider | Slider con tick marks. |
gallery | Grid de cards. |
card | Card base. |
stat-card | Card para métricas. |
banner | Banner / alerts. |
app-header | Header común de app. |
context-menu | Menú contextual (look distintivo). |
theme-switcher | Selector de tema. |
nodegraph | Lienzo de nodos + cables Bezier. |
Y además (catálogo completo con firmas en MANUAL.md §13): avatar · badge · breadcrumb · calendar · carousel · chip · clipboard · color-picker · dock-rail · edit-menu · empty · fab · field · fitted-box · gauge · grid · hero · menubar · modal · navigator · panel · panes · progress · range-slider · rating · scaffold · scroll · segmented · select · shortcuts-help · skeleton · spinner · splash · status-bar · switch · table · terminal · text-editor-core · timeline · toast · tooltip · transport · waveform · wawa-mark · wrap.
Crates: modules (feature funcional con estado)
| Module | Función |
|---|---|
command-palette | Paleta de comandos. |
diff-viewer | Diff side-by-side. |
fif | Find-in-files. |
file-picker | Picker de archivos. |
mini-map | Mini-mapa del editor. |
bookmarks | Bookmarks por archivo. |
symbol-outline | Outline de símbolos LSP. |
plugin-host | Host para plugins WASM. |
shuma-term | Terminal embebida (shell shuma). |
allichay | Renderizador único de configuración declarativa (allichay::Schema → rail + controles). |
selector | Abstracción portátil abrir/guardar (trait Selector: host con PathBuf, Wawa content-addressed). |
Crates: android
| Crate | Rol |
|---|---|
clear-screen-android | Smoke test HAL Android. |
vello-hello-android | Vello hello-world Android. |
vello-text-android | Text shaping Android. |
Demo
En vivo: https://tawasuyu.net/02_ruway/llimphi/demo/ — tour autocontenido tipo prezi: arquitectura, bucle Elm, kit de widgets y pantallazos headless de ~10 apps reales corriendo sobre llimphi (cosmos · pluma · nada · takiy · tullpu · supay · dominium · nahual · shuma…). Espacio / flechas / click para navegar; auto-advance cada 6 s — listo para grabar como video.
Fuente en demo/ (HTML+CSS+JS plano, sin build). Local: python3 -m http.server -d demo.
Consideraciones
- Una sola API:
View<Msg>declarativa. Sin imperativo, sin DOM virtual ajeno. - El mismo árbol corre en Wayland y Wawa: HAL abstrae la superficie, el resto es idéntico.
- Los widgets son puramente visuales; los módulos encapsulan estado + comportamiento.
Para leer más
- Un motor gráfico de cero, enteramente en Rust — por qué existe llimphi, los cuatro caminos hasta los píxeles y lo que todavía falta. Con el recorrido de 15 segundos.
Licencia
Doble licencia, a elección: MIT o Apache-2.0.