CITForum Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети ОС Hardware
Как сменить заголовок xterm
Пред.След.

Приложение: escape-последовательности для других терминалов

Большинство современных терминалов являются производными xterm или rxvt и поддерживают те же escape-последовательности, которыми мы пользовались раньше. Некоторые фирменные терминалы, идущие вместе с различными версиями Unix, имеют свои собственные escape-последовательности.

IBM aixterm

aixterm понимает escape-последовательности xterm.

SGI wsh, xwsh и winterm

Эти терминалы устанавливают $TERM=iris-ansi и используют escape-последовательности:

  • ESCP1.yстрокаESC\ Устанавливает заголовок окна

  • ESCP3.yстрокаESC\ Устанавливает имя иконки

Для полного списка escape-последовательностей xwsh: man 1G xwsh.

Терминалы Irix также поддерживают последовательности xterm для установки заголовка окна и имени иконки раздельно, но не для установки и того и другого вместе.

Sun cmdtool и shelltool

cmdtool и shelltool устанавливают $TERM=sun-cmd и используют последовательности:

  • ESC]lстрокаESC\ Устанавливает заголовок окна

  • ESC]LстрокаESC\ Устанавливает имя иконки

Это ужасная программа - пользуйтесь чем-нибудь другим.

CDE dtterm

dtterm устанавливает $TERM=dtterm и понимает как последовательности xterm, так и Sun cmdtool (проверено на Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20).

HPterm

hpterm устанавливает $TERM=hpterm и использует последовательности:

  • ESC&f0kдлинаDстрока Устанавливает строку длиной в качестве заголовка окна

  • ESC&f-1kдлинаDстрока Устанавливает строку длиной в качестве имени иконки

Простая программа на C, вычисляющая длину строки и выводящая ее, выглядит примерно так:

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

Можно написать простой скрипт, использующий ${#string} (zsh, bash, ksh) или ${%string} (tcsh) для вычисления длины строки. Для 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


Пред.НачалоСлед.
Вывод имени текущей задачи Приложение: примеры на других языках

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети ОС Hardware

CITForum © 1997–2025