Как отобразить текущее имя сеанса или "sockname" сеанса экрана в строке состояния?
Я запускаю несколько сеансов экрана, каждый из которых создан с помощью "screen -S name", и я хотел бы иметь возможность отображать в строке состояния имя , которое я использовал для создания текущий сеанс экрана.
Однако я не могу этого сделать. Любые идеи?
Ответы
Ответ 1
screen
имеет две строки состояния, панель заголовка и панель жесткого диска, обе из которых используют escape-строки, указанные в разделе "STRING ESCAPES" экран человека. К сожалению, нет выхода, который напрямую относится к имени сеанса.
Однако есть хак, который позволит вам это сделать.
screen
передает имя сеанса в оболочку с помощью переменной $STY
. Когда оболочка пытается установить заголовок окна (используя один из этих методов) screen
фиксирует эту попытку и сохраняет ее в чем-то, что смущает вызов "window hardstatus", у которого есть побег, который вы можете использовать: %h
.
Итак, если у вас есть заголовок или панель жесткого диска, чтобы включить %h
и попробуйте установить оболочку в заголовок окна $STY
, тогда %h
будет заменен именем сеанса, когда панель отображается.
Ответ 2
Самый простой способ отобразить имя сеанса -
C-a :
sessionname
(без указания имени после sessionname
)
См. раздел "НАСТРОЙКА" в экране человека
Ответ 3
В текущих версиях screen
для строки hardstatus есть флаг %S
.
MWE (.screenrc):
hardstatus on
hardstatus alwayslastline
hardstatus string "%S"
Отображает имя сеанса без идентификатора (например, ${STY#*.}
).
(О том же ответе на другие вопросы здесь и здесь для полноты).
Ответ 4
У Super User есть ответ на этот вопрос, который не требует $STY
, вместо этого использует команду конфигурации экрана backtick
и screen -ls
: https://superuser.com/a/212520
Ответ 5
перефразировать из https://superuser.com/a/212520/151988, поместите это в свой ~/.screenrc;
screen
screen $SHELL -c 'screen -X caption always "$STY"'
Ответ 6
Как говорит max_cantor в ответе SuperUser, в версию 4.1.0 следует добавить escape-символ для имени сеанса. Похоже, что функция escape-символа была добавлена с относительно небольшим патчем в 2008 году. Поэтому, если вы чувствуете себя храбрым, вы можете git сделайте копию версии версии 4.1.0 и попробуйте ее.
Я попробую это с версией разработки, когда я получу шанс.
Ответ 7
Если ничего не работает (как и для меня), в качестве обходного пути вы можете создать окно с номером 0 и задать название для имени вашего экрана:
screen -S myscreen
C^a :title "myscreen"