Copyright © 1996-2022,2023 by Thomas E. Dickey
The xterm program is a terminal emulator for the X Window System. It was originally developed in the mid-1980s to provide DEC VT102 and Tektronix 4014 compatible terminals for programs that cannot use the window system directly.
Each xterm window runs as a separate process. Some may run on remote machines, using the X protocol to display on a local machine, while others may run and display on the same local machine. X allows applications to update their windows independently, but the local machine's keyboard and mouse are shared, i.e., only delivering input events to the window which currently has focus.
This version implements ISO/ANSI colors using the "new" color model (i.e., background color erase). It also implements most of the control sequences for VT220, as well as selected features from other DEC terminals such as VT320, VT420 and VT520.
I decided to work on xterm in early 1995, to support ded and add (and incidentally ncurses) in the X environment. Several people had made modifications to xterm to support color, but none (except for the completely independent rxvt) implemented background color erase. That is rather like preferring MS-DOS to UNIX. Completely mystifying.
Being bogged down in ncurses, I didn't get involved in xterm until the very end of 1995, after working on atac.
I implemented a workable version of colorized xterm just at the point where XFree86 3.1.2B was announced, complete with a color xterm. As luck would have it, they'd incorporated the "old" color model. So I joined the XFree86 project to fix it.
As I learned more about xterm, I realized that it implemented part of VT220 (i.e., the locking shifts for extended character sets). Since a number of people on the Internet are looking for a good VT220 emulator, it seemed a natural follow-on project to make xterm a good VT220 emulator. By the release of XFree86 3.2, I had implemented most of the control sequences, except for a handful (DECSTR, the KAM and SRM modes, the ones pertaining to doublesize and soft characters, and of course, blink).
Programs that run in a terminal (emulator or not) use terminal descriptions to tell them how to use the terminal's capabilities. While xterm and each model of DEC terminal have features not found in the other, xterm is “complete” within the scope of those terminal descriptions. The preferred terminal description for xterm has evolved over time, so that programs can use more advanced features:
For the first ten years of xterm's history (until 1996), the preferred terminal description was based on the VT102.
The following eighteen years (until 2012) preferred a description based on VT220.
Since 2012, the preferred description is based on VT420.
The XTerm FAQ gives more information, showing how to resolve problems with it, as well as contrasting xterm with other terminals.
The CHANGE LOG shows when and why features were added or changed.
See this discussion of the icons used for xterm.
To support xterm, I also work on vttest.
luit allows xterm to support character encodings other than ISO-8859-1 and UTF-8.
X Toolkit provides xterm with support for X resources.
Xft provides xterm with support for TrueType fonts.
Xcursor provides cursor-themes for X applications.
Like vile, xterm works with the different flavors of the Athena widgets.
There are numerous references on the net to xterm. Here are a few of the more interesting ones: