Подтвердить что ты не робот

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

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

Однако я не могу этого сделать. Любые идеи?

4b9b3361

Ответ 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"