# xterm

> The classic X Window System terminal emulator, the standard against which others are measured.

Language: C · Platforms: Linux, BSD · Config: Xresources

Features: configurable

- Repository: https://invisible-island.net/xterm/
- Page: https://www.trmn.sh/terminals/xterm

## Overview

xterm is the standard terminal emulator of the X Window System. It was first developed in the mid-1980s to provide DEC VT102 and Tektronix 4014 compatible terminals for programs that cannot use the window system directly, and it has been maintained by Thomas E. Dickey since the mid-1990s. It is for users who want a stable, highly compatible terminal on Linux, the BSDs and other Unix systems.

Emulation is xterm's strength. The man page documents complete VT52 emulation, fairly complete VT102, VT220 complete except for soft fonts, and VT420 as the default level, with rectangle operations and left/right margins. It also implements selected VT320, VT420 and VT520 features and a separate Tektronix 4014 graphics window. ISO/ANSI color uses background color erase, and the preferred terminal description has moved from VT102 (until 1996) to VT220 (until 2012) to VT420 today. The emulation level can be set with `-ti` or the `decTerminalID` resource. Sixel and ReGIS graphics are available when xterm is built with that support. The maintainer also develops `vttest`, a test program for VT100-family terminals.

Configuration uses X resources (the `XTerm` class, set in `~/.Xresources` or app-defaults files) and command-line options. Fonts can be X core bitmap fonts or, through Xft and FreeType, TrueType fonts selected with `-fa` or `faceName`. The `uxterm` wrapper starts xterm in UTF-8 mode, and other encodings are handled through `luit`. Settings can also be changed at runtime from popup menus opened with Ctrl and a mouse button, or from an optional toolbar. Secure Keyboard mode protects password entry. Resources such as `allowWindowOps` control which window-manipulation escape sequences are honored.

xterm keeps to one terminal per window, with each window a separate process, and has no tabs, splits, GPU rendering or ligatures. It relies on the window manager or a multiplexer for those. Several features, including Sixel and ReGIS graphics and FreeType fonts, depend on build-time options, so distribution packages can differ.

## Alternatives

- [Windows Terminal](https://www.trmn.sh/terminals/windows-terminal.md): Microsoft's terminal for Windows that hosts PowerShell, cmd and WSL shells in tabs and panes, with GPU text rendering and JSON settings. (Windows, 105.3k stars)
- [Tabby](https://www.trmn.sh/terminals/tabby.md): Cross-platform Electron terminal with a built-in SSH, Telnet and serial client, saved connection profiles and a plugin system. (Linux/macOS/Windows, 75.3k stars)
- [Alacritty](https://www.trmn.sh/terminals/alacritty.md): Cross-platform OpenGL terminal emulator written in Rust, configured with a TOML file and leaving tabs and splits to a multiplexer like tmux. (Linux/macOS/Windows/BSD, 66.1k stars)
- [Warp](https://www.trmn.sh/terminals/warp.md): Terminal written in Rust with an IDE-style command editor, command output grouped into blocks, and built-in AI agents. (macOS/Linux/Windows, 65.8k stars)
- [Termux](https://www.trmn.sh/terminals/termux.md): Android terminal emulator and Linux environment that installs packages through its own apt repository, no root required. (Android, 64.0k stars)
- [Ghostty](https://www.trmn.sh/terminals/ghostty.md): Terminal emulator written in Zig with GPU rendering and a native UI on each platform: Swift/AppKit on macOS, GTK on Linux. (Linux/macOS, 63.3k stars)
- [Hyper](https://www.trmn.sh/terminals/hyper.md): Electron terminal built on HTML, CSS and JavaScript, themed and extended through npm plugins. (Linux/macOS/Windows, 44.8k stars)
- [Kitty](https://www.trmn.sh/terminals/kitty.md): GPU-rendered terminal written in C and Python, with its own graphics protocol, built-in tabs and splits, and scriptable 'kittens'. (Linux/macOS/BSD, 35.5k stars)

---

Canonical: https://www.trmn.sh/terminals/xterm
