Skip to main content

Lexicon

The words used throughout the documentation, with the page that explains each one.

Drawing

TermMeans
CellOne position in the grid. Holds a whole grapheme cluster and one style — not a char. See Text and width
FrameOne complete picture of the screen, composed in memory and written in one call. See Rendering
SurfaceThe cell grid a frame is composed in. See Rendering
RegionA rectangle on the surface with its own coordinates and its own clipping. See Layout
Flow cursorThe row the next AppendLine writes to. See Layout
ClipA scope confining every write to a rectangle, whatever coordinates the writing code uses. See Layout
ColumnThe unit width is measured in. A wide symbol is two. See Text and width
RoleA named entry in the palette — Header, Secondary, Error. Views pick roles, not colors. See Theming
PaletteThe object behind the roles. See Theming

The application

TermMeans
ViewA screen. A plain class implementing IArlecchinoView. See Views and navigation
RouteThe name of a screen — a ViewRoute, which is a string wearing a type. See Views and navigation
ViewKindThe generated class holding one route per view, so routes read like an enum. See Source generator
LocStringThe generated name of one piece of text, resolved by Loc. See Localization
NavigatorWhat shows a route and keeps the history. See Views and navigation
View scopeThe DI scope one screen lives in. See Views and navigation
Frame loopThe thread that drains input, runs the ticker and draws. See The frame loop
Drawing threadThe one thread allowed to touch a view, a widget, an atom or the surface. See The frame loop
Repaint requestThe "this frame is stale" flag the loop waits on. See The frame loop
TickerScheduled work, run between frames on the drawing thread. See The frame loop

Input

TermMeans
BindingA key plus its exact modifiers, and optionally a second combination. See Keyboard
KeymapEvery key the framework itself reacts to, in one object. See Keyboard
CommandA key, a label and something to run — visible to the palette, the hints box and the keys screen. See Commands
View commandThe same, belonging to one screen. See Commands
Palette (the other one)The modal listing commands, opened with :. See Commands
Hints boxThe box in the bottom-right corner listing a screen's keys. See Views and navigation
Keys screenF1 — everything the application answers to. See Keyboard
Focus ringThe cycle of focusable elements inside one view. See Focus

State

TermMeans
AtomOne observable cell of state that asks for a repaint when it changes. See Atoms
Tracked / localWhether an atom's edits enter the undo history. See Atoms
ComputedA derived value that tracks whatever it read. See Atoms
StoreA class of atoms that registers itself. See Stores
Async atomA load in progress, with its status as an atom. See Async atoms
LifetimeThe scoped object that cancels a screen's work when it goes away. See Async atoms
Application stateArlecchinoState — the output line, the modal stack, the picker request. See Application state
Output lineThe last row of the frame, and the newest notification. See Application state
NotificationSomething the application said, kept after the row has cleared. See Diagnostics

Pieces

TermMeans
WidgetSomething that draws into a region and hands back what is left. See Widgets
Interactive widgetA widget that also takes the focus. See Widgets
ModalA dialog that takes every key while it is open. See Modals
Modal stackSeveral open at once, each drawn offset from the one below. See Modals
Modal frameWhat a dialog is handed for as long as it is on screen — where to draw, the words, the keys, how to close. See Modals
FormAtoms rendered as editable rows, each opening the modal that matches its type. See Forms
FieldOne row of a form. See Forms

Words this framework does not have

Worth saying plainly, because they are the first thing a reader coming from another toolkit looks for:

Not hereInstead
Component treeA view draws. There is no tree of nested objects and no reconciliation
Layout engineA view places things itself, with flow calls, absolute calls or regions
Container widgetWidgets do not nest — a composite lays its parts out and routes to them by hand
Data bindingAtoms notify, and a frame reads them fresh
Style sheetA palette of roles
WindowOne frame, one screen. A modal is drawn over it, not beside it
Event bubblingA key is resolved in one documented order