RasterExRatatui (RasterExRatatui v0.4.0)

Copy Markdown View Source

Render ExRatatui apps on pixel displays such as e-ink panels, with helpers for Linux framebuffers.

A terminal turns cells into pixels by itself. A bare panel does not, so something has to paint every cell's glyph in its colours, and blit the bitmaps that pixel-mode widgets (ExRatatui.Widgets.Viewport3D, ExRatatui.Widgets.Image) hand to an ExRatatui.CellSession created with a :font_size. This package is that something, in three layers:

┌──────────────────────────────────────────────────────────────┐
│ Surface      use RasterExRatatui.Surface                     │
│              a process that owns a Session and calls push/2  │
├──────────────────────────────────────────────────────────────┤
│ Session      app server + cell session + raster, no process  │
│              handle/2 folds renders into patches             │
├──────────────────────────────────────────────────────────────┤
│ Raster       Grid (cells + regions) → [Patch] | full frame   │
│              Font × Palette × PixelFormat × scale            │
├──────────────────────────────────────────────────────────────┤
│ Device       Framebuffer (fbdev) · Input.Evdev (keyboards)   │
│              or the consumer's own driver (SPI, e-ink, …)    │
└──────────────────────────────────────────────────────────────┘

Where to start