xterm

xterm
Original author(s)Mark Vandevoorde
Developer(s)Thomas Dickey
Initial release1984; 40 years ago (1984)
Stable release
394[1] Edit this on Wikidata / 2 September 2024; 60 days ago (2 September 2024)
Repository
Operating systemUnix, Unix-like, MVS OpenVMS, OS/2
TypeTerminal emulator
LicenseMIT/X Consortium License
Websiteinvisible-island.net/xterm/ Edit this at Wikidata

xterm is the standard terminal emulator for the X Window System. It allows users to run programs which require a command-line interface.

If no particular program is specified, xterm runs the user's shell. An X display can show one or more user's xterm windows output at the same time.[2][3] Each xterm window is a separate process, but all share the same keyboard, taking turns as each xterm process acquires focus. Normally focus switches between X applications as the user moves the pointer (e.g., a mouse cursor) about the screen, but xterm provides options to grab focus (the Secure Keyboard feature) as well as accept input events sent without using the keyboard (the Allow SendEvents feature). Those options have limitations, as discussed in the xterm manual.[4]

XTerm originated prior to the X Window System. It was originally written as a stand-alone terminal emulator for the VAXStation 100 (VS100) by Mark Vandevoorde, a student of Jim Gettys, in the summer of 1984, when work on X started. It rapidly became clear that it would be more useful as part of X than as a standalone program, so it was retargeted to X. As Gettys tells the story, "part of why xterm's internals are so horrifying is that it was originally intended that a single process be able to drive multiple VS100 displays."[5]

After many years as part of the X reference implementation, around 1996 the main line of development then shifted to XFree86 (which itself forked from X11R6.3), and it is now maintained by Thomas Dickey.

Many xterm variants are also available, such as hanterm, a variant tailored to Korean speakers, and kterm, which is designed for Japanese speakers.[6] Most terminal emulators for X started as variations on xterm.[discuss][7]

Features

[edit]

Terminal emulation

[edit]

Early versions emulated the VT102 and Tektronix 4014. [8]

Later versions added control sequences for DEC and other terminals such as:

  • VT220: Added in patch 24.[9] Later, in 1998, xterm added support for VT220 features, such as extending its support of ISO-2022 shift functions to provide the National Replacement Character Set feature.
  • VT320: Added in patch 24.[9]
  • VT420: DECSTR (soft terminal reset) was added in patch 34.[10] In 2012, xterm's default emulation was changed to VT420 to allow tmux to assume the corresponding left/right margin support.[11]
  • VT520: Although not officially emulated, parts of VT520 features were implemented.[12] Controls DECSMBV and DECSWBV for setting the margin- and warning-bell volume were added in patch 254.[13]

Customization

[edit]
Example showing xterm's toolbar.
Chart of the 256 colors available in an xterm with color support. XTerm color numbers and RGB values are shown for each. (Updated 2024)

As with most X applications, xterm can be customized via global X resources files (e.g. /usr/lib/X11/app-defaults/XTerm), per-user resource files (e.g. ~/XTerm, ~/.Xresources), or command-line arguments. Most of the command-line options correspond to resource settings, as noted in the manual page.

While the name of the program is xterm, the X resource class is XTerm. The uxterm script overrides this, using the UXTerm resource class.

XTerm normally does not have a menu bar. To access xterm's three menus, users hold the control key and press the left, middle, or right mouse button. Support for a "toolbar" can be compiled-in, which invokes the same menus.

Protocols

[edit]

Supported terminal control functions include:

In addition to protocols used in commercially available terminal machines, xterm added a few protocols that have been adopted by other terminal emulators, such as:

  • Mouse tracking: Support for buttons 4 and 5 was added in patch 120.[14]
  • 16-color terminal protocol: Added in patch 39.[15]
  • 256 colors terminal protocol: Added in patch 111.[16]
  • 88-color terminal protocol: Added in patch 115.[17]
  • Custom color palette: Ability to specifying the RGB values for palette entries was added in patch 111.[16]

Fonts

[edit]

Initially Xterm supported only Portable Compiled Format (PCF) bitmap font until 2000 when Xft library was introduced to support modern stroke-based fonts like TrueType.[18]

See also

[edit]

References

[edit]
  1. ^ "ANN: xterm-394". 2 September 2024. Retrieved 10 October 2024.
  2. ^ Rothman, Ernest E; Jepson, Brian; Rosen, Rich (2008-09-18). Mac OS X for Unix Geeks (Leopard): Demistifying the Geekier Side of Mac OS X. "O'Reilly Media, Inc.". ISBN 978-0596555191.
  3. ^ Wagner, Bill (1998). The Complete Idiot's Guide to UNIX. Penguin. ISBN 978-0789718051.
  4. ^ "xterm(1)". Security. Retrieved December 21, 2021.
  5. ^ Thomas E. Dickey. "XTerm – Frequently Asked Questions (FAQ), Who wrote XTerm?". Archived from the original on 2018-06-24. Retrieved 2018-06-04.
  6. ^ Thomas E. Dickey. "XTerm – Frequently Asked Questions (FAQ), What versions are available?". Archived from the original on 2018-06-24. Retrieved 2018-06-04.
  7. ^ Ric Lister (27 October 1999). "How to change the title of an xterm". 6. Appendix: escapes for other terminal types.
  8. ^ Thomas E. Dickey. "What is XTerm?". Archived from the original on 2018-06-24. Retrieved 2018-06-04.
  9. ^ a b "Patch #24 - 1996/8/11 - XFree86 3.1.2Ee". Archived from the original on 2001-12-22. Retrieved 2008-02-25.
  10. ^ "Patch #34 - 1997/1/5 - XFree86 3.2o". Archived from the original on 2001-12-22. Retrieved 2008-02-25.
  11. ^ "Patch #280 - 2012/06/24". Archived from the original on 2012-09-26. Retrieved 2021-12-21.
  12. ^ "Why not emulate VT520?". Archived from the original on 2012-03-25. Retrieved 2007-01-06.
  13. ^ "Patch #254 - 2010/1/6". Archived from the original on 2011-04-12. Retrieved 2021-12-21.
  14. ^ "Patch #120 - 1999/10/28 - XFree86 3.9.16c".
  15. ^ "Patch #39 - 1997/5/24 - XFree86 3.2Xl".
  16. ^ a b "Patch #111 - 1999/7/10 - XFree86 3.9Pw".
  17. ^ "Patch #115 - 1999/9/18 - XFree86 3.9.16a".
  18. ^ "XTERM - Change Log". invisible-island.net. Retrieved 2022-11-17.
[edit]