Заголовок окна PS1 под PuTTY с экраном GNU

В настоящее время я устанавливаю свой заголовок PS1, объединяя три переменные в моем.bashrc таким образом:

export TERMSERVER=`who am i | awk '{print $NF}' | tr -d ')''('`
if [ -n "$TERMSERVER" ] ; then
  PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL] <-- $TERMSERVER'
else
  PS1_TITLE='\h ($MACHTYPE) - $SHELL[$SHLVL]'
fi
export PS1="$PS1_TITLE\n$PS1_LINE\n$PS1_PROMPT"

Я также открываю несколько PuTTY и запускаю разные экраны GNU в каждом PuTTY, каждый с именем сеанса, например:

screen -T screen -U -S session-1 (in PuTTY #1)
screen -T screen -U -S session-2 (in PuTTY #1)

Мне бы очень хотелось, чтобы сессия-1 или сессия-2 появлялись в заголовке моего окна PuTTY, но я не могу найти правильную конфигурацию.screenrc для работы с тяжелыми строками. Я также не могу найти способ правильно сопоставить содержимое "/var/run/screen/S-user" с моим текущим сеансом. Я попытался использовать ${PPID}, но он потерпит неудачу, если в подоболочке.

Выдержка из моего текущего.screenrc:

# Every x seconds, requery window title                     
backtick 1 600 600 id -un                                   

# The window's title                                        
hardstatus ignore        
# *** this is the current window title I use since I can't get what I want.
hardstatus string "%1`@%H"                               

caption always                                              
caption string "%{= KW}%-w%{= wk}%50>%n %t%{-}%+w%< %=%H %l"

Есть ли способ получить то, что я хочу?

1 ответ

Решение

Если ты хочешь это screen печатает название сеанса в заголовке окна PuTTY, добавьте эту функцию к вашему .bashrc:

screen ()
{
    sessionname=$(echo $@ | fgrep -- '-S ' | sed 's/.*-S \([^ ]\+\).*/\1/');
    echo -ne "\033]0;${sessionname:-Putty}\007";
    command screen $@;
    echo -ne "\033]0;Putty\007"
}

Запустите экран как обычно.

Функция проверяет параметр с именем -S, извлекает имя сеанса, устанавливает его с помощью escape-последовательностей терминала (или устанавливает Putty, если имя сеанса пустое) и запускает screen двоичный файл. Когда screen бинарные выходы, заголовок окна PuTTY сбрасывается на Putty.

Так как видя, значит верить:-):

Это сеанс Putty, готовый для выполнения экрана.Сессия замазки готова к выполнению экрана

Внутри сеанса экрана. Обратите внимание на заголовок окна PuTTY.Внутри сеанса экрана.  Заголовок - это имя сеанса экрана

Сеанс экрана закончился. Название сброшено.Сеанс экрана закончился.  Название - Замазка

Другие вопросы по тегам