Как отобразить текущее имя "сеанса" или "sockname" сеанса экрана в строке состояния?

Я запускаю несколько сеансов экрана, каждый из которых создается с именем "screen -S name ", и я хотел бы иметь возможность отображать в строке состояния имя, которое я использовал для создания текущего сеанса экрана.

Тем не менее, я не могу этого достичь. Есть идеи?

3 ответа

Решение

Это будет в следующей версии: http://savannah.gnu.org/bugs/index.php?23738

Также вы можете использовать переменную терминала $STYХотя люди, кажется, получают противоречивые результаты с этим.

Макс Кантор ссылается на следующую версию в своем ответе. Теперь это легко работает с %S в линии hardstatus.

MWE (.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

Отображает имя сеанса без идентификатора (например, ${STY#*.}).

(Тот же ответ на другие вопросы здесь и здесь для полноты).

Это было успешно эмулировано, как включить имя сеанса экрана в hardstatus?

Я улучшил это еще больше, следующим образом:

# generates equivalent of $STY followed by "on $HOST" if $STY is non-standard
backtick 10 60 60 sh -c 'sty=$(screen -ls | grep --color=no -o "$PPID[^[:space:]]*") ; if [ ${sty##*.} = $HOST ] ; then echo $sty ; else echo "$sty on $HOST" ; fi'
# includes session name thanks to backtick 10
hardstatus string "[screen %n%?: %t%? (%10`)] %h"
Другие вопросы по тегам