: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).
Xterm provides selection data using the cells of characters which it
displays. It fills those cells using sequences of bytes and control
sequences:
? By default, xterm uses UTF-8 encoding if your locale uses that
encoding. The utf8 and locale resources control that behavior.
When decoding UTF-8, xterm may compose certain base- and combining-
characters. Use the precompose resource to enable or disable this
feature.
Xterm has other resources for specialized encoding needs, including
allowC1Printable, showMissingGlyphs, and utf8Weblike.
? Xterm stores base- and combining characters for each cell in its
window. It does not store the sequence of bytes which composed
those characters. Selection uses the characters which xterm stores
in each cell.
If the selection target accepts UTF-8, xterm copies all of the base-
and combining characters to the target. If the selection target
does not accept UTF-8, e.g., to a cut buffer, xterm copies only what
the target accepts, using the defaultString resource to fill cells
which cannot be represented in the target.
? All of the cells in xterm's window are uninitialized at first.
Erasing the screen makes the cells uninitialized. Uninitialized
cells are displayed as spaces.
By default, selecting rows on xterm's window will highlight all of
the cells that the pointer traverses while you select. If the
highlightSelection resource is set, xterm will not highlight
trailing uninitialized cells on the selected rows.
The trimSelection resource allows you to discard trailing blanks
from each selected row, both from uninitialized cells as well as
those written by an application.
? As xterm writes characters in its window, and wraps text at the
right margin, it remembers that the text was wrapped. Use the
showWrapMarks resource to show this in the window.
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 key-format and key-modifier modes to the values
set by resources, i.e.,
formatCursorKeys, formatFunctionKeys,
formatKeypadKeys, formatModifierKeys,
formatOtherKeys, and formatSpecialKeys.
as well as
modifyCursorKeys, modifyFunctionKeys,
modifyKeyboard, modifyKeypadKeys,
modifyModifierKeys, modifyOtherKeys, and
modifySpecialKeys.
? 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.
? 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 menu selection modifies 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. The menu selection modifies 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. The menu
selection modifies 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 allowMouseOps 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.
If xterm is configured to support block-selection, this action
accepts a parameter ?block? which initiates a block-selection
rather than the default character-oriented selection.
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(block) \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(1) (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(1) 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(1) 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. It also removes certain
environment variables which are known to interfere with other
applications. For instance, it removes COLUMNS, LINES, and TERMCAP in
configurations where those are unnecessary.
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.
XCURSOR_THEME
See cursorTheme resource.
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 #407 2026-02-16 XTERM(1)
Content-Type: text/html
Traceback (most recent call last):
File "/usr/lib/cgi-bin/man.cgi", line 108, in <module>
pdf.output(f"/var/www/html/Man_PDF/{mycmd}.pdf")
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.14/dist-packages/fpdf/deprecation.py", line 59, in wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.14/dist-packages/fpdf/fpdf.py", line 6538, in output
Path(name).write_bytes(self.buffer)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3.14/pathlib/__init__.py", line 797, in write_bytes
with self.open(mode='wb') as f:
~~~~~~~~~^^^^^^^^^^^
File "/usr/lib/python3.14/pathlib/__init__.py", line 772, in open
return io.open(self, mode, buffering, encoding, errors, newline)
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/var/www/html/Man_PDF/xterm.pdf'