Skip to content

ETAF

Build complete text applications in Emacs with a web-style model: declarative components, cascade styling and incremental updates.

Declarative components

Compose reusable Components with named bindings and reactive state; the runtime owns re-rendering, identity and lifecycle.

Cascade and computed styles

Style subjects through selectors, specificity and cascade, and read the computed result back instead of setting faces by hand.

Box, Flex and Grid layout

Lay text out with the box model, normal flow, flex and grid, measured down to the pixel.

Incremental updates

Retained rendering publishes only what changed, so an update costs what it changed instead of a full redraw.

NetEase Cloud Music player in Emacs
etaf-ncm: liked songs, lyrics and the queue
WeChat Reading client in Emacs
etaf-weread: the shelf and a book's progress, contents and notes
Markdown reading view beside its source in Emacs
etaf-md-preview: the source beside the rendered view
Telegram client in Emacs
etaf-telega: chats beside a channel's live messages
ETAF Desktop window manager
etaf-desktop: windows, workspaces and a launcher
Video player in Emacs
etaf-video-player: video as sharp image frames with sound
ASCII video in Emacs
etaf-ascii-video: video rendered as characters
Verdant solitaire in Emacs
etaf-solitaire: Verdant, K+ Klondike solitaire
Chu He xiangqi
etaf-xiangqi: Chinese chess on a native vector board
Iron Tide tank battle
etaf-tanks: Iron Tide, real-time tank battle
Salvage Station game
etaf-salvage: Salvage Station, real-time exploration

This manual documents every public interface of ecss, ekp, ebox, etaf, etaf-ui and etaf-db, with the mechanisms behind them. Read the Introduction first, or jump to Style Properties, the UI Overview, the Glossary and the Symbol Index.