Many modern terminals are descended from xterm or
rxvt and support the escape sequences we have used
so far. Some proprietary terminals shipped with various flavours
of unix use their own escape sequences.
aixterm
aixterm recognises the xterm escape
sequences.
wsh, xwsh and
winterm
These terminals set $TERM=iris-ansi and use the
following escapes:
ESCP1.ystringESC\ Set window title to
string
ESCP3.ystringESC\ Set icon title to
string
xwsh escapes see the
xwsh(1G) man page.
The Irix terminals also support the xterm escapes to
individually set window title and icon title, but not the escape
to set both.
cmdtool and
shelltool
cmdtool and shelltool both set
$TERM=sun-cmd and use the following escapes:
ESC]lstringESC\ Set window title to
string
ESC]LstringESC\ Set icon title to
string
dtterm
dtterm sets $TERM=dtterm, and appears
to recognise both the standard xterm escape
sequences and the Sun cmdtool sequences (tested on
Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20).
hpterm sets $TERM=hpterm and uses the
following escapes:
ESC&f0klengthDstring Set window title
to string of length length
ESC&f-1klengthDstring Set icon title to
string of length length
A basic C program to calculate the length and echo the string looks like this:
#include <string.h> int main(int argc, char *argv[]) { printf("\033&f0k%dD%s", strlen(argv[1]), argv[1]); printf("\033&f-1k%dD%s", strlen(argv[1]), argv[1]); return(0); }
We may write a similar shell-script, using the
${#string} (zsh, bash,
ksh) or ${%string} (tcsh)
expansion to find the string length. The following is for
zsh:
case $TERM in hpterm) str="\e]0;%n@%m: %~\a" precmd () {print -Pn "\e&f0k${#str}D${str}"} precmd () {print -Pn "\e&f-1k${#str}D${str}"} ;; esac