Terminal emulator
lastmod 2026-03-22created 2018-12-2649 edits
A terminal emulator is a program that virtually implements a dumb video terminal with several different display structures. It is generally used as a synonym for shell or text terminal, but the term terminal applies to all remote terminals, including graphical interfaces. A terminal emulator running as an application in a graphical user interface (GUI) is often called a terminal window.
A terminal window gives the user access to a text terminal and all its applications, such as command-line interfaces (CLI) and text user interface applications. These can run on the same computer or on another computer via telnet, ssh, or dial-up. On Unix-like operating systems, it is common to have one or more terminal windows connected to the local computer.
Terminals usually support a set of escape sequences for controlling cursor position, color, and so on. Examples include the family of terminal control sequence standards known as ECMA-48, ANSI X3.64, or ISO/IEC 6429.
Organizations that adopted computer technology early, such as banks, insurance companies, and governments, still use terminal emulators often. They have dozens of old applications running on mainframe computers. The old dumb video terminals used to access mainframes have long fallen out of use, but the applications on the mainframes are still in use. A terminal emulator is sometimes the only way for users to access applications running on older computers.
Categories
- TerminalEmulator:SimplePythonExample - a simple terminal emulator built with pure Python and tkinter
Truecolor
- [Recommended] Color standards for terminal emulators - includes a list of supported terminals.
- Setting up True Color Support for Neovim and Tmux on Mac - jdhao's digital space
- ANSI escape code (Terminal Control Escape Sequences)
You can check it with the following awk command.
awk 'BEGIN{
s="/\\/\\/\\/\\/\\"; s=s s s s s s s s;
for (colnum = 0; colnum<77; colnum++) {
r = 255-(colnum*255/76);
g = (colnum*510/76);
b = (colnum*255/76);
if (g>255) g = 510-g;
printf "\033[48;2;%d;%d;%dm", r,g,b;
printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
printf "%s\033[0m", substr(s,colnum+1,1);
}
printf "\n";
}'
If truecolor is supported properly:
Terminal_emulator_-truecolor-_support.png
If it is not supported, the color boundaries appear sharply, as in the image below:
Terminal_emulator_-truecolor-_not_support.png
- For tmux setup, see tmux#Truecolor.
- For neovim setup, see Neovim#Truecolor.
COLORTERM
VTE, Konsole, and iTerm2 all advertise truecolor support by placing COLORTERM=truecolor in the user's shell environment. This has been in VTE for a while, but it is a relatively new feature in Konsole and iTerm2 and must be enabled at compile time (most packages don't, so you have to compile directly from the git source repository).
The S-Lang library has a check for whether $COLORTERM contains truecolor or 24bit (case-sensitive).
Sometimes you may need to set it yourself:
case $TERM in
iterm |\
linux-truecolor |\
screen-truecolor |\
tmux-truecolor |\
xterm-truecolor ) export COLORTERM=truecolor ;;
vte*)
esac
Projects
- iTerm2
- Alacritty: A cross-platform, GPU-accelerated terminal emulator
- hyper: A terminal built on web technologies
- bterm: cross-platform terminal emulator
- terminator
- Extraterm: The swiss army chainsaw of terminal emulators
- tmux
- Streamhut: stream your terminal
- termux: Android terminal emulator.
- rxvt: rxvt (acronym for our extended virtual terminal) is a terminal emulator for the X Window System, and in the form of a Cygwin port, for Windows.
- rxvt-unicode: Light in resource usage, fast, and more feature-rich (tabs, transparency, Unicode, etc.).
- Ghostty-web - a web terminal that compiles Ghostty to WASM and is compatible with the xterm.js API
Terminal Live Streaming
Entering Unicode characters on Linux
Pressing Shift + Ctrl + u lets you enter Unicode characters such as ë directly.
Inserting emoji
See Emoji#Emoji insertion mode for details.
Character width problem (The Width Problem)
- See the Python wcwidth library.
- State of terminal emulators in 2025: the errant champions | GeekNews
- Terminals have a structural limitation: they must display a wide variety of Unicode characters within a fixed-width grid
- Character width prediction often fails because of combining characters, emoji sequences, Zero-width joiners, and so on
- These errors cause wrong cursor positions and corrupted output, and even distort the input position
- The test results identify the terminals that cause these problems the least
See also
- shell
- carbon - renders source code as pretty images.
- xterm.js
- Command-line argument
- terminfo
- ANSI escape code (Terminal Control Escape Sequences)
- pseudoterminal
- Command Line Tools (Commandline tools)
- Template:List:BasicUnixCommands
- rust-stakeholder - a fancy terminal for looking busy when someone walks by
- WebTUI - a CSS library that brings the beauty of terminal UIs to the browser
- Terminal multiplexer
Favorite site
- Wikipedia (en) Terminal emulator
- State of terminal emulators in 2025: the errant champions | GeekNews
- Alacritty
- Bash
- Carbon
- Computer Sciences
- EDEX-UI
- Emoji
- Forge
- Ghostling
- Ghostty
- GNU Screen
- Huh
- ITerm2
- Itter.sh
- Keyboard technology
- Kitty
- Live Streaming
- Neovim
- Pseudoterminal
- Python:Libraries
- Rio
- Rust-stakeholder
- Rxvt
- Shell
- Starship
- Streamhut
- Teletypewriter
- TERM
- Term.everything
- TerminalEmulator:SimplePythonExample
- Terminfo
- Termux
- Tmux
- TStream
- Ttyd
- Tview
- Twin
- User Interface
- VT100
- WebTUI
- WezTerm
- X Window System
- Xorg
- Zmx