Page suivante - Page précédente - Table des matières

6. Annexe : séquences d'échappement pour d'autres émulateurs determinaux

De nombreux émulateurs de terminaux modernes sont des dérivés de xterm ou rxvt et acceptent les séquences d'échappement que nous avons utilisées jusqu'ici. Certains terminaux propriétaires fournis avec les diverses variantes d'unix utilisent leur propres séquences.

6.1 aixterm d'IBM

aixterm reconnaît les séquences d'échappement de xterm.

6.2 wsh, xwsh et winterm de SGI

Ces terminaux définissent $TERM=iris-ansi et utilisent :

  • ESCP1.ytexteESC\ Pour le titre de la fenêtre
  • ESCP3.ytexteESC\ Pour le titre de l'icône
La liste complète des séquences est donnée dans la page man xwsh(1G).

Les terminaux d'Irix supportent également les séquences de xterm pour définir individuellement le titre de la fenêtre et de l'icône, mais pas celle pour définir les deux en même temps.

6.3 cmdtool et shelltool de Sun

cmdtool et shelltool définissent $TERM=sun-cmd et utilisent :

  • ESC]ltexteESC\ Pour le titre de la fenêtre
  • ESC]LtexteESC\ Pour le titre de l'icône
Ce sont des programmes vraiment horribles, il vaut mieux utiliser autre chose.

6.4 CDE dtterm

dtterm définit $TERM=dtterm. Il semble qu'il reconnaisse à la fois les séquences xterm standard ainsi que celles du cmdtool de Sun (testé sur Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20).

6.5 HPterm

hpterm définit $TERM=hpterm et utilise les séquences suivantes :

  • ESC&f0klongueurDtexte Donne le texte texte de longueur longueur comme titre de fenêtre
  • ESC&f-1klongueurDtexte Donne le texte texte de longueur longueur comme nom de l'icône

Un programme C simple pour calculer la longueur et afficher la bonne séquence ressemble à :

#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);
}

On peut également écrire un shell-script équivalent, utilisant ${#string} (zsh, bash, ksh) ou ${%string} (tcsh) pour obtenir la longueur d'une chaîne. L'exemple suivant est pour 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


Page suivante - Page précédente - Table des matières