(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Next Previous Contents

6. Appendix: escapes for other terminal types

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.

6.1 IBM aixterm

aixterm recognises the xterm escape sequences.

6.2 SGI 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
For the full list of 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.

6.3 Sun 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
These are truly awful programs: use something else.

6.4 CDE 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).

6.5 HPterm

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


Next Previous Contents