Как установить заголовок терминала с помощью команды tput?


9

Благодаря этому ответу я обнаружил, что годами наивно настраивал цвета терминала в своем приглашении.

Теперь я изменил свой .bashrc, чтобы использовать команды 'tput' для окрашивания различных элементов моего приглашения. Единственный оставшийся управляющий код, который у меня есть, это:

TITLEBAR="\[\033]2; PROD - \u@\h:\w \007\]"

Кто-нибудь знает, есть ли атрибут tput / terminfo, который я могу использовать для установки строки заголовка моего окна терминала, чтобы я мог исключить этот выход?

Ответы:


9

Фактические возможности: tsl (в строку состояния) и fsl (из строки состояния), но, конечно, тогда не все терминалы. В частности, в Linux вам нужно установить в своем терминале xterm + sl или что-то подобное.

Вы можете проверить это с

export TERM=xterm+sl
echo `tput tsl` Hello world `tput fsl`; sleep 10

Я не стал бы беспокоиться и сохранить эти побеги в .bashrc


1
Кажется, моей копии Ubuntu не хватает информации о терминале. :( Я обвиняю в неполных файлах terminfo :)
Дэвид Пашли

1
Экран, однако, кажется, поддерживает их просто отлично. Спасибо!
Мурали Суриар

3
\033];является escape-последовательностью xtermдля «Команда операционной системы» . Я не знаю, как это сделать в tput, но если это возможно сделать через tput, это было бы лучшим способом для настройки заголовка кросс-платформенного терминала. Например, на xterm, это приведет к последовательности \033]0;Title\007. Смотрите также здесь
Wyatt8740

@ codehead Ваше решение смущает, потому что, если я export TERM=xterm+slнабираю текст, у меня больше не будет синтаксического старта в vim.
SebMa

2

Посмотрев файл xterm terminfo, я не могу найти никакого кода, идентичного этой команде, поэтому я подозреваю, что его нет.

Если вам интересно, на странице руководства terminfo перечислены все команды, которые понимают termcap и terminfo. Я декомпилировал файл базы данных terminfo, используя:

# infocmp -L xterm 

2

Я не могу комментировать, поэтому дополнительный ответ:

Если вы используете tsl / fsl, не забудьте сначала запросить у терминала hs. hs должно быть истинным, если поддерживаются tsl / fsl (и другие * sl).

tput hs && { echo ....; }

1
+1, если у вас есть ссылка для этого.
10

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.