如何在状态栏中显示屏幕会话的当前“会话”名称或“sockname”?

时间:2010-03-19 18:27:18

标签: gnu-screen

我运行多个屏幕会话,每个会话都使用'screen -S 名称 '创建,我希望能够在状态栏中显示 名称 我曾经创建过当前的屏幕会话。

然而,我似乎无法做到这一点。有什么想法吗?

7 个答案:

答案 0 :(得分:36)

显示会话名称的最简单方法是

  C-a : 
  sessionname

(未在sessionname之后指定名称)

请参阅man screen

中的“自定义”部分

答案 1 :(得分:18)

screen有两个状态栏,标题栏和hardstatus栏,两者都使用man screen的“STRING ESCAPES”部分中指定的字符串转义符。不幸的是,没有直接引用会话名称的转义。

然而,有一个黑客可以让你这样做。

screen使用$STY变量将会话名称传递给shell。当shell尝试设置窗口标题时(使用one of these methodsscreen捕获该尝试,并将其存储在令人困惑的称为“窗口hardstatus”的内容中,它确实有一个可以使用的转义: %h

因此,如果您将标题或hardstatus栏设置为包含%h并让shell尝试将窗口标题设置为$STY,则%h将替换为{{1}}显示栏时的会话名称。

答案 2 :(得分:9)

在当前版本的screen中,hardstatus行有一个标记%S

MWE(.screenrc):

hardstatus on
hardstatus alwayslastline
hardstatus string "%S"

这会显示会话名称​​,但不包含 ID(例如${STY#*.})。

(对于完整性,其他问题herehere的答案相同)。

答案 3 :(得分:2)

超级用户有一个不需要$STY的答案,而是使用backtick屏幕配置命令和screen -lshttps://superuser.com/a/212520

答案 4 :(得分:2)

https://superuser.com/a/212520/151988转述,将其放入〜/ .screenrc;

screen 
screen $SHELL -c 'screen -X caption always "$STY"'

答案 5 :(得分:1)

如果没有其他工作(对我而言),作为一种解决方法,您可以创建一个数字为0的窗口并将标题设置为您的屏幕名称:

screen -S myscreen
C^a :title "myscreen"

答案 6 :(得分:0)

正如max_cantor在SuperUser Answer中所说,会话名称的转义字符应添加到版本4.1.0。 It looks like转义字符功能在2008年添加了一个相对较小的补丁。所以,如果你感觉很勇敢,你可以给自己一个开发版本4.1.0的副本并试一试。

当我有机会时,我会用开发版试试这个。