:start-extend()
(Without loss of generality, you can swap ?right? and ?left?
everywhere in the rest of this paragraph.) If pressed while
closer to the right edge of the selection than the left, it
extends/contracts the right edge of the selection. If you
contract the selection past the left edge of the selection, xterm
assumes you really meant the left edge, restores the original
selection, then extends/contracts the left edge of the selection.
Extension starts in the selection unit mode that the last
selection or extension was performed in; you can multiple-click to
cycle through them.
By cutting and pasting pieces of text without trailing new lines, you
can take text from several places in different windows and form a
command to the shell, for example, or take output from a program and
insert it into your favorite editor. Since cut buffers are globally
shared among different applications, you may regard each as a ?file?
whose contents you know. The terminal emulator and other text programs
should be treating it as if it were a text file, i.e., the text is
delimited by new lines.
Scrolling
The scroll region displays the position and amount of text currently
showing in the window (highlighted) relative to the amount of text
actually saved. As more text is saved (up to the maximum), the size of
the highlighted area decreases.
Clicking button one with the pointer in the scroll region moves the
adjacent line to the top of the display window.
Clicking button three moves the top line of the display window down to
the pointer position.
Clicking button two moves the display to a position in the saved text
that corresponds to the pointer's position in the scrollbar.
Tektronix Pointer
Unlike the VTxxx window, the Tektronix window does not allow the
copying of text. It does allow Tektronix GIN mode, and in this mode
the cursor will change from an arrow to a cross. Pressing any key will
send that key and the current coordinate of the cross cursor. Pressing
button one, two, or three will return the letters ?l?, ?m?, and ?r?,
respectively. If the ?shift? key is pressed when a pointer button is
pressed, the corresponding upper case letter is sent. To distinguish a
pointer button from a key, the high bit of the character is set (but
this is bit is normally stripped unless the terminal mode is RAW; see
tty(4) for details).
SELECT/PASTE
X clients provide select and paste support by responding to requests
conveyed by the X server. The X server holds data in ?atoms? which
correspond to the different types of selection (PRIMARY, SECONDARY,
CLIPBOARD) as well as the similar cut buffer mechanism (CUT_BUFFER0 to
CUT_BUFFER7). Those are documented in the ICCCM.
The ICCCM deals with the underlying mechanism for select/paste. It
does not mention highlighting. The selection is not the same as
highlighting. Xterm (like many applications) uses highlighting to show
you the currently selected text. An X application may own a selection,
which allows it to be the source of data copied using a given selection
atom Xterm may continue owning a selection after it stops highlighting
(see keepSelection).
PRIMARY
When configured to use the primary selection (the default), xterm can
provide the selection data in ways which help to retain character
encoding information as it is pasted.
The PRIMARY token is a standard X feature, documented in the ICCCM
(Inter-Client Communication Conventions Manual), which states
The selection named by the atom PRIMARY is used for all commands
that take only a single argument and is the principal means of
communication between clients that use the selection mechanism.
A user ?selects? text on xterm, which highlights the selected text. A
subsequent ?paste? to another client forwards a request to the client
owning the selection. If xterm owns the primary selection, it makes
the data available in the form of one or more ?selection targets?. If
it does not own the primary selection, e.g., if it has released it or
another client has asserted ownership, it relies on cut-buffers to pass
the data. But cut-buffers handle only ISO-8859-1 data (officially -
some clients ignore the rules).
CLIPBOARD
When configured to use the clipboard (using the selectToClipboard
resource), the problem with persistence of ownership is bypassed.
Otherwise, there is no difference regarding the data which can be
passed via selection.
The selectToClipboard resource is a compromise, allowing CLIPBOARD to
be treated almost like PRIMARY, unlike the ICCCM, which describes
CLIPBOARD in different terms than PRIMARY or SECONDARY. Its lengthy
explanation begins with the essential points:
The selection named by the atom CLIPBOARD is used to hold data that
is being transferred between clients, that is, data that usually is
being cut and then pasted or copied and then pasted. Whenever a
client wants to transfer data to the clipboard:
? It should assert ownership of the CLIPBOARD.
? If it succeeds in acquiring ownership, it should be prepared to
respond to a request for the contents of the CLIPBOARD in the
usual way (retaining the data to be able to return it). The
request may be generated by the clipboard client described
below.
SELECT
However, many applications use CLIPBOARD in imitation of other
windowing systems. The selectToClipboard resource (and corresponding
menu entry Select to Clipboard) introduce the SELECT token (known only
to xterm) which chooses between the PRIMARY and CLIPBOARD tokens.
Without using this feature, one can use workarounds such as the xclip
program to show the contents of the X clipboard within an xterm window.
SECONDARY
This is used less often than PRIMARY or CLIPBOARD. According to the
ICCCM, it is used
? As the second argument to commands taking two arguments (for
example, ?exchange primary and secondary selections?)
? As a means of obtaining data when there is a primary selection and
the user does not want to disturb it
Selection Targets
The different types of data which are passed depend on what the
receiving client asks for. These are termed selection targets.
When asking for the selection data, xterm tries the following types in
this order:
UTF8_STRING
This is an XFree86 extension, which denotes that the data is
encoded in UTF-8. When xterm is built with wide-character
support, it both accepts and provides this type.
TEXT the text is in the encoding which corresponds to your current
locale.
COMPOUND_TEXT
this is a format for multiple character set data, such as
multi-lingual text. It can store UTF-8 data as a special
case.
STRING
This is Latin 1 (ISO-8859-1) data.
The middle two (TEXT and COMPOUND_TEXT) are added if xterm is
configured with the i18nSelections resource set to ?true?.
UTF8_STRING is preferred (therefore first in the list) since xterm
stores text as Unicode data when running in wide-character mode, and no
translation is needed. On the other hand, TEXT and COMPOUND_TEXT may
require translation. If the translation is incomplete, they will
insert X's ?defaultString? whose value cannot be set, and may simply be
empty. Xterm's defaultString resource specifies the string to use for
incomplete translations of the UTF8_STRING.
You can alter the types which xterm tries using the eightBitSelectTypes
or utf8SelectTypes resources. For instance, you might have some
specific locale setting which does not use UTF-8 encoding. The
resource value is a comma-separated list of the selection targets,
which consist of the names shown. You can use the special name I18N to
denote the optional inclusion of TEXT and COMPOUND_TEXT. The names are
matched ignoring case, and can be abbreviated. The default list can be
expressed in several ways, e.g.,
UTF8_STRING,I18N,STRING
utf8,i18n,string
u,i,s
Mouse Protocol
Applications can send escape sequences to xterm to cause it to send
escape sequences back to the computer when you press a pointer button,
or even (depending on which escape sequence) send escape sequences back
to the computer as you move the pointer.
These escape sequences and the responses, called the mouse protocol,
are documented in XTerm Control Sequences. They do not appear in the
actions invoked by the translations resource because the resource does
not change while you run xterm, whereas applications can change the
mouse prototol (i.e., enable, disable, use different modes).
However, the mouse protocol is interpreted within the actions that are
usually associated with the pointer buttons. Xterm ignores the mouse
protocol in the insert-selection action if the shift-key is pressed at
the same time. It also modifies a few other actions if the shift-key
is pressed, e.g., suppressing the response with the pointer position,
though not eliminating changes to the selected text.
MENUS
Xterm has four menus, named mainMenu, vtMenu, fontMenu, and tekMenu.
Each menu pops up under the correct combinations of key and button
presses. Each menu is divided into sections, separated by a horizontal
line. Some menu entries correspond to modes that can be altered. A
check mark appears next to a mode that is currently active. Selecting
one of these modes toggles its state. Other menu entries are commands;
selecting one of these performs the indicated function.
All of the menu entries correspond to X actions. In the list below,
the menu label is shown followed by the action's name in parenthesis.
Main Options
The xterm mainMenu pops up when the ?control? key and pointer button
one are pressed in a window. This menu contains items that apply to
both the VTxxx and Tektronix windows. There are several sections:
Commands for managing X events:
Toolbar (resource toolbar)
Clicking on the ?Toolbar? menu entry hides the toolbar if
it is visible, and shows it if it is not.
Secure Keyboard (resource securekbd)
The Secure Keyboard mode is helpful when typing in
passwords or other sensitive data in an unsecure
environment (see SECURITY below, but read the limitations
carefully).
Allow SendEvents (resource allowsends)
Specifies whether or not synthetic key and button events
generated using the X protocol SendEvent request should
be interpreted or discarded. This corresponds to the
allowSendEvents resource.
Redraw Window (resource redraw)
Forces the X display to repaint; useful in some
environments.
Commands for capturing output:
Log to File (resource logging)
Captures text sent to the screen in a log file, as in the
-l logging option.
Print-All Immediately (resource print-immediate)
Invokes the print-immediate action, sending the text of
the current window directly to a file, as specified by
the printFileImmediate, printModeImmediate and
printOptsImmediate resources.
Print-All on Error (resource print-on-error)
Invokes the print-on-error action, which toggles a flag
telling xterm that if it exits with an X error, to send
the text of the current window directly to a file, as
specified by the printFileOnXError, printModeOnXError and
printOptsOnXError resources.
Print Window (resource print)
Sends the text of the current window to the program given
in the printerCommand resource.
Redirect to Printer (resource print-redir)
This sets the printerControlMode to 0 or 2. You can use
this to turn the printer on as if an application had sent
the appropriate control sequence. It is also useful for
switching the printer off if an application turns it on
without resetting the print control mode.
XHTML Screen Dump (resource dump-html)
Available only when compiled with screen dump support.
Invokes the dump-html action. This creates an XHTML file
matching the contents of the current screen, including
the border, internal border, colors and most attributes:
bold, italic, underline, faint, strikeout, reverse; blink
is rendered as white-on-red; double underline is rendered
the same as underline since there is no portable
equivalent in CSS 2.2.
The font is whatever your browser uses for preformatted
() elements. The XHTML file references a cascading
style sheet (CSS) named ?xterm.css? that you can create
to select a font or override properties.
The following CSS selectors are used with the expected
default behavior in the XHTML file:
.ul for underline,
.bd for bold,
.it for italic,
.st for strikeout,
.lu for strikeout combined with underline.
In addition you may use
.ev to affect even numbered lines and
.od to affect odd numbered lines.
Attributes faint, reverse and blink are implemented as
style attributes setting color properties. All colors
are specified as RGB percentages in order to support
displays with 10 bits per RGB.
The name of the file will be
xterm.yyyy.MM.dd.hh.mm.ss.xhtml
where yyyy, MM, dd, hh, mm and ss are the year, month,
day, hour, minute and second when the screen dump was
performed (the file is created in the directory xterm is
started in, or the home directory for a login xterm).
The dump-html action can also be triggered using the
Media Copy control sequence CSI 1 0 i, for example from a
shell script with
printf '\033[10i'
Only the UTF-8 encoding is supported.
SVG Screen Dump (resource dump-svg)
Available only when compiled with screen dump support.
Invokes the dump-svg action. This creates a Scalable
Vector Graphics (SVG) file matching the contents of the
current screen, including the border, internal border,
colors and most attributes: bold, italic, underline,
double underline, faint, strikeout, reverse; blink is
rendered as white-on-red. The font is whatever your
renderer uses for the monospace font-family. All colors
are specified as RGB percentages in order to support
displays with 10 bits per RGB.
The name of the file will be
xterm.yyyy.MM.dd.hh.mm.ss.svg
where yyyy, MM, dd, hh, mm and ss are the year, month,
day, hour, minute and second when the screen dump was
performed (the file is created in the directory xterm is
started in, or the home directory for a login xterm).
The dump-svg action can also be triggered using the Media
Copy control sequence CSI 1 1 i, for example from a shell
script with
printf '\033[11i'
Only the UTF-8 encoding is supported.
Modes for setting keyboard style:
8-Bit Controls (resource 8-bit-control)
Enabled for VT220 emulation, this controls whether xterm
will send 8-bit control sequences rather than using 7-bit
(ASCII) controls, e.g., sending a byte in the range
128?159 rather than the escape character followed by a
second byte. Xterm always interprets both 8-bit and
7-bit control sequences (see Xterm Control Sequences).
This corresponds to the eightBitControl resource.
Backarrow Key (BS/DEL) (resource backarrow key)
Modifies the behavior of the backarrow key, making it
transmit either a backspace (8) or delete (127)
character. This corresponds to the backarrowKey
resource.
Alt/NumLock Modifiers (resource num-lock)
Controls the treatment of Alt- and NumLock-key modifiers.
This corresponds to the numLock resource.
Meta Sends Escape (resource meta-esc)
Controls whether Meta keys are converted into a two-
character sequence with the character itself preceded by
ESC. This corresponds to the metaSendsEscape resource.
Delete is DEL (resource delete-is-del)
Controls whether the Delete key on the editing keypad
should send DEL (127) or the VT220-style Remove escape
sequence. This corresponds to the deleteIsDEL resource.
Old Function-Keys (resource oldFunctionKeys)
HP Function-Keys (resource hpFunctionKeys)
SCO Function-Keys (resource scoFunctionKeys)
Sun Function-Keys (resource sunFunctionKeys)
VT220 Keyboard (resource sunKeyboard)
These act as a radio-button, selecting one style for the
keyboard layout. The layout corresponds to more than one
resource setting: sunKeyboard, sunFunctionKeys,
scoFunctionKeys and hpFunctionKeys.
Commands for process signalling:
Send STOP Signal (resource suspend)
Send CONT Signal (resource continue)
Send INT Signal (resource interrupt)
Send HUP Signal (resource hangup)
Send TERM Signal (resource terminate)
Send KILL Signal (resource kill)
These send the SIGTSTP, SIGCONT, SIGINT, SIGHUP, SIGTERM
and SIGKILL signals respectively, to the process group of
the process running under xterm (usually the shell). The
SIGCONT function is especially useful if the user has
accidentally typed CTRL-Z, suspending the process.
Quit (resource quit)
Stop processing X events except to support the -hold
option, and then send a SIGHUP signal to the process
group of the process running under xterm (usually the
shell).
VT Options
The xterm vtMenu sets various modes in the VTxxx emulation, and is
popped up when the ?control? key and pointer button two are pressed in
the VTxxx window.
VTxxx Modes:
Enable Scrollbar (resource scrollbar)
Enable (or disable) the scrollbar. This corresponds to
the -sb option and the scrollBar resource.
Enable Jump Scroll (resource jumpscroll)
Enable (or disable) jump scrolling. This corresponds to
the -j option and the jumpScroll resource.
Enable Reverse Video (resource reversevideo)
Enable (or disable) reverse-video. This corresponds to
the -rv option and the reverseVideo resource.
Enable Auto Wraparound (resource autowrap)
Enable (or disable) auto-wraparound. This corresponds to
the -aw option and the autoWrap resource.
Enable Reverse Wraparound (resource reversewrap)
Enable (or disable) reverse wraparound. This corresponds
to the -rw option and the reverseWrap resource.
Enable Auto Linefeed (resource autolinefeed)
Enable (or disable) auto-linefeed. This is the VT102 NEL
function, which causes the emulator to emit a line feed
after each carriage return. There is no corresponding
command-line option or resource setting.
Enable Application Cursor Keys (resource appcursor)
Enable (or disable) application cursor keys. This
corresponds to the appcursorDefault resource. There is
no corresponding command-line option.
Enable Application Keypad (resource appkeypad)
Enable (or disable) application keypad keys. This
corresponds to the appkeypadDefault resource. There is
no corresponding command-line option.
Scroll to Bottom on Key Press (resource scrollkey)
Enable (or disable) scrolling to the bottom of the
scrolling region on a keypress. This corresponds to the
-sk option and the scrollKey resource.
As a special case, the XON / XOFF keys (control/S and
control/Q) are ignored.
Scroll to Bottom on Tty Output (resource scrollttyoutput)
Enable (or disable) scrolling to the bottom of the
scrolling region on output to the terminal. This
corresponds to the -si option and the scrollTtyOutput
resource.
Allow 80/132 Column Switching (resource allow132)
Enable (or disable) switching between 80 and 132 columns.
This corresponds to the -132 option and the c132
resource.
Keep Selection (resource keepSelection)
Tell xterm whether to disown the selection when it stops
highlighting it, e.g., when an application modifies the
display so that it no longer matches the text which has
been highlighted. As long as xterm continues to own the
selection for a given atom, it can provide the
corresponding text to other clients which request the
selection using that atom.
This corresponds to the keepSelection resource. There is
no corresponding command-line option.
Telling xterm to not disown the selection does not
prevent other applications from taking ownership of the
selection. When that happens, xterm receives
notification that this has happened, and removes its
highlighting.
See SELECT/PASTE for more information.
Select to Clipboard (resource selectToClipboard)
Tell xterm whether to use the PRIMARY or CLIPBOARD for
SELECT tokens in the translations resource which maps
keyboard and mouse actions to select/paste actions.
This corresponds to the selectToClipboard resource.
There is no corresponding command-line option.
The keepSelection resource setting applies to CLIPBOARD
selections just as it does for PRIMARY selections.
However some window managers treat the clipboard
specially. For instance, XQuartz's synchronization
between the OSX pasteboard and the X11 clipboard causes
applications to lose the selection ownership for that
atom when a selection is copied to the clipboard.
See SELECT/PASTE for more information.
Enable Visual Bell (resource visualbell)
Enable (or disable) visible bell (i.e., flashing) instead
of an audible bell. This corresponds to the -vb option
and the visualBell resource.
Enable Bell Urgency (resource bellIsUrgent)
Enable (or disable) Urgency window manager hint when
Control-G is received. This corresponds to the
bellIsUrgent resource.
Enable Pop on Bell (resource poponbell)
Enable (or disable) raising of the window when Control-G
is received. This corresponds to the -pop option and the
popOnBell resource.
Enable Blinking Cursor (resource cursorblink)
Enable (or disable) the blinking-cursor feature. This
corresponds to the -bc option and the cursorBlink
resource. There are also escape sequences (see Xterm
Control Sequences):
? If the cursorBlinkXOR resource is set, the menu entry
and the escape sequence states will be XOR'd: if both
are enabled, the cursor will not blink, if only one
is enabled, the cursor will blink.
? If the cursorBlinkXOR is not set; if either the menu
entry or the escape sequence states are set, the
cursor will blink.
In either case, the checkbox for the menu shows the state
of the cursorBlink resource, which may not correspond to
what the cursor is actually doing.
Enable Alternate Screen Switching (resource titeInhibit)
Enable (or disable) switching between the normal and
alternate screens. This corresponds to the titeInhibit
resource. There is no corresponding command-line option.
Enable Active Icon (resource activeicon)
Enable (or disable) the active-icon feature. This
corresponds to the -ai option and the activeIcon
resource.
Sixel Scrolling (resource sixelScrolling)
This corresponds to the sixelScrolling resource. It can
also be turned off and on using the private mode DECSDM
(Sixel Display Mode).
? When enabled, xterm draws sixel graphics at the
current text cursor location, scrolling the image
vertically if it is larger than the screen, and
leaving the text cursor at the same column in the
next complete line after the image when returning to
text mode
This is the default, which corresponds to the reset
state of DECSDM.
? When disabled, xterm draws sixel graphics starting at
the upper left of the screen, cropping to fit the
screen, and does not alter the text cursor location.
This corresponds to the set state of DECSDM.
There is no corresponding command-line option.
Private Color Registers (resource privateColorRegisters)
If xterm is configured to support ReGIS graphics, this
controls whether a private color palette can be used.
When enabled, each graphic image uses a separate set of
color registers, so that it essentially has a private
palette (this is the default). If it is not set, all
graphics images share a common set of registers which is
how sixel and ReGIS graphics worked on actual hardware.
The default is likely a more useful mode on modern
TrueColor hardware.
This corresponds to the privateColorRegisters resource.
There is no corresponding command-line option.
VTxxx Commands:
Do Soft Reset (resource softreset)
This corresponds to the VT220 DECSTR control sequence. A
soft reset leaves the contents of the window intact, but
resets modes which affect subsequent updates:
Soft reset differs from full reset in a minor detail:
? Set the saved cursor position to the upper-left
corner of the window.
? Exit from the status-line without erasing it.
Both soft/full resets do the following:
? Make the cursor visible, with shape reset according
to the cursorUnderLine and cursorBar resources.
? Enable or disable the cursor-blinking state according
to the cursorBlink resource, and set the Enable
Blinking Cursor menu checkmark to match.
? Reset video attributes, e.g., bold, italic,
underline, blink.
? Reset the ANSI color mode to the xterm default
foreground and background.
? Reset the 256-color palette to its initial state.
? Reset the selected character set, e.g., ASCII,
alternate character set. The UTF-8 modes are not
changed.
? Reset ECMA-48 KAM.
? Reset DECCKM and DECKPAM per resources
appcursorDefault and appkeypadDefault.
? Reset the key-modifier modes to the values set by
resources formatOtherKeys, modifyCursorKeys,
modifyFunctionKeys, modifyKeyboard, and
modifyOtherKeys.
? Reset origin mode (DECOM).
? Reset all margins (i.e., top/bottom and left/right).
This can be convenient when some program has left the
scroll regions set incorrectly (often a problem when
using VMS or TOPS-20).
? Set autowrap and reverse wrapping according to the
resource values autoWrap and reverseWrap.
? Reset checksum extension to the checksumExtension
resource.
Do Full Reset (resource hardreset)
A full reset does this in addition to a soft reset:
? Clear the window.
? Reset tab stops to every eight columns.
? Reset the screen to match the reverseVideo resource.
? Resize the screen to 80 columns if 132-column mode
was initially enabled with the c132 resource.
? Reset scrolling (jump versus smooth) per the
jumpScroll resource.
? Enable linefeed mode (ECMA-48 LNM) and send/receive
mode (ECMA-48 SRM).
? Reset DEC user-defined keys (DECUDK).
? Disable application mode for cursor- and keypad-keys
(DECCKM, DECKPAM).
? Reset menu entry 8-bit Controls, per resource
eightBitControl.
? Reset interpretation of the backarrow key, per
initial resource settings.
? Set the keyboard type according to the resources
keyboardType, hpFunctionKeys, scoFunctionKeys,
sunFunctionKeys, tcapFunctionKeys, oldXtermFKeys and
sunKeyboard.
? Turn mouse tracking off.
? Reset title and pointer modes per resources
titleModes and pointerMode.
? Reset the readline and bracketed paste modes.
? Discard all SIXEL and ReGIS graphics data from
memory.
? Reset sixelScrolling and privateColorRegisters from
initial resource values.
? Set DECSDM if the sixelScrolling resource is true.
Otherwise, reset DECSDM.
A full reset does this, unlike a soft reset:
? Move the cursor to the upper-left corner of the
window, and then save that position.
? Hide the status-line, setting its display-type to
?none?.
Reset and Clear Saved Lines (resource clearsavedlines)
Perform a full reset, and also clear the saved lines.
This corresponds to the VT102 RIS control sequence, with
a few obvious differences. For example, your session is
not disconnected as a real VT102 would do.
Commands for setting the current screen:
Show Tek Window (resource tekshow)
When enabled, pops the Tektronix 4014 window up (makes it
visible). When disabled, hides the Tektronix 4014
window.
Switch to Tek Mode (resource tekmode)
When enabled, pops the Tektronix 4014 window up if it is
not already visible, and switches the input stream to
that window. When disabled, hides the Tektronix 4014
window and switches input back to the VTxxx window.
Hide VT Window (resource vthide)
When enabled, hides the VTxxx window, shows the Tektronix
4014 window if it was not already visible and switches
the input stream to that window. When disabled, shows
the VTxxx window, and switches the input stream to that
window.
Show Alternate Screen (resource altscreen)
When enabled, shows the alternate screen. When disabled,
shows the normal screen. Note that the normal screen may
have saved lines; the alternate screen does not.
VT Fonts
The xterm fontMenu pops up when the ?control? key and pointer button
three are pressed in a window. It sets the font used in the VTxxx
window, or modifies the way the font is specified or displayed. There
are several sections.
The first section allows you to select the font from a set of
alternatives:
Default (resource fontdefault)
Set the font to the default, i.e., that given by the
*VT100.font resource.
Unreadable (resource font1)
Set the font to that given by the *VT100.font1 resource.
Tiny (resource font2)
Set the font to that given by the *VT100.font2 resource.
Small (resource font3)
Set the font to that given by the *VT100.font3 resource.
Medium (resource font4)
Set the font to that given by the *VT100.font4 resource.
Large (resource font5)
Set the font to that given by the *VT100.font5 resource.
Huge (resource font6)
Set the font to that given by the *VT100.font6 resource.
Enormous (resource font7)
Set the font to that given by the *VT100.font7 resource.
Escape Sequence (resource fontescape)
This allows you to set the font last specified by the Set
Font escape sequence (see Xterm Control Sequences).
Selection (resource fontsel)
This allows you to set the font specified the current
selection as a font name (if the PRIMARY selection is
owned).
The second section allows you to modify the way it is displayed:
Bold Fonts (resource allow-bold-fonts)
This is normally checked (enabled). When unchecked,
xterm will not use bold fonts. The setting corresponds
to the allowBoldFonts resource.
Line-Drawing Characters (resource font-linedrawing)
When set, tells xterm to draw its own line-drawing
characters. Otherwise it relies on the font containing
these. Compare to the forceBoxChars resource.
Packed Font (resource font-packed)
When set, tells xterm to use the minimum glyph-width from
a font when displaying characters. Use the maximum width
(unchecked) to help display proportional fonts. Compare
to the forcePackedFont resource.
Doublesized Characters (resource font-doublesize)
When set, xterm may ask the font server to produce scaled
versions of the normal font, for VT102 double-size
characters.
The third section allows you to modify the way it is specified:
TrueType Fonts (resource render-font)
If the renderFont and corresponding resources were set,
this is a further control whether xterm will actually use
the Xft library calls to obtain a font.
UTF-8 Encoding (resource utf8-mode)
This controls whether xterm uses UTF-8 encoding of
input/output. It is useful for temporarily switching
xterm to display text from an application which does not
follow the locale settings. It corresponds to the utf8
resource.
UTF-8 Fonts (resource utf8-fonts)
This controls whether xterm uses UTF-8 fonts for display.
It is useful for temporarily switching xterm to display
text from an application which does not follow the locale
settings. It combines the utf8 and utf8Fonts resources,
subject to the locale resource.
UTF-8 Titles (resource utf8-title)
This controls whether xterm accepts UTF-8 encoding for
title control sequences. It corresponds to the utf8Fonts
resource.
Initially the checkmark is set according to both the utf8
and utf8Fonts resource values. If the latter is set to
?always?, the checkmark is disabled. Likewise, if there
are no fonts given in the utf8Fonts subresources, then
the checkmark also is disabled.
The standard XTerm app-defaults file defines both sets of
fonts, while the UXTerm app-defaults file defines only
one set. Assuming the standard app-defaults files, this
command will launch xterm able to switch between UTF-8
and ISO-8859-1 encoded fonts:
uxterm -class XTerm
The fourth section allows you to enable or disable special operations
which can be controlled by writing escape sequences to the terminal.
These are disabled if the SendEvents feature is enabled:
Allow Color Ops (resource allow-color-ops)
This corresponds to the allowColorOps resource. Enable
or disable control sequences that set/query the colors.
Allow Font Ops (resource allow-font-ops)
This corresponds to the allowFontOps resource. Enable or
disable control sequences that set/query the font.
Allow Mouse Ops (resource allow-mouse-ops)
Enable or disable control sequences that cause the
terminal to send escape sequences on pointer-clicks and
movement. This corresponds to the allowMouseOps
resource.
Allow Tcap Ops (resource allow-tcap-ops)
Enable or disable control sequences that query the
terminal's notion of its function-key strings, as termcap
or terminfo capabilities. This corresponds to the
allowTcapOps resource.
Allow Title Ops (resource allow-title-ops)
Enable or disable control sequences that modify the
window title or icon name. This corresponds to the
allowTitleOps resource.
Allow Window Ops (resource allow-window-ops)
Enable or disable extended window control sequences (as
used in dtterm). This corresponds to the allowWindowOps
resource.
Tek Options
The xterm tekMenu sets various modes in the Tektronix emulation, and is
popped up when the ?control? key and pointer button two are pressed in
the Tektronix window. The current font size is checked in the modes
section of the menu.
Large Characters (resource tektextlarge)
#2 Size Characters (resource tektext2)
#3 Size Characters (resource tektext3)
Small Characters (resource tektextsmall)
Commands:
PAGE (resource tekpage)
Simulates the Tektronix ?PAGE? button by
? clearing the window,
? cancelling the graphics input-mode, and
? moving the cursor to the home position.
RESET (resource tekreset)
Unlike the similarly-named Tektronix ?RESET? button, this
does everything that PAGE does as well as resetting the
line-type and font-size to their default values.
COPY (resource tekcopy)
Simulates the Tektronix ?COPY? button (which makes a
hard-copy of the screen) by writing the information to a
text file.
Windows:
Show VT Window (resource vtshow)
Switch to VT Mode (resource vtmode)
Hide Tek Window (resource tekhide)
SECURITY
X environments differ in their security consciousness.
? Most servers, run under xdm, are capable of using a ?magic cookie?
authorization scheme that can provide a reasonable level of
security for many people. If your server is only using a host-
based mechanism to control access to the server (see xhost(1)),
then if you enable access for a host and other users are also
permitted to run clients on that same host, it is possible that
someone can run an application which uses the basic services of the
X protocol to snoop on your activities, potentially capturing a
transcript of everything you type at the keyboard.
? Any process which has access to your X display can manipulate it in
ways that you might not anticipate, even redirecting your keyboard
to itself and sending events to your application's windows. This
is true even with the ?magic cookie? authorization scheme. While
the allowSendEvents provides some protection against rogue
applications tampering with your programs, guarding against a
snooper is harder.
? The X input extension for instance allows an application to bypass
all of the other (limited) authorization and security features,
including the GrabKeyboard protocol.
? The possibility of an application spying on your keystrokes is of
particular concern when you want to type in a password or other
sensitive data. The best solution to this problem is to use a
better authorization mechanism than is provided by X.
Subject to all of these caveats, a simple mechanism exists for
protecting keyboard input in xterm.
The xterm menu (see MENUS above) contains a Secure Keyboard entry
which, when enabled, attempts to ensure that all keyboard input is
directed only to xterm (using the GrabKeyboard protocol request). When
an application prompts you for a password (or other sensitive data),
you can enable Secure Keyboard using the menu, type in the data, and
then disable Secure Keyboard using the menu again.
? This ensures that you know which window is accepting your
keystrokes.
? It cannot ensure that there are no processes which have access to
your X display that might be observing the keystrokes as well.
Only one X client at a time can grab the keyboard, so when you attempt
to enable Secure Keyboard it may fail. In this case, the bell will
sound. If the Secure Keyboard succeeds, the foreground and background
colors will be exchanged (as if you selected the Enable Reverse Video
entry in the Modes menu); they will be exchanged again when you exit
secure mode. If the colors do not switch, then you should be very
suspicious that you are being spoofed. If the application you are
running displays a prompt before asking for the password, it is safest
to enter secure mode before the prompt gets displayed, and to make sure
that the prompt gets displayed correctly (in the new colors), to
minimize the probability of spoofing. You can also bring up the menu
again and make sure that a check mark appears next to the entry.
Secure Keyboard mode will be disabled automatically if your xterm
window becomes iconified (or otherwise unmapped), or if you start up a
reparenting window manager (that places a title bar or other decoration
around the window) while in Secure Keyboard mode. (This is a feature
of the X protocol not easily overcome.) When this happens, the
foreground and background colors will be switched back and the bell
will sound in warning.
CHARACTER CLASSES
Clicking the left pointer button twice in rapid succession (double-
clicking) causes all characters of the same class (e.g., letters, white
space, punctuation) to be selected as a ?word?. Since different people
have different preferences for what should be selected (for example,
should filenames be selected as a whole or only the separate subnames),
the default mapping can be overridden through the use of the charClass
(class CharClass) resource.
This resource is a series of comma-separated range:value pairs.
? The range is either a single number or low-high in the range of 0
to 65535, corresponding to the code for the character or characters
to be set.
? The value is arbitrary. For example, the default table uses the
character number of the first character occurring in the set. When
not in UTF-8 mode, only the first 256 entries of this table will be
used.
The default table starts as follows -
static int charClass[256] = {
/* NUL SOH STX ETX EOT ENQ ACK BEL */
32, 1, 1, 1, 1, 1, 1, 1,
/* BS HT NL VT NP CR SO SI */
1, 32, 1, 1, 1, 1, 1, 1,
/* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
1, 1, 1, 1, 1, 1, 1, 1,
/* CAN EM SUB ESC FS GS RS US */
1, 1, 1, 1, 1, 1, 1, 1,
/* SP ! " # $ % & ' */
32, 33, 34, 35, 36, 37, 38, 39,
/* ( ) * + , - . / */
40, 41, 42, 43, 44, 45, 46, 47,
/* 0 1 2 3 4 5 6 7 */
48, 48, 48, 48, 48, 48, 48, 48,
/* 8 9 : ; < = > ? */
48, 48, 58, 59, 60, 61, 62, 63,
/* @ A B C D E F G */
64, 48, 48, 48, 48, 48, 48, 48,
/* H I J K L M N O */
48, 48, 48, 48, 48, 48, 48, 48,
/* P Q R S T U V W */
48, 48, 48, 48, 48, 48, 48, 48,
/* X Y Z [ \ ] ^ _ */
48, 48, 48, 91, 92, 93, 94, 48,
/* ` a b c d e f g */
96, 48, 48, 48, 48, 48, 48, 48,
/* h i j k l m n o */
48, 48, 48, 48, 48, 48, 48, 48,
/* p q r s t u v w */
48, 48, 48, 48, 48, 48, 48, 48,
/* x y z { | } ~ DEL */
48, 48, 48, 123, 124, 125, 126, 1,
/* x80 x81 x82 x83 IND NEL SSA ESA */
1, 1, 1, 1, 1, 1, 1, 1,
/* HTS HTJ VTS PLD PLU RI SS2 SS3 */
1, 1, 1, 1, 1, 1, 1, 1,
/* DCS PU1 PU2 STS CCH MW SPA EPA */
1, 1, 1, 1, 1, 1, 1, 1,
/* x98 x99 x9A CSI ST OSC PM APC */
1, 1, 1, 1, 1, 1, 1, 1,
/* - i c/ L ox Y- | So */
160, 161, 162, 163, 164, 165, 166, 167,
/* .. c0 ip << _ R0 - */
168, 169, 170, 171, 172, 173, 174, 175,
/* o +- 2 3 ' u q| . */
176, 177, 178, 179, 180, 181, 182, 183,
/* , 1 2 >> 1/4 1/2 3/4 ? */
184, 185, 186, 187, 188, 189, 190, 191,
/* A` A' A^ A~ A: Ao AE C, */
48, 48, 48, 48, 48, 48, 48, 48,
/* E` E' E^ E: I` I' I^ I: */
48, 48, 48, 48, 48, 48, 48, 48,
/* D- N~ O` O' O^ O~ O: X */
48, 48, 48, 48, 48, 48, 48, 215,
/* O/ U` U' U^ U: Y' P B */
48, 48, 48, 48, 48, 48, 48, 48,
/* a` a' a^ a~ a: ao ae c, */
48, 48, 48, 48, 48, 48, 48, 48,
/* e` e' e^ e: i` i' i^ i: */
48, 48, 48, 48, 48, 48, 48, 48,
/* d n~ o` o' o^ o~ o: -: */
48, 48, 48, 48, 48, 48, 48, 247,
/* o/ u` u' u^ u: y' P y: */
48, 48, 48, 48, 48, 48, 48, 48};
For example, the string ?33:48,37:48,45-47:48,38:48? indicates
that the exclamation mark, percent sign, dash, period, slash,
and ampersand characters should be treated the same way as
characters and numbers. This is useful for cutting and pasting
electronic mailing addresses and filenames.
KEY BINDINGS
It is possible to rebind keys (or sequences of keys) to arbitrary
strings for input, by changing the translations resources for the vt100
or tek4014 widgets. Changing the translations resource for events
other than key and button events is not expected, and will cause
unpredictable behavior.
Actions
The following actions are provided for use within the vt100 or tek4014
translations resources:
allow-bold-fonts(on/off/toggle)
This action sets, unsets or toggles the allowBoldFonts resource
and is also invoked by the allow-bold-fonts entry in fontMenu.
allow-color-ops(on/off/toggle)
This action sets, unsets or toggles the allowColorOps resource
and is also invoked by the allow-color-ops entry in fontMenu.
allow-font-ops(on/off/toggle)
This action sets, unsets or toggles the allowFontOps resource
and is also invoked by the allow-font-ops entry in fontMenu.
allow-mouse-ops(on/off/toggle)
This action sets, unsets or toggles the allowMousepOps resource
and is also invoked by the allow-mouse-ops entry in fontMenu.
allow-send-events(on/off/toggle)
This action sets, unsets or toggles the allowSendEvents
resource and is also invoked by the allowsends entry in
mainMenu.
allow-tcap-ops(on/off/toggle)
This action sets, unsets or toggles the allowTcapOps resource
and is also invoked by the allow-tcap-ops entry in fontMenu.
allow-title-ops(on/off/toggle)
This action sets, unsets or toggles the allowTitleOps resource
and is also invoked by the allow-title-ops entry in fontMenu.
allow-window-ops(on/off/toggle)
This action sets, unsets or toggles the allowWindowOps resource
and is also invoked by the allow-window-ops entry in fontMenu.
alt-sends-escape()
This action toggles the state of the altSendsEscape resource.
bell([percent])
This action rings the keyboard bell at the specified percentage
above or below the base volume.
clear-saved-lines()
This action does hard-reset() and also clears the history of
lines saved off the top of the screen. It is also invoked from
the clearsavedlines entry in vtMenu. The effect is identical
to a hardware reset (RIS) control sequence.
copy-selection(destname [, ...])
This action puts the currently selected text into all of the
selections or cutbuffers specified by destname. Unlike
select-end, it does not send a mouse position or otherwise
modify the internal selection state.
create-menu(m/v/f/t)
This action creates one of the menus used by xterm, if it has
not been previously created. The parameter values are the menu
names: mainMenu, vtMenu, fontMenu, tekMenu, respectively.
dabbrev-expand()
Expands the word before cursor by searching in the preceding
text on the screen and in the scrollback buffer for words
starting with that abbreviation. Repeating dabbrev-expand()
several times in sequence searches for an alternative expansion
by looking farther back. Lack of more matches is signaled by a
bell. Attempts to expand an empty word (i.e., when cursor is
preceded by a space) yield successively all previous words.
Consecutive identical expansions are ignored. The word here is
defined as a sequence of non-whitespace characters. This
feature partially emulates the behavior of ?dynamic
abbreviation? expansion in Emacs (bound there to M-/). Here is
a resource setting for xterm which will do the same thing:
*VT100*translations: #override \n\
Meta /:dabbrev-expand()
deiconify()
Changes the window state back to normal, if it was iconified.
delete-is-del()
This action toggles the state of the deleteIsDEL resource.
dired-button()
Handles a button event (other than press and release) by
echoing the event's position (i.e., character line and column)
in the following format:
^X ESC G
dump-html()
Invokes the XHTML Screen Dump feature.
dump-svg()
Invokes the SVG Screen Dump feature.
exec-formatted(format, sourcename [, ...])
Execute an external command, using the current selection for
part of the command's parameters. The first parameter, format
gives the basic command. Succeeding parameters specify the
selection source as in insert-selection.
The format parameter allows these substitutions:
%% inserts a "%".
%P the screen-position at the beginning of the highlighted
region, as a semicolon-separated pair of integers using
the values that the CUP control sequence would use.
%p the screen-position after the beginning of the highlighted
region, using the same convention as ?%P?.
%S the length of the string that ?%s? would insert.
%s the content of the selection, unmodified.
%T the length of the string that ?%t? would insert.
%t the selection, trimmed of leading/trailing whitespace.
Embedded spaces (and newlines) are copied as is.
%R the length of the string that ?%r? would insert.
%r the selection, trimmed of trailing whitespace.
%V the video attributes at the beginning of the highlighted
region, as a semicolon-separated list of integers using
the values that the SGR control sequence would use.
%v the video attributes after the end of the highlighted
region, using the same convention as ?%V?.
After constructing the command-string, xterm forks a subprocess
and executes the command, which completes independently of
xterm.
For example, this translation would invoke a new xterm process
to view a file whose name is selected while holding the shift
key down. The new process is started when the mouse button is
released:
*VT100*translations: #override Shift \
:exec-formatted("xterm -e view '%t'", SELECT)
exec-selectable(format, onClicks)
Execute an external command, using data copied from the screen
for part of the command's parameters. The first parameter,
format gives the basic command as in exec-formatted. The
second parameter specifies the method for copying the data as
in the on2Clicks resource.
fullscreen(on/off/toggle)
This action sets, unsets or toggles the fullscreen resource.
hard-reset()
This action resets the scrolling region, tabs, window size, and
cursor keys and clears the screen. It is also invoked from the
hardreset entry in vtMenu.
iconify()
Iconifies the window.
ignore()
This action ignores the event but checks for special pointer
position escape sequences.
insert()
This action inserts the character or string associated with the
key that was pressed.
insert-eight-bit()
This action inserts an eight-bit (Meta) version of the
character or string associated with the key that was pressed.
Only single-byte values are treated specially. The exact
action depends on the value of the altSendsEscape and the
metaSendsEscape and the eightBitInput resources. The
metaSendsEscape resource is tested first. See the
eightBitInput resource for a full discussion.
The term ?eight-bit? is misleading: xterm checks if the key is
in the range 128 to 255 (the eighth bit is set). If the value
is in that range, depending on the resource values, xterm may
then do one of the following:
? add 128 to the value, setting its eighth bit,
? send an ESC byte before the key, or
? send the key unaltered.
insert-formatted(format, sourcename [, ...])
Insert the current selection or data related to it, formatted.
The first parameter, format gives the template for the data as
in exec-formatted. Succeeding parameters specify the selection
source as in insert-selection.
insert-selectable(format, onClicks)
Insert data copied from the screen, formatted. The first
parameter, format gives the template for the data as in
exec-formatted. The second parameter specifies the method for
copying the data as in the on2Clicks resource.
insert-selection(sourcename [, ...])
This action inserts the string found in the selection or
cutbuffer indicated by sourcename. Sources are checked in the
order given (case is significant) until one is found.
Commonly-used selections include: PRIMARY, SECONDARY, and
CLIPBOARD. Cut buffers are typically named CUT_BUFFER0 through
CUT_BUFFER7.
insert-seven-bit()
This action is a synonym for insert(). The term ?seven-bit? is
misleading: it only implies that xterm does not try to add 128
to the key's value as in insert-eight-bit().
interpret(control-sequence)
Interpret the given control sequence locally, i.e., without
passing it to the host. This works by inserting the control
sequence at the front of the input buffer. Use ?\? to escape
octal digits in the string. Xt does not allow you to put a
null character (i.e., ?\000?) in the string.
keymap(name)
This action dynamically defines a new translation table whose
resource name is name with the suffix ?Keymap? (i.e.,
nameKeymap, where case is significant). The name None restores
the original translation table.
larger-vt-font()
Set the font to the next larger one, based on the font
dimensions. See also set-vt-font().
load-vt-fonts(name[,class])
Load fontnames from the given subresource name and class. That
is, load the ?*VT100.name.font?, resource as ?*VT100.font? etc.
If no name is given, the original set of fontnames is restored.
Unlike set-vt-font(), this does not affect the escape- and
select-fonts, since those are not based on resource values. It
does affect the fonts loosely organized under the ?Default?
menu entry, including font, boldFont, wideFont and
wideBoldFont.
maximize()
Resizes the window to fill the screen.
meta-sends-escape()
This action toggles the state of the metaSendsEscape resource.
pointer-button()
Use this action as a fall-back to handle button press- and
release-events for the mouse control sequence protocol when the
selection-related translations are suppressed with the
omitTranslation resource.
pointer-motion()
Use this action as a fall-back to handle motion-events for the
mouse control sequence protocol when the selection-related
translations are suppressed with the omitTranslation resource.
popup-menu(menuname)
This action displays the specified popup menu. Valid names
(case is significant) include: mainMenu, vtMenu, fontMenu, and
tekMenu.
print(printer-flags)
This action prints the window. It is also invoked by the print
entry in mainMenu.
The action accepts optional parameters, which temporarily
override resource settings. The parameter values are matched
ignoring case:
noFormFeed
no form feed will be sent at the end of the last line
printed (i.e., printerFormFeed is ?false?).
FormFeed
a form feed will be sent at the end of the last line
printed (i.e., printerFormFeed is ?true?).
noNewLine
no newline will be sent at the end of the last line
printed, and wrapped lines will be combined into long
lines (i.e., printerNewLine is ?false?).
NewLine
a newline will be sent at the end of the last line
printed, and each line will be limited (by adding a
newline) to the screen width (i.e., printerNewLine is
?true?).
noAttrs
the page is printed without attributes (i.e.,
printAttributes is ?0?).
monoAttrs
the page is printed with monochrome (vt220) attributes
(i.e., printAttributes is ?1?).
colorAttrs
the page is printed with ANSI color attributes (i.e.,
printAttributes is ?2?).
print-everything(printer-flags)
This action sends the entire text history, in addition to the
text currently visible, to the program given in the
printerCommand resource. It allows the same optional
parameters as the print action. With a suitable printer
command, the action can be used to load the text history in an
editor.
print-immediate()
Sends the text of the current window directly to a file, as
specified by the printFileImmediate, printModeImmediate and
printOptsImmediate resources.
print-on-error()
Toggles a flag telling xterm that if it exits with an X error,
to send the text of the current window directly to a file, as
specified by the printFileOnXError, printModeOnXError and
printOptsOnXError resources.
print-redir()
This action toggles the printerControlMode between 0 and 2.
The corresponding popup menu entry is useful for switching the
printer off if you happen to change your mind after deciding to
print random binary files on the terminal.
quit()
This action sends a SIGHUP to the subprogram and exits. It is
also invoked by the quit entry in mainMenu.
readline-button()
Supports the optional readline feature by echoing repeated
cursor forward or backward control sequences on button release
event, to request that the host application update its notion
of the cursor's position to match the button event.
redraw()
This action redraws the window. It is also invoked by the
redraw entry in mainMenu.
restore()
Restores the window to the size before it was last maximized.
scroll-back(count [,units [,mouse] ])
This action scrolls the text window backward so that text that
had previously scrolled off the top of the screen is now
visible.
The count argument indicates the number of units (which may be
page, halfpage, pixel, or line) by which to scroll. If no
count parameter is given, xterm uses the number of lines given
by the scrollLines resource.
An adjustment can be specified for the page or halfpage units
by appending a ?+? or ?-? sign followed by a number, e.g.,
page-2 to specify 2 lines less than a page.
If the second parameter is omitted ?lines? is used.
If the third parameter mouse is given, the action is ignored
when mouse reporting is enabled.
scroll-forw(count [,units [,mouse] ])
This action is similar to scroll-back except that it scrolls in
the other direction.
scroll-lock(on/off/toggle)
This action sets, unsets or toggles internal state which tells
xterm whether Scroll Lock is active, subject to the
allowScrollLock resource.
scroll-to(count)
Scroll to the given line relative to the beginning of the
saved-lines. For instance, ?scroll-to(0)? would scroll to the
beginning. Two special nonnumeric parameters are recognized:
scroll-to(begin)
Scroll to the beginning of the saved lines.
scroll-to(end)
Scroll to the end of the saved lines, i.e., to the
currently active page.
secure()
This action toggles the Secure Keyboard mode (see SECURITY),
and is invoked from the securekbd entry in mainMenu.
select-cursor-end(destname [, ...])
This action is similar to select-end except that it should be
used with select-cursor-start.
select-cursor-extend()
This action is similar to select-extend except that it should
be used with select-cursor-start.
select-cursor-start()
This action is similar to select-start except that it begins
the selection at the current text cursor position.
select-end(destname [, ...])
This action puts the currently selected text into all of the
selections or cutbuffers specified by destname. It also sends
a mouse position and updates the internal selection state to
reflect the end of the selection process.
select-extend()
This action tracks the pointer and extends the selection. It
should only be bound to Motion events.
select-set()
This action stores text that corresponds to the current
selection, without affecting the selection mode.
select-start()
This action begins text selection at the current pointer
location. See the section on POINTER USAGE for information on
making selections.
send-signal(signame)
This action sends the signal named by signame to the xterm
subprocess (the shell or program specified with the -e command
line option). It is also invoked by the suspend, continue,
interrupt, hangup, terminate, and kill entries in mainMenu.
Allowable signal names are (case is not significant): tstp (if
supported by the operating system), suspend (same as tstp),
cont (if supported by the operating system), int, hup, term,
quit, alrm, alarm (same as alrm) and kill.
set-8-bit-control(on/off/toggle)
This action sets, unsets or toggles the eightBitControl
resource. It is also invoked from the 8-bit-control entry in
vtMenu.
set-allow132(on/off/toggle)
This action sets, unsets or toggles the c132 resource. It is
also invoked from the allow132 entry in vtMenu.
set-altscreen(on/off/toggle)
This action sets, unsets or toggles between the alternate and
current screens.
set-appcursor(on/off/toggle)
This action sets, unsets or toggles the handling Application
Cursor Key mode and is also invoked by the appcursor entry in
vtMenu.
set-appkeypad(on/off/toggle)
This action sets, unsets or toggles the handling of Application
Keypad mode and is also invoked by the appkeypad entry in
vtMenu.
set-autolinefeed(on/off/toggle)
This action sets, unsets or toggles automatic insertion of line
feeds. It is also invoked by the autolinefeed entry in vtMenu.
set-autowrap(on/off/toggle)
This action sets, unsets or toggles automatic wrapping of long
lines. It is also invoked by the autowrap entry in vtMenu.
set-backarrow(on/off/toggle)
This action sets, unsets or toggles the backarrowKey resource.
It is also invoked from the backarrow key entry in vtMenu.
set-bellIsUrgent(on/off/toggle)
This action sets, unsets or toggles the bellIsUrgent resource.
It is also invoked by the bellIsUrgent entry in vtMenu.
set-cursesemul(on/off/toggle)
This action sets, unsets or toggles the curses resource. It is
also invoked from the cursesemul entry in vtMenu.
set-cursorblink(on/off/toggle)
This action sets, unsets or toggles the cursorBlink resource.
It is also invoked from the cursorblink entry in vtMenu.
set-font-doublesize(on/off/toggle)
This action sets, unsets or toggles the fontDoublesize
resource. It is also invoked by the font-doublesize entry in
fontMenu.
set-font-linedrawing(on/off/toggle)
This action sets, unsets or toggles the xterm's state regarding
whether the current font has line-drawing characters and
whether it should draw them directly. It is also invoked by
the font-linedrawing entry in fontMenu.
set-font-packed(on/off/toggle)
This action sets, unsets or toggles the forcePackedFont
resource which controls use of the font's minimum or maximum
glyph width. It is also invoked by the font-packed entry in
fontMenu.
set-hp-function-keys(on/off/toggle)
This action sets, unsets or toggles the hpFunctionKeys
resource. It is also invoked by the hpFunctionKeys entry in
mainMenu.
set-jumpscroll(on/off/toggle)
This action sets, unsets or toggles the jumpscroll resource.
It is also invoked by the jumpscroll entry in vtMenu.
set-keep-clipboard(on/off/toggle)
This action sets, unsets or toggles the keepClipboard resource.
set-keep-selection(on/off/toggle)
This action sets, unsets or toggles the keepSelection resource.
It is also invoked by the keepSelection entry in vtMenu.
set-logging(on/off/toggle)
This action sets, unsets or toggles the state of the logging
option.
set-marginbell(on/off/toggle)
This action sets, unsets or toggles the marginBell resource.
set-num-lock(on/off/toggle)
This action toggles the state of the numLock resource.
set-old-function-keys(on/off/toggle)
This action sets, unsets or toggles the state of legacy
function keys. It is also invoked by the oldFunctionKeys entry
in mainMenu.
set-pop-on-bell(on/off/toggle)
This action sets, unsets or toggles the popOnBell resource. It
is also invoked by the poponbell entry in vtMenu.
set-private-colors(on/off/toggle)
This action sets, unsets or toggles the privateColorRegisters
resource.
set-render-font(on/off/toggle)
This action sets, unsets or toggles the renderFont resource.
It is also invoked by the render-font entry in fontMenu.
set-reverse-video(on/off/toggle)
This action sets, unsets or toggles the reverseVideo resource.
It is also invoked by the reversevideo entry in vtMenu.
set-reversewrap(on/off/toggle)
This action sets, unsets or toggles the reverseWrap resource.
It is also invoked by the reversewrap entry in vtMenu.
set-sco-function-keys(on/off/toggle)
This action sets, unsets or toggles the scoFunctionKeys
resource. It is also invoked by the scoFunctionKeys entry in
mainMenu.
set-scroll-on-key(on/off/toggle)
This action sets, unsets or toggles the scrollKey resource. It
is also invoked from the scrollkey entry in vtMenu.
set-scroll-on-tty-output(on/off/toggle)
This action sets, unsets or toggles the scrollTtyOutput
resource. It is also invoked from the scrollttyoutput entry in
vtMenu.
set-scrollbar(on/off/toggle)
This action sets, unsets or toggles the scrollbar resource. It
is also invoked by the scrollbar entry in vtMenu.
set-select(on/off/toggle)
This action sets, unsets or toggles the selectToClipboard
resource. It is also invoked by the selectToClipboard entry in
vtMenu.
set-sixel-scrolling(on/off/toggle)
This action toggles between inline (sixel scrolling) and
absolute positioning. It can also be controlled via DEC
private mode 80 (DECSDM) or from the sixelScrolling entry in
the btMenu.
set-sun-function-keys(on/off/toggle)
This action sets, unsets or toggles the sunFunctionKeys
resource. It is also invoked by the sunFunctionKeys entry in
mainMenu.
set-sun-keyboard(on/off/toggle)
This action sets, unsets or toggles the sunKeyboard resource.
It is also invoked by the sunKeyboard entry in mainMenu.
set-tek-text(large/2/3/small)
This action sets the font used in the Tektronix window to the
value of the selected resource according to the argument. The
argument can be either a keyword or single-letter alias, as
shown in parentheses:
large (l)
Use resource fontLarge, same as menu entry tektextlarge.
two (2)
Use resource font2, same as menu entry tektext2.
three (3)
Use resource font3, same as menu entry tektext3.
small (s)
Use resource fontSmall, same as menu entry tektextsmall.
set-terminal-type(type)
This action directs output to either the vt or tek windows,
according to the type string. It is also invoked by the
tekmode entry in vtMenu and the vtmode entry in tekMenu.
set-titeInhibit(on/off/toggle)
This action sets, unsets or toggles the titeInhibit resource,
which controls switching between the alternate and current
screens.
set-toolbar(on/off/toggle)
This action sets, unsets or toggles the toolbar feature. It is
also invoked by the toolbar entry in mainMenu.
set-utf8-fonts(on/off/toggle)
This action sets, unsets or toggles the utf8Fonts resource. It
is also invoked by the utf8-fonts entry in fontMenu.
set-utf8-mode(on/off/toggle)
This action sets, unsets or toggles the utf8 resource. It is
also invoked by the utf8-mode entry in fontMenu.
set-utf8-title(on/off/toggle)
This action sets, unsets or toggles the utf8Title resource. It
is also invoked by the utf8-title entry in fontMenu.
set-visibility(vt/tek,on/off/toggle)
This action sets, unsets or toggles whether or not the vt or
tek windows are visible. It is also invoked from the tekshow
and vthide entries in vtMenu and the vtshow and tekhide entries
in tekMenu.
set-visual-bell(on/off/toggle)
This action sets, unsets or toggles the visualBell resource.
It is also invoked by the visualbell entry in vtMenu.
set-vt-font(d/1/2/3/4/5/6/7/e/s [,normalfont [, boldfont]])
This action sets the font or fonts currently being used in the
VTxxx window. The first argument is a single character that
specifies the font to be used:
d or D indicate the default font (the font initially used when
xterm was started),
1 through 7 indicate the fonts specified by the font1 through
font7 resources,
e or E indicate the normal and bold fonts that have been set
through escape codes (or specified as the second and
third action arguments, respectively), and
s or S indicate the font selection (as made by programs such as
xfontsel(1)) indicated by the second action argument.
If xterm is configured to support wide characters, an
additional two optional parameters are recognized for the e
argument: wide font and wide bold font.
smaller-vt-font()
Set the font to the next smaller one, based on the font
dimensions. See also set-vt-font().
soft-reset()
This action resets the scrolling region. It is also invoked
from the softreset entry in vtMenu. The effect is identical to
a soft reset (DECSTR) control sequence.
spawn-new-terminal(params)
Spawn a new xterm process. This is available on systems which
have a modern version of the process filesystem, e.g., ?/proc?,
which xterm can read.
Use the ?cwd? process entry, e.g., /proc/12345/cwd to obtain
the working directory of the process which is running in the
current xterm.
On systems which have the ?exe? process entry, e.g.,
/proc/12345/exe, use this to obtain the actual executable.
Otherwise, use the $PATH variable to find xterm.
If parameters are given in the action, pass them to the new
xterm process.
start-cursor-extend()
This action is similar to select-extend except that the
selection is extended to the current text cursor position.
start-extend()
This action is similar to select-start except that the
selection is extended to the current pointer location.
string(string)
This action inserts the specified text string as if it had been
typed. Quotation is necessary if the string contains
whitespace or non-alphanumeric characters. If the string
argument begins with the characters ?0x?, it is interpreted as
a hex character constant.
tek-copy()
This action copies the escape codes used to generate the
current window contents to a file in the current directory
beginning with the name COPY. It is also invoked from the
tekcopy entry in tekMenu.
tek-page()
This action clears the Tektronix window. It is also invoked by
the tekpage entry in tekMenu.
tek-reset()
This action resets the Tektronix window. It is also invoked by
the tekreset entry in tekMenu.
vi-button()
Handles a button event (other than press and release) by
echoing a control sequence computed from the event's line
number in the screen relative to the current line:
ESC ^P
or
ESC ^N
according to whether the event is before, or after the current
line, respectively. The ^N (or ^P) is repeated once for each
line that the event differs from the current line. The control
sequence is omitted altogether if the button event is on the
current line.
visual-bell()
This action flashes the window quickly.
The Tektronix window also has the following action:
gin-press(l/L/m/M/r/R)
This action sends the indicated graphics input code.
Default Key Bindings
The default bindings in the VTxxx window use the SELECT token, which is
set by the selectToClipboard resource. These are for the vt100 widget:
Shift Prior:scroll-back(1,halfpage) \n\
Shift Next:scroll-forw(1,halfpage) \n\
Shift Select:select-cursor-start() \
select-cursor-end(SELECT, CUT_BUFFER0) \n\
Shift Insert:insert-selection(SELECT, CUT_BUFFER0) \n\
Alt Return:fullscreen() \n\
Scroll_Lock:scroll-lock() \n\
Shift~Ctrl KP_Add:larger-vt-font() \n\
Shift Ctrl KP_Add:smaller-vt-font() \n\
Shift KP_Subtract:smaller-vt-font() \n\
~Meta :insert-seven-bit() \n\
Meta :insert-eight-bit() \n\
!Ctrl :popup-menu(mainMenu) \n\
!Lock Ctrl :popup-menu(mainMenu) \n\
!Lock Ctrl @Num_Lock :popup-menu(mainMenu) \n\
! @Num_Lock Ctrl :popup-menu(mainMenu) \n\
~Meta :select-start() \n\
~Meta :select-extend() \n\
!Ctrl :popup-menu(vtMenu) \n\
!Lock Ctrl :popup-menu(vtMenu) \n\
!Lock Ctrl @Num_Lock :popup-menu(vtMenu) \n\
! @Num_Lock Ctrl :popup-menu(vtMenu) \n\
~Ctrl ~Meta :ignore() \n\
Meta :clear-saved-lines() \n\
~Ctrl ~Meta :insert-selection(SELECT, CUT_BUFFER0) \n\
!Ctrl :popup-menu(fontMenu) \n\
!Lock Ctrl :popup-menu(fontMenu) \n\
!Lock Ctrl @Num_Lock :popup-menu(fontMenu) \n\
! @Num_Lock Ctrl :popup-menu(fontMenu) \n\
~Ctrl ~Meta :start-extend() \n\
~Meta :select-extend() \n\
Ctrl :scroll-back(1,halfpage,m) \n\
Lock Ctrl :scroll-back(1,halfpage,m) \n\
Lock @Num_Lock Ctrl :scroll-back(1,halfpage,m) \n\
@Num_Lock Ctrl :scroll-back(1,halfpage,m) \n\
:scroll-back(5,line,m) \n\
Ctrl :scroll-forw(1,halfpage,m) \n\
Lock Ctrl :scroll-forw(1,halfpage,m) \n\
Lock @Num_Lock Ctrl :scroll-forw(1,halfpage,m) \n\
@Num_Lock Ctrl :scroll-forw(1,halfpage,m) \n\
:scroll-forw(5,line,m) \n\
:select-end(SELECT, CUT_BUFFER0) \n\
:pointer-motion() \n\
:pointer-button() \n\
:pointer-button() \n\
:ignore()
The default bindings in the Tektronix window are analogous but less
extensive. These are for the tek4014 widget:
~Meta: insert-seven-bit() \n\
Meta: insert-eight-bit() \n\
!Ctrl : popup-menu(mainMenu) \n\
!Lock Ctrl : popup-menu(mainMenu) \n\
!Lock Ctrl @Num_Lock : popup-menu(mainMenu) \n\
!Ctrl @Num_Lock : popup-menu(mainMenu) \n\
!Ctrl : popup-menu(tekMenu) \n\
!Lock Ctrl : popup-menu(tekMenu) \n\
!Lock Ctrl @Num_Lock : popup-menu(tekMenu) \n\
!Ctrl @Num_Lock : popup-menu(tekMenu) \n\
Shift ~Meta: gin-press(L) \n\
~Meta: gin-press(l) \n\
Shift ~Meta: gin-press(M) \n\
~Meta: gin-press(m) \n\
Shift ~Meta: gin-press(R) \n\
~Meta: gin-press(r)
Custom Key Bindings
You can modify the translations resource by overriding parts of it, or
merging your resources with it.
Here is an example which uses shifted select/paste to copy to the
clipboard, and unshifted select/paste for the primary selection. In
each case, a (different) cut buffer is also a target or source of the
select/paste operation. It is important to remember however, that cut
buffers store data in ISO-8859-1 encoding, while selections can store
data in a variety of formats and encodings. While xterm owns the
selection, it highlights it. When it loses the selection, it removes
the corresponding highlight. But you can still paste from the
corresponding cut buffer.
*VT100*translations: #override \n\
~Shift~Ctrl: insert-selection(PRIMARY, CUT_BUFFER0) \n\
Shift~Ctrl: insert-selection(CLIPBOARD, CUT_BUFFER1) \n\
~Shift : select-end(PRIMARY, CUT_BUFFER0) \n\
Shift : select-end(CLIPBOARD, CUT_BUFFER1)
In the example, the class name VT100 is used rather than the widget
name. These are different; a class name could apply to more than one
widget. A leading ?*? is used because the widget hierarchy above the
vt100 widget depends on whether the toolbar support is compiled into
xterm.
Most of the predefined translations are related to the mouse, with a
few that use some of the special keys on the keyboard. Applications
use special keys (function-keys, cursor-keys, keypad-keys) with
modifiers (shift, control, alt). If xterm defines a translation for a
given combination of special key and modifier, that makes it
unavailable for use by applications within the terminal. For instance,
one might extend the use of Page Up and Page Down keys seen here:
Shift Prior : scroll-back(1,halfpage) \n\
Shift Next : scroll-forw(1,halfpage) \n\
to the Home and End keys:
Shift Home : scroll-to(begin) \n\
Shift End : scroll-to(end)
but then shift-Home and shift-End would then be unavailable to
applications.
Not everyone finds the three-button mouse bindings easy to use. In a
wheel mouse, the middle button might be the wheel. As an alternative,
you could add a binding using shifted keys:
*VT100*translations: #override \n\
Shift Home: copy-selection(SELECT) \n\
Shift Insert: copy-selection(SELECT) \n\
Ctrl Shift C: copy-selection(SELECT) \n\
Ctrl Shift V: insert-selection(SELECT)
You would still use the left- and right-mouse buttons (typically 1 and
3) for beginning and extending selections.
Besides mouse problems, there are also keyboards with inconvenient
layouts. Some lack a numeric keypad, making it hard to use the shifted
keypad plus and minus bindings for switching between font sizes. You
can work around that by assigning the actions to more readily accessed
keys:
*VT100*translations: #override \n\
Ctrl +: larger-vt-font() \n\
Ctrl -: smaller-vt-font()
The keymap feature allows you to switch between sets of translations.
The sample below shows how the keymap() action may be used to add
special keys for entering commonly-typed words:
*VT100.Translations: #override F13: keymap(dbx)
*VT100.dbxKeymap.translations: \
F14: keymap(None) \n\
F17: string("next") \n\
string(0x0d) \n\
F18: string("step") \n\
string(0x0d) \n\
F19: string("continue") \n\
string(0x0d) \n\
F20: string("print ") \n\
insert-selection(PRIMARY, CUT_BUFFER0)
Default Scrollbar Bindings
Key bindings are normally associated with the vt100 or tek4014 widgets
which act as terminal emulators. Xterm's scrollbar (and toolbar if it
is configured) are separate widgets. Because all of these use the X
Toolkit, they have corresponding translations resources. Those
resources are distinct, and match different patterns, e.g., the
differences in widget-name and number of levels of widgets which they
may contain.
The scrollbar widget is a child of the vt100 widget. It is positioned
on top of the vt100 widget. Toggling the scrollbar on and off causes
the vt100 widget to resize.
The default bindings for the scrollbar widget use only mouse-button
events:
: StartScroll(Forward) \n\
: StartScroll(Forward) \n\
: StartScroll(Continuous) MoveThumb() NotifyThumb() \n\
: StartScroll(Backward) \n\
: StartScroll(Backward) \n\
: MoveThumb() NotifyThumb() \n\
: NotifyScroll(Proportional) EndScroll()
Events which the scrollbar widget does not recognize at all are lost.
However, at startup, xterm augments these translations with the default
translations used for the vt100 widget, together with the resource
?actions? which those translations use. Because the scrollbar (or
menubar) widgets do not recognize these actions (but because it has a
corresponding translation), they are passed on to the vt100 widget.
This augmenting of the scrollbar's translations has a few limitations:
? Xterm knows what the default translations are, but there is no
suitable library interface for determining what customizations a
user may have added to the vt100 widget. All that xterm can do is
augment the scrollbar widget to give it the same starting point for
further customization by the user.
? Events in the gap between the widgets may be lost.
? Compose sequences begun in one widget cannot be completed in the
other, because the input methods for each widget do not share
context information.
Most customizations of the scrollbar translations do not concern key
bindings. Rather, users are generally more interested in changing the
bindings of the mouse buttons. For example, some people prefer using
the left pointer button for dragging the scrollbar thumb. That can be
set up by altering the translations resource, e.g.,
*VT100.scrollbar.translations: #override \n\
: StartScroll(Forward) \n\
: StartScroll(Continuous) MoveThumb() NotifyThumb() \n\
: StartScroll(Backward) \n\
: MoveThumb() NotifyThumb() \n\
: NotifyScroll(Proportional) EndScroll()
CONTROL SEQUENCES AND KEYBOARD
Applications can send sequences of characters to the terminal to change
its behavior. Often they are referred to as ?ANSI escape sequences? or
just plain ?escape sequences? but both terms are misleading:
? ANSI x3.64 (obsolete) which was replaced by ISO 6429 (ECMA-48) gave
rules for the format of these sequences of characters.
? While the original VT100 was claimed to be ANSI-compatible (against
x3.64), there is no freely available version of the ANSI standard
to show where the VT100 differs. Most of the documents which
mention the ANSI standard have additions not found in the original
(such as those based on ansi.sys). So this discussion focuses on
the ISO standards.
? The standard describes only sequences sent from the host to the
terminal. There is no standard for sequences sent by special keys
from the terminal to the host. By convention (and referring to
existing terminals), the format of those sequences usually conforms
to the host-to-terminal standard.
? Some of xterm's sequences do not fit into the standard scheme.
Technically those are ?unspecified?. As an example, DEC Screen
Alignment Test (DECALN) is this three-character sequence:
ESC # 8
? Some sequences fit into the standard format, but are not listed in
the standard. These include the sequences used for setting up
scrolling margins and doing forward/reverse scrolling.
? Some of the sequences (in particular, the single-character
functions such as tab and backspace) do not include the escape
character.
With all of that in mind, the standard refers to these sequences of
characters as ?control sequences?.
Xterm Control Sequences lists the control sequences which an
application can send xterm to make it perform various operations. Most
of these operations are standardized, from either the DEC or Tektronix
terminals, or from more widely used standards such as ISO-6429.
A few examples of usage are given in this section.
Window and Icon Titles
Some scripts use echo with options -e and -n to tell the shell to
interpret the string ?\e? as the escape character and to suppress a
trailing newline on output. Those are not portable, nor recommended.
Instead, use printf (POSIX).
For example, to set the window title to ?Hello world!?, you could use
one of these commands in a script:
printf '\033]2;Hello world!\033\\'
printf '\033]2;Hello world!\007'
printf '\033]2;%s\033\\' "Hello world!"
printf '\033]2;%s\007' "Hello world!"
The printf command interprets the octal value ?\033? for escape, and
(since it was not given in the format) omits a trailing newline from
the output.
Some programs (such as screen(1)) set both window- and icon-titles at
the same time, using a slightly different control sequence:
printf '\033]0;Hello world!\033\\'
printf '\033]0;Hello world!\007'
printf '\033]0;%s\033\\' "Hello world!"
printf '\033]0;%s\007' "Hello world!"
The difference is the parameter ?0? in each command. Most window
managers will honor either window title or icon title. Some will make
a distinction and allow you to set just the icon title. You can tell
xterm to ask for this with a different parameter in the control
sequence:
printf '\033]1;Hello world!\033\\'
printf '\033]1;Hello world!\007'
printf '\033]1;%s\033\\' "Hello world!"
printf '\033]1;%s\007' "Hello world!"
Special Keys
Xterm, like any VT100-compatible terminal emulator, has two modes for
the special keys (cursor-keys, numeric keypad, and certain function-
keys):
? normal mode, which makes the special keys transmit ?useful?
sequences such as the control sequence for cursor-up when pressing
the up-arrow, and
? application mode, which uses a different control sequence that
cannot be mistaken for the ?useful? sequences.
The main difference between the two modes is that normal mode sequences
start with CSI (escape [) and application mode sequences start with SS3
(escape O).
The terminal is initialized into one of these two modes (usually the
normal mode), based on the terminal description (termcap or terminfo).
The terminal description also has capabilities (strings) defined for
the keypad mode used in curses applications.
There is a problem in using the terminal description for applications
that are not intended to be full-screen curses applications: the
definitions of special keys are only correct for this keypad mode. For
example, some shells (unlike ksh(1), which appears to be hard-coded,
not even using termcap) allow their users to customize key-bindings,
assigning shell actions to special keys.
? bash(1) allows constant strings to be assigned to functions. This
is only successful if the terminal is initialized to application
mode by default, because bash lacks flexibility in this area. It
uses a (less expressive than bash's) readline scripting language
for setting up key bindings, which relies upon the user to
statically enumerate the possible bindings for given values of
$TERM.
? zsh(1) provides an analogous feature, but it accepts runtime
expressions, as well as providing a $terminfo array for scripts.
In particular, one can use the terminal database, transforming when
defining a key-binding. By transforming the output so that CSI and
SS3 are equated, zsh can use the terminal database to obtain useful
definitions for its command-line use regardless of whether the
terminal uses normal or application mode initially. Here is an
example:
[[ "$terminfo[kcuu1]" == "^[O"* ]] && \
bindkey -M viins "${terminfo[kcuu1]/O/[}" \
vi-up-line-or-history
Changing Colors
A few shell programs provide the ability for users to add color and
other video attributes to the shell prompt strings. Users can do this
by setting $PS1 (the primary prompt string). Again, bash and zsh have
provided features not found in ksh. There is a problem, however: the
prompt's width on the screen will not necessarily be the same as the
number of characters. Because there is no guidance in the POSIX
standard, each shell addresses the problem in a different way:
? bash treats characters within ?\[? and ?\]? as nonprinting (using
no width on the screen).
? zsh treats characters within ?%{? and ?%}? as nonprinting.
In addition to the difference in syntax, the shells provide different
methods for obtaining useful escape sequences:
? As noted in Special Keys, zsh initializes the $terminfo array with
the terminal capabilities.
It also provides a function echoti which works like tput(1) to
convert a terminal capability with its parameters into a string
that can be written to the terminal.
? Shells lacking a comparable feature (such as bash) can always use
the program tput to do this transformation.
Hard-coded escape sequences are supported by each shell, but are not
recommended because those rely upon particular configurations and
cannot be easily moved between different user environments.
ENVIRONMENT
Xterm sets several environment variables.
System Independent
Some variables are used on every system:
DISPLAY
is the display name, pointing to the X server (see DISPLAY NAMES
in X(7)).
TERM
is set according to the terminfo (or termcap) entry which it is
using as a reference.
On some systems, you may encounter situations where the shell
which you use and xterm are built using libraries with different
terminal databases. In that situation, xterm may choose a
terminal description not known to the shell.
WINDOWID
is set to the X window id number of the xterm window.
XTERM_FILTER
is set if a locale-filter is used. The value is the pathname of
the filter.
XTERM_LOCALE
shows the locale which was used by xterm on startup. Some shell
initialization scripts may set a different locale.
XTERM_SHELL
is set to the pathname of the program which is invoked. Usually
that is a shell program, e.g., /bin/sh. Since it is not
necessarily a shell program however, it is distinct from ?SHELL?.
XTERM_VERSION
is set to the string displayed by the -version option. That is
normally an identifier for the X Window libraries used to build
xterm, followed by xterm's patch number in parenthesis. The patch
number is also part of the response to a Secondary Device
Attributes (DA) control sequence (see Xterm Control Sequences).
System Dependent
Depending on your system configuration, xterm may also set the
following:
COLUMNS
the width of the xterm in characters (cf: ?stty columns?).
When this variable is set, curses applications (and most terminal
programs) will assume that the terminal has this many columns.
Xterm would do this for systems which have no ability to tell the
size of the terminal. Those are very rare, none newer than the
mid 1990s when SVR4 became prevalent.
HOME
when xterm is configured (at build-time) to update utmp.
LINES
the height of the xterm in characters (cf: ?stty rows?).
When this variable is set, curses applications (and most terminal
programs) will assume that the terminal has this many lines
(rows).
Xterm would do this for systems which have no ability to tell the
size of the terminal. Those are very rare, none newer than the
mid 1990s when SVR4 became prevalent.
LOGNAME
when xterm is configured (at build-time) to update utmp.
Your configuration may have set LOGNAME; xterm does not modify
that. If it is unset, xterm will use USER if it is set. Finally,
if neither is set, xterm will use the getlogin(3) function.
SHELL
when xterm is configured (at build-time) to update utmp. It is
also set if you provide a valid shell name as the optional
parameter.
Xterm sets this to an absolute pathname. If you have set the
variable to a relative pathname, xterm may set it to a different
shell pathname.
If you have set this to an pathname which does not correspond to a
valid shell, xterm may unset it, to avoid confusion.
TERMCAP
the contents of the termcap entry corresponding to $TERM, with
lines and columns values substituted for the actual size window
you have created.
This feature is, like LINES and COLUMNS, used rarely. It
addresses the same limitation of a few older systems by providing
a way for termcap-based applications to get the initial screen
size.
TERMINFO
may be defined to a nonstandard location using the configure
script.
WINDOW PROPERTIES
In the output from xprop(1), there are several properties.
Properties set by X Toolkit
WM_CLASS
This shows the instance name and the X resource class, passed to X
Toolkit during initialization of xterm, e.g.,
WM_CLASS(STRING) = "xterm", "UXTerm"
WM_CLIENT_LEADER
This shows the window-id which xterm provides with an environment
variable (WINDOWID), e.g.,
WM_CLIENT_LEADER(WINDOW): window id # 0x800023
WM_COMMAND
This shows the command-line arguments for xterm which are passed
to X Toolkit during initialization, e.g.,
WM_COMMAND(STRING) = { "xterm", "-class", "UXTerm", "-title", "uxterm", "-u8" }
WM_ICON_NAME
This holds the icon title, which different window managers handle
in various ways. It is set via the iconName resource.
Applications can change this using control sequences.
WM_LOCALE_NAME
This shows the result from the setlocale(3) function for the
LC_CTYPE category, e.g.,
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_NAME
This holds the window title, normally at the top of xterm's
window. It is set via the title resource. Applications can
change this using control sequences.
Properties set by Xterm
X Toolkit does not manage EWMH properties. Xterm does this directly.
_NET_WM_ICON_NAME
stores the icon name.
_NET_WM_NAME
stores the title string.
_NET_WM_PID
stores the process identifier for xterm's display.
Properties used by Xterm
_NET_SUPPORTED
Xterm checks this property on the supporting window to decide if
the window manager supports specific maximizing styles. That may
include other window manager hints; xterm uses the X library calls
to manage those.
_NET_SUPPORTING_WM_CHECK
Xterm checks this to ensure that it will only update the EWMH
properties for a window manager which claims EWMH compliance.
_NET_WM_STATE
This tells xterm whether its window has been maximized by the
window manager, and if so, what type of maximizing:
_NET_WM_STATE_FULLSCREEN
_NET_WM_STATE_MAXIMIZED_HORZ
_NET_WM_STATE_MAXIMIZED_VERT
FILES
The actual pathnames given may differ on your system.
/etc/shells
contains a list of valid shell programs, used by xterm to decide
if the ?SHELL? environment variable should be set for the process
started by xterm.
On systems which have the getusershell function, xterm will use
that function rather than directly reading the file, since the
file may not be present if the system uses default settings.
/var/run/utmp
the system log file, which records user logins.
/var/log/wtmp
the system log file, which records user logins and logouts.
/etc/X11/app-defaults/XTerm
the xterm default application resources.
/etc/X11/app-defaults/XTerm-color
the xterm color application resources. If your display supports
color, use this
*customization: -color
in your .Xdefaults file to automatically use this resource file
rather than /etc/X11/app-defaults/XTerm. If you do not do this,
xterm uses its compiled-in default resource settings for colors.
/usr/share/pixmaps
the directory in which xterm's pixmap icon files are installed.
ERROR MESSAGES
Most of the fatal error messages from xterm use the following format:
xterm: Error XXX, errno YYY: ZZZ
The XXX codes (which are used by xterm as its exit-code) are listed
below, with a brief explanation.
1 ERROR_MISC
miscellaneous errors, usually accompanied by a specific message,
11 ERROR_FIONBIO
main: ioctl() failed on FIONBIO
12 ERROR_F_GETFL
main: ioctl() failed on F_GETFL
13 ERROR_F_SETFL
main: ioctl() failed on F_SETFL
14 ERROR_OPDEVTTY
spawn: open() failed on /dev/tty
15 ERROR_TIOCGETP
spawn: ioctl() failed on TIOCGETP
17 ERROR_PTSNAME
spawn: ptsname() failed
18 ERROR_OPPTSNAME
spawn: open() failed on ptsname
19 ERROR_PTEM
spawn: ioctl() failed on I_PUSH/"ptem"
20 ERROR_CONSEM
spawn: ioctl() failed on I_PUSH/"consem"
21 ERROR_LDTERM
spawn: ioctl() failed on I_PUSH/"ldterm"
22 ERROR_TTCOMPAT
spawn: ioctl() failed on I_PUSH/"ttcompat"
23 ERROR_TIOCSETP
spawn: ioctl() failed on TIOCSETP
24 ERROR_TIOCSETC
spawn: ioctl() failed on TIOCSETC
25 ERROR_TIOCSETD
spawn: ioctl() failed on TIOCSETD
26 ERROR_TIOCSLTC
spawn: ioctl() failed on TIOCSLTC
27 ERROR_TIOCLSET
spawn: ioctl() failed on TIOCLSET
28 ERROR_INIGROUPS
spawn: initgroups() failed
29 ERROR_FORK
spawn: fork() failed
30 ERROR_EXEC
spawn: exec() failed
32 ERROR_PTYS
get_pty: not enough ptys
34 ERROR_PTY_EXEC
waiting for initial map
35 ERROR_SETUID
spawn: setuid() failed
36 ERROR_INIT
spawn: can't initialize window
46 ERROR_TIOCKSET
spawn: ioctl() failed on TIOCKSET
47 ERROR_TIOCKSETC
spawn: ioctl() failed on TIOCKSETC
49 ERROR_LUMALLOC
luit: command-line malloc failed
50 ERROR_SELECT
in_put: select() failed
54 ERROR_VINIT
VTInit: can't initialize window
57 ERROR_KMMALLOC1
HandleKeymapChange: malloc failed
60 ERROR_TSELECT
Tinput: select() failed
64 ERROR_TINIT
TekInit: can't initialize window
71 ERROR_BMALLOC2
SaltTextAway: malloc() failed
80 ERROR_LOGEXEC
StartLog: exec() failed
83 ERROR_XERROR
xerror: XError event
84 ERROR_XIOERROR
xioerror: X I/O error
85 ERROR_ICEERROR
ICE I/O error
90 ERROR_SCALLOC
Alloc: calloc() failed on base
91 ERROR_SCALLOC2
Alloc: calloc() failed on rows
102 ERROR_SAVE_PTR
ScrnPointers: malloc/realloc() failed
BUGS
Large pastes do not work on some systems. This is not a bug in xterm;
it is a bug in the pseudo terminal driver of those systems. Xterm
feeds large pastes to the pty only as fast as the pty will accept data,
but some pty drivers do not return enough information to know if the
write has succeeded.
When connected to an input method, it is possible for xterm to hang if
the XIM server is suspended or killed.
Many of the options are not resettable after xterm starts.
This program still needs to be rewritten. It should be split into very
modular sections, with the various emulators being completely separate
widgets that do not know about each other. Ideally, you'd like to be
able to pick and choose emulator widgets and stick them into a single
control widget.
There needs to be a dialog box to allow entry of the Tek COPY file
name.
AUTHORS
Far too many people.
These contributed to the X Consortium: Loretta Guarino Reid (DEC-UEG-
WSL), Joel McCormack (DEC-UEG-WSL), Terry Weissman (DEC-UEG-WSL),
Edward Moy (Berkeley), Ralph R. Swick (MIT-Athena), Mark Vandevoorde
(MIT-Athena), Bob McNamara (DEC-MAD), Jim Gettys (MIT-Athena), Bob
Scheifler (MIT X Consortium), Doug Mink (SAO), Steve Pitschke
(Stellar), Ron Newman (MIT-Athena), Jim Fulton (MIT X Consortium), Dave
Serisky (HP), Jonathan Kamens (MIT-Athena).
Beginning with XFree86, there were far more identifiable contributors.
The THANKS file in xterm's source lists 243 in June 2022. Keep in mind
these: Jason Bacon, Jens Schweikhardt, Ross Combs, Stephen P. Wall,
David Wexelblat, and Thomas Dickey (invisible-island.net).
SEE ALSO
resize(1), luit(1), uxterm(1), X(7), Xcursor(7), pty(4), tty(4)
Xterm Control Sequences (this is the file ctlseqs.ms).
https://invisible-island.net/xterm/xterm.html
https://invisible-island.net/xterm/manpage/xterm.html
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
https://invisible-island.net/xterm/xterm.faq.html
https://invisible-island.net/xterm/xterm.log.html
X Toolkit Intrinsics ? C Language Interface (Xt),
Joel McCormack, Paul Asente, Ralph R. Swick (1994),
Thomas E. Dickey (2019).
Inter-Client Communication Conventions Manual (ICCCM),
David Rosenthal and Stuart W. Marks (version 2.0, 1994).
Extended Window Manager Hints (EWMH),
X Desktop Group (version 1.3, 2005).
EWMH uses UTF8_STRING pervasively without defining it, but does mention
the ICCCM. Version 2.0 of the ICCCM does not address UTF-8. That is
an extension added in XFree86.
? Markus Kuhn summarized this in UTF-8 and Unicode FAQ for Unix/Linux
(2001), in the section ?Is X11 ready for Unicode??
https://www.cl.cam.ac.uk/~mgk25/unicode.html
? Juliusz Chroboczek proposed the UTF8_STRING selection atom in
1999/2000, which became part of the ICCCM in XFree86.
https://www.irif.fr/~jch/software/UTF8_STRING/
An Xorg developer removed that part of the documentation in 2004
when incorporating other work from XFree86 into Xorg. The feature
is still supported in Xorg, though undocumented as of 2019.
Patch #390 2024-02-19 XTERM(1)