Terminal emulator: Difference between revisions

Content deleted Content added
GX 64 (talk | contribs)
Changed "Putty" links to "PuTTY" (name of the application)
Soup-lid (talk | contribs)
m copyedit - typo in Emulator section
 
(40 intermediate revisions by 23 users not shown)
Line 1:
{{short description|Program that emulates a video terminal}}
{{refimprovemore citations needed|date=October 2009}}
[[File:Xterm.png|thumb|300px|[[xterm]], a terminal emulator designed for the [[X Window System]]]]
[[File:Windows Terminal v1.0 1138x624.png|thumb|300px|[[Windows Terminal]], an open-source terminal emulator for [[Windows 10]] and [[Windows 11]]]]
A '''terminal emulator''', or '''terminal application''', is a [[Application software|computer program]] that [[Emulator|emulates]] a video [[Computer terminal#Dumb terminals|terminal]] within some otheranother display architecture. Though typically synonymous with a [[Command-line interface|shell]] or [[text terminal]], the term ''terminal'' covers all remote terminals, including graphical interfaces. A terminal emulator inside a [[graphical user interface]] is often called a '''terminal window'''.
 
A terminal window allows the user access to a text terminal and all its applications such as [[command-line interface]]s (CLI) and [[text user interface]] (TUI) applications. These may be running either on the same machine or on a different one via [[telnet]], [[Secure Shell|ssh]], [[dial-up]], or over a direct [[serial port|serial connection]]. On [[Unix-like]] operating systems, it is common to have one or more terminal windows connected to the local machine.
 
Terminals usually support a set of [[escape sequences]] for controlling color, [[Cursor (computers)|cursor]] position, etc. Examples include the family of terminal control sequence standards knownthat asincludes [[ECMA-48]], [[ANSI X3.64]], orand [[ISO/IEC 6429]].
 
== Background ==
 
In the early days of computing, with the advent of interactive computing, the prevailing model involved a central computer connected to multiple terminals.<ref>[http://www.inf.fu-berlin.de/lehre/SS01/hc/minicomp/ FU Berlin, 3. Minicomputer architecture]</ref> This configuration, known as the centralized or mainframe model, featured a powerful central computer that performed all the processing tasks, while [[Computer terminals|terminals]] served as input/output devices for users to interact with the system. These systems were initially character based.
<ref>[http://www.inf.fu-berlin.de/lehre/SS01/hc/minicomp/ FU Berlin, 3. Minicomputer architecture]</ref>. This configuration, known as the centralized or mainframe model, featured a powerful central computer that performed all the processing tasks, while [[Computer_terminals|terminals]] served as input/output devices for users to interact with the system. These systems were initially character based.
 
=== Character -oriented terminals ===
{{Excerpt|Computer_terminal|Character-oriented terminalterminals}}
 
== Emulators: From Hardware to Software ==
When personal computers became ubiquitous in the 1980s, they offered the option of running software on the user's computer personal computer, providing an opportunity to replace the expensive and space consuming hardware terminals with something that had additional functions.<ref>[{{cite web |url=https://www.emtec.com/zoc/terminal-emulator.html |title=Emulating a Terminal on Personal Computers]}}</ref>. Immediately software became available, that could emulate the functions of the hardware terminals on a PC. Examples of such software for [[DOS]] were [[Telix]] or Telemate, which was published in 1988 and could emulate a DEC VT102 terminal .<ref>[{{cite web |url=http://www.thealmightyguru.com/Wiki/index.php?title=Telemate |title=Telemate Wiki]}}</ref>.
As prices of memory and computation fell, the local computing power increased, making the terminals themselves more powerful. In this process, initially, emulation of the functions of a terminal was a process that played out between terminal manufacturers, where the manufacturers of one type of terminal emulated the functions of another manufacturer. For example a Wyse-60 terminal offered a total of 15 so called "Personalities", among them those of competitors like [[Televideo]]-925, [[Digital_Equipment_Corporation|DEC]] [[VT100]] and [[IBM 3101]].<ref>[http://bitsavers.trailing-edge.com/pdf/wyse/WY-60/Wyse_WY60_Users_Guide.pdf Wyse 60 User's Guide, page 2-5]</ref>
 
[[Workstation]]s, usually running versions of [[Unix]], also became common in the 1980s. Unix systems usually provided access to the [[command line]] with locally-attached or dial-up terminals. Unix workstations were designed to be used primarily through a [[graphical user interface]] (GUI); to provide access to the command line, the GUI included terminal emulator applications that behaved like locally-attached terminals.
When personal computers became ubiquitous in the 1980s, they offered the option of running software on the user's computer personal computer, providing an opportunity to replace the expensive and space consuming hardware terminals with something that had additional functions<ref>[https://www.emtec.com/zoc/terminal-emulator.html Emulating a Terminal on Personal Computers]</ref>. Immediately software became available, that could emulate the functions of the hardware terminals on a PC. Examples of such software for [[DOS]] were [[Telix]] or Telemate, which was published in 1988 and could emulate a DEC VT102 terminal <ref>[http://www.thealmightyguru.com/Wiki/index.php?title=Telemate Telemate Wiki]</ref>.
 
During the 1990s, new operating systems like [[Windows]] and [[OS/2]] arrived, providing the technical background for more terminal emulators like [https://winworldpc.com/product/telix/100-for-windows Telix for Windows], [[ZOC (software)|ZOC for OS/2]], or [[PuTTY]], which was initially released for Windows in 1998 and which (together with its derivates) is still oneremains a very popular choice to this day.<ref>[{{cite web |url=https://www.slant.co/topics/1552/~best-terminal-emulators-for-windows |title=SSH Clients for Windows]}}</ref>.
 
Through the [[History_of_LinuxHistory of Linux|success of Linux]], especially running on data centers and cloud servers,<ref>[{{cite web |url=https://www.debianadmin.com/powering-linux-in-the-data-center.html htm|title=Powering Linux in the Data-Center]}} {{dead link|date=February 2024}}</ref>, the necessity of accessing remote computers through character based terminals remains. This is evident in the fact, that today lists of terminal emulators that could serve as alternative to the aforementioned [[PuTTY]] offers over 100 alternatives.<ref>[{{cite web |url=https://alternativeto.net/software/putty/ |title=Alternatives to Putty]}}</ref>.{{dubious|poor source usage for putty|date=February 2024}}
 
==Examples of terminals emulated==
Many terminal emulators have been developed for physical hardware terminals such as [[VT52]], [[VT100]], [[VT220]], [[VT320]], [[IBM 3270|IBM 3270/8/9/E]], [[IBM 5250]], [[IBM 3179G]], [[Data General]] D211, [[Hewlett-Packard]] HP700/92, Sperry/Unisys 2000-series [[Uniscope|UTS60]], Burroughs/Unisys A-series T27/TD830/ET1100, [[Applied Digital Data Systems|ADDS]] ViewPoint, [[Sun Microsystems|Sun]] consoleAT386, [[QNXSiemens Nixdorf]], AT386, SCO-ANSI, (SNI) 97801, [[Televideo]] 925, and [[Wyse]] 50/60. Additionally, programs have been developed to emulate other terminal emulators such as [[xterm]] and assorted console terminals (e.g., for [[Linux]]). Finally, some emulators simply refer to a standard, such as [[ANSI escape code|ANSI]]. Such programs are available on many platforms ranging from [[DOS]] and [[Unix]] to [[Microsoft Windows|Windows]] and [[macOS]] to embedded operating systems found in cellphones and industrial hardware.
 
Some terminal emulators, such as [[xterm]], implement additional features not present in the emulated terminal.<ref>{{cite web |url=https://invisible-island.net/xterm/xterm.faq.html#what_vt220 |title=XTerm - Frequently Asked Questions (FAQ) |at=Why a VT220? |author=Thomas E. Dickey}}</ref>
 
Additionally, programs have been developed to emulate assorted [[system console]] "terminals" such as the [[Sun workstation]] console and the [[Linux console]].
 
Finally, some emulators simply refer to a set of standards, such as the standards for [[ANSI escape code]]s.
 
Such programs are available on many platforms, including [[DOS]], [[Unix-like]] systems including [[Linux]] and [[macOS]], [[Microsoft Windows|Windows]], and embedded operating systems found in cellphones and industrial hardware.
 
== Implementation details ==
Line 34 ⟶ 41:
In the past, [[Unix]] and [[Unix-like]] systems used serial port devices such as [[RS-232]] ports, and provided {{Code|/dev/*|text}} [[device file]]s for them.<ref>{{Cite web|title=A Brief History of Terminal Emulation {{!}} Turbosoft|url=https://www.ttwin.com/blog/270-history-terminal-emulation|access-date=2021-10-04|website=www.ttwin.com}}</ref>
 
With terminal emulators thosethese device files are themselves emulated by using a pair of [[pseudoterminal]] devices. ThisThese pairin isturn used to emulate a physical port/connection to the host computing endpoint - computer's hardware provided by operating system APIs, some otheror software likesuch as [[rlogin]], [[telnet]] or [[Secure Shell|SSH]], oramong elseothers.<ref name=":0">{{Cite web|title=Ubuntu Manpage: tty — general terminal interface|url=http://manpages.ubuntu.com/manpages/bionic/man4/tty.4freebsd.html|access-date=2021-10-04|website=manpages.ubuntu.com}}</ref> ForIn exampleLinux systems, infor Linux systemsexample, these would be {{Code|/dev/ptyp0}} (for the master side) and {{Code|/dev/ttyp0}} (for the slave side) pseudoterminal devices respectively.
 
There are also special [[virtual console]] files like <code>/dev/console</code>. In text mode, writing to the file displays text on the virtual console and reading from the file returns text the user writes to the virtual console. As with other [[Texttext terminal|text terminals]]s, there are also special [[Escapeescape sequence|escape sequences]]s, [[Controlcontrol character|control characters]]s and [[System call|functions]] that a program can use, most easily via a library such as ''[[ncurses]]''. For more complex operations, the programs can use console and terminal special ''[[ioctl]]'' system calls. One can compare devices using the patterns vcs ("virtual console screen") and vcsa ("virtual console screen with attributes") such as <code>/dev/vcs1</code> and <code>/dev/vcsa1</code>.<ref>{{cite web|title=Screen dumps|url=https://tldp.org/HOWTO/Keyboard-and-Console-HOWTO-20.html|access-date=2008-07-31|work=The Linux keyboard and console HOWTO|publisher=The [[Linux Documentation Project]]|quote=The current contents of the screen of /dev/ttyN can be accessed using the device /dev/vcsN (where `vcs' stands for `virtual console screen'). [...] From a program it is usually better to use /dev/vcsaN (`virtual console screen with attributes') instead - it starts with a header giving the number of rows and columns and the ___location of the cursor. See vcs(4).}}</ref>
 
Some terminal emulators also include escape sequences for configuring the behavior of the terminal to facilitate good interoperation between the terminal and programs running inside of it, for example to configure [[paste bracketing]].
 
The virtual consoles can be configured in the file <code>/etc/inittab</code> read by ''[[init]]'' -- typically—typically it starts the text mode [[Logging (computer security)|login]] process ''[[Getty (Unix)|getty]]'' for several virtual consoles. [[X Window System]] can be configured in <code>/etc/inittab</code> or by an [[X display manager (program type)|X display manager]]. A number of [[Linux]] distributions use [[systemd]] instead of [[init]], which also allows virtual console configuration.
 
==== CLI tools ====
Line 57 ⟶ 64:
{{main|Computer terminal#Modes}}
 
Terminal emulators may implement local editing, also known as "line-at-a-time mode". This is also mistakenly referred to as "[[half-duplex]]".{{cncitation needed|date=December 2017}} In this mode, the terminal emulator only sends complete lines of input to the host system. The user enters and edits a line, but it is held locally within the terminal emulator as it is being edited. It is not transmitted until the user signals its completion, usually with the {{keypress|Enter}} key on the keyboard or a "send" button of some sort in the user interface. At that point, the entire line is transmitted. Line-at-a-time mode implies local echo, since otherwise the user will not be able to see the line as it is being edited and constructed.{{sfn|Daintith|2004|p=171}}{{sfn|Bangia|2010|p=324}} However, line-at-a-time mode is independent of echo mode and does not ''require'' local echo. When entering a password, for example, line-at-a-time entry with local editing is possible, but local echo is turned off (otherwise the password would be displayed).{{sfn|Stevens|Wright|1994|p=413}}
 
The complexities of line-at-a-time mode are exemplified by the line-at-a-time mode option in the telnet protocol. To implement it correctly, the ''Network Virtual Terminal'' implementation provided by the terminal emulator program must be capable of recognizing and properly dealing with "interrupt" and "abort" events that arrive in the middle of locally editing a line.{{sfn|Miller|2009|p=590, 591}}
Line 91 ⟶ 98:
| first = Ramesh
| last = Bangia
| publisher = Laxmi Publications, Ltd
| year = 2010
| isbn = 978-93-8029-815-3}}
Line 128 ⟶ 135:
| encyclopedia = Computer Science and Communications Dictionary
| volume = 1
| title = terminal emulation | page=1763 |doi=10.1007/1-4020-0613-6_19359
| first = Martin H.
| last = Weik
Line 137 ⟶ 145:
==External links==
{{Commons category|Terminal emulators}}
* {{dmoz|Computers/Data_Communications/Software/Terminal_Emulation|Terminal Emulation}}
* [http://www.linfo.org/terminal_window.html Terminal Window Definition] by The Linux Information Project (LINFO)
* [https://invisible-island.net/vttest/ VTTEST – VT100/VT220/XTerm test utility] {{dash}} A terminal test utility by Thomas E. Dickey
 
{{Terminal emulator}}