Terminal User Interface
An interface rendered as text in a terminal, and the design conventions that make command-line tools humane.
A terminal user interface is an application rendered as characters in a terminal — either a full-screen interactive layout or the ordinary output of a command-line program. Both have design, and the conventions are well documented; the Command Line Interface Guidelines is the standard modern reference.
The principles that matter most are about respect for the person and the ecosystem. Human-readable output by default, machine-readable on request. Errors that state what went wrong and what to do about it. Confirmation before anything destructive. Help that is actually helpful. Exit codes that mean something. Configuration that follows platform conventions rather than inventing a location; see XDG Base Directory Specification. And output that degrades gracefully when it is not a terminal — no colour codes into a pipe, no progress spinner in a log file.
Layout in a terminal has its own constraints. Width is unknown until read, so line length has to be derived rather than assumed, or a narrow window destroys the layout. Character widths vary — East Asian characters occupy two columns, combining marks none — so alignment must use display width. Component libraries that bring a declarative model to terminal rendering make this considerably more tractable.
The aesthetic ceiling is higher than most people assume. Colour, spacing, and restraint go a long way; animation goes further, provided it can be skipped.
See also7
Hand-picked in the note itself — the neighbours worth reading next.
Shell
The interactive command interpreter, and a programming language with unusually sharp edges.
Systems & Tooling15 connections
Character Encoding
The mapping between characters and bytes, and the source of a specific family of invisible bugs.
Systems & Tooling10 connections
Plain Language
Writing so that the intended reader can find, understand, and use the information the first time.
Meaning & Society14 connections
Keyboard Navigation
Making every interactive affordance reachable and operable without a pointer.
Design & Interface12 connections
Typographic Scale
A constrained set of type sizes and their paired line heights and spacing.
Design & Interface10 connections
Tarot
A 78-card symbolic system used for narrative interpretation, and a well-structured combinatorial vocabulary.
Meaning & Society4 connections
Trick-Taking Game
A card-game family in which players contest a series of small rounds, and a source of unusually clean rule systems.
Graphics & Games9 connections
Related1
Nearby in the graph rather than deliberately chosen. Looser, sometimes surprising.
Linked from10
Notes elsewhere in the wiki that reach for this one.
- Character EncodingSystems & Tooling
The mapping between characters and bytes, and the source of a specific family of invisible bugs.
- DotfilesSystems & Tooling
A tracked repository of personal configuration, making a machine setup reproducible.
- Environment VariableSystems & Tooling
A named value in a process's environment, inherited by its children — the standard configuration channel.
- Keyboard NavigationDesign & Interface
Making every interactive affordance reachable and operable without a pointer.
- Plain LanguageMeaning & Society
Writing so that the intended reader can find, understand, and use the information the first time.
- ShellSystems & Tooling
The interactive command interpreter, and a programming language with unusually sharp edges.
- TarotMeaning & Society
A 78-card symbolic system used for narrative interpretation, and a well-structured combinatorial vocabulary.
- Trick-Taking GameGraphics & Games
A card-game family in which players contest a series of small rounds, and a source of unusually clean rule systems.
- Typographic ScaleDesign & Interface
A constrained set of type sizes and their paired line heights and spacing.
- XDG Base Directory SpecificationSystems & Tooling
A convention placing configuration, data, cache, and state in defined directories rather than the home directory.