将 GNU Screen 的监控功能定向到 hardstatusline

将 GNU Screen 的监控功能定向到 hardstatusline

我真的很喜欢屏幕 cM 和 c-_ 中的监控功能,但每当我监控的屏幕上发生事件(或者如果是 c-_ 则不发生)时,消息就不会转到我拥有的硬状态行。

我真正想要的是,但不知道该怎么做,就是设置它,这样当发生监控事件时,屏幕的颜色就会改变。我认为这是可能的,因为我的活动屏幕是白色的,非活动屏幕是绿色的(在硬状态行上)。

对我来说,实现这个会非常酷……

编辑:好的,我确信我可以以某种方式做到这一点。我想要的是当活动停止 30 秒时(或当活动开始时,取决于它处于哪种模式),屏幕名称的颜色会发生变化。默认情况下,名称前面会有一个 @。

这是我当前的硬状态行(我从一个网站上复制了这个,所以我无法准确地解释它。)hardstatus 字符串'%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'

答案1

我认为这是不可能的。当涉及到窗口列表时,我看到三种显示它们的方法:仅 %w 、 %-w %t %+w 和 %W 。给你最多控制权的是 %-w 和 %+w ,它们分别表示“当前窗口之前的所有窗口”和“当前窗口之后的所有窗口”。我找不到任何方法来定制它们,除了使它们成为 %-Lw 和 %+Lw 以启用要显示的标志。虽然状态字符串确实支持带有 %? 的条件,但在这种情况下这没有帮助,因为标签栏大多是自动生成的。

但是您可以使用活动命令更改通知消息的格式。

答案2

不能完全做到这一点(好吧,继续阅读,也许你可以),但是如果这样做怎么样:

caption always
caption string "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

在您的 screenrc 中,然后在每个屏幕内运行您的监控程序,该程序根据其活动级别使用字符串设置其屏幕标题:

'\033kTITLE\033\\'

这将允许您在标题行中看到活动状态(也许使用固定宽度的字符串,例如'.....','X....','XXXXX'。

也许有人有足够的 .screenrc 魔力来配置一个标题行,如下所示:“显示窗口列表,但以特定颜色显示标题为“X”的任何窗口(也许以另一种颜色显示标题为“XX”的窗口)。或者,仅在活动上设置标题,并且仅在窗口有任何标题时突出显示。我对此没有足够的魔力。

相关内容