GNU 屏幕标题或硬状态行中的右对齐文本

Ale*_*x J 6 linux unix gnu-screen

我的 .screenrc 中有这个

caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%=| %l | ${FULLHOST}"
Run Code Online (Sandbox Code Playgroud)

它通常显示如下内容:

[01:06] 0$ vim  1$ top  2-$ tail  [3$* ~]          | 0.26 0.54 0.36 | machine.domain.com
Run Code Online (Sandbox Code Playgroud)

但是,当我打开很多窗口时,右侧的数据会被推离边缘并被截断:

[01:07] 0$ vim  1$ top  2$ tail  3$ ~  4$ ~  5$ ~  6-$ ~  [7$* ~] | 0.21 0.46 0.34 | mac
Run Code Online (Sandbox Code Playgroud)

如何更改标题命令,以便在必要时截断窗口列表,而不是将正确的信息从边缘推送出去?如果活动窗口也总是显示,则奖励积分。

Ale*_*x J 4

我目前正在使用的另一个解决方案。我使用的是 '%-043=' (它与 -30%(又名 70%)标记对齐),而不是原始行中的 '%=' (它与 bender 中的 '%-30=' 对齐)到 -43 字符标记)。但当然,这与本德有同样的问题,我需要抵消每个服务器的变化量。解决方案是使用如下命令编辑每个服务器的 .screenrc:

sed -i "s/043/0$(( 19 + $#FULLHOST ))/" ~/.screenrc
Run Code Online (Sandbox Code Playgroud)

(19是负载显示使用的字符数和间距)

由于我的 .screenrc 是由 shell 的 .rc 文件生成的(如果不存在),因此我可以在执行此操作后立即运行此命令,并最终为每个服务器提供正确的偏移对齐。不优雅,但很有效!

剩下的问题,我不太关心解决:

  • 窗口列表(以及左侧的任何内容,包括时间)现在被推到左侧。我通过删除时钟解决了这个问题。
  • 如果机器的主机名发生变化,我需要重新生成 .screenrc,这涉及删除它,然后启动一个新的 shell。