Kelly Mears

Terminal User Interface

An interface rendered as text in a terminal, and the design conventions that make command-line tools humane.

Graphics & Rendering2 min read223 words13 out · 15 in
also calledTUICLI design

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 color 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. Color, spacing, and restraint go a long way; animation goes further, provided it can be skipped.

See also12

Shell

The interactive command interpreter, and a programming language with unusually sharp edges.

Systems & Tooling24 connections

Keyboard Navigation

Making every interactive affordance reachable and operable without a pointer.

Design & Interface34 connections

Typographic Scale

A constrained set of type sizes and their paired line heights and spacing.

Design & Interface17 connections

Tarot

A 78-card symbolic system used for narrative interpretation, and a well-structured combinatorial vocabulary.

Meaning & Society5 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.

Play & Games11 connections

Environment Variable

A named value in a process's environment, inherited by its children — the standard configuration channel.

Systems & Tooling23 connections

Character Encoding

The mapping between characters and bytes, and the source of a specific family of invisible bugs.

Systems & Tooling31 connections

Plain Language

Writing so that the intended reader can find, understand, and use the information the first time.

Meaning & Society28 connections

Command-Line Interface

Operating a computer by typing commands and reading text replies, the interface inherited from teletypes that remains the fastest, most scriptable, and least discoverable way to control software.

Systems & Tooling14 connections

Pseudoterminal

The kernel device pair that lets a terminal window, SSH session, or tmux pane pretend to be a 1970s hardware terminal, and why programs behave differently when they are not attached to one.

Systems & Tooling12 connections

ANSI Escape Code

The in-band byte sequences, starting with the escape character, that tell a terminal to move the cursor, change color, or clear the screen, inherited from 1970s video terminals and still how every command-line tool draws.

Systems & Tooling12 connections

Terminal Multiplexer

A program that runs many terminal sessions inside one window, splits it into panes, and keeps the sessions alive on a server after the connection drops, so long jobs and remote work survive disconnection.

Systems & Tooling10 connections

Linked from15