如何禁用“屏幕 -D -R”上的通知

如何禁用“屏幕 -D -R”上的通知

我正在运行屏幕 -D -R(可以选择使用 -S 名称),它运行良好,但有一个问题 - 当给定的屏幕之前不存在时,我会收到通知“新屏幕......”,然后令人恼火的等待。

我该如何禁用这个特定通知?

答案1

不幸的是,此行为在源代码中是硬编码的:使用相同的测试来确定是否发出“新屏幕...”通知以及确定是否附加到正在运行的会话。(在屏幕 4.0.3 源代码中,(rflag && (rflag & 1) == 0)attacher.cscreen.crflag中, 为 1,-r为 2。-R

如果您愿意重新编译,修补程序很简单:删除显示消息的行screen.c

您可以通过输入一些内容来让消息消失。如果您不想输入将到达屏幕窗口内的应用程序的键,您可以输入C-a `或其他未绑定的键。

一种简单的解决方法是立即分离屏幕会话(使用C-a d或使用文件detach中的命令screenrc;当也指定-m时,命令行不起作用-R),然后再次附加到它(例如,再次运行相同的命令)。

一个非常笨拙但完全自动化的解决方法是在文件中包含以下几行,screenrc以便最初跳过消息并在一秒钟后重新启用它们:

msgwait 0
screen -t post_initialization 39 sh -c 'sleep 1; screen -X msgwait 5'

(39 是可能的最高窗口号,它是一个编译时选项(MAXWIN)。)

请注意,这两种解决方法都会隐藏screen启动时选择显示的任何消息,而不仅仅是无用的“新屏幕......”消息。

答案2

我刚刚遇到了同样的问题。在最新版本的屏幕中,您可以指定-q标志以使屏幕安静,并阻止其显示。

来源节目

if (rflag && (rflag & 1) == 0 && !quietflag)

所以我不知道吉尔斯在哪里找到它的,或者什么时候改变它的。

答案3

好吧,我来晚了,但我遇到了同样的问题。我通过不使用 -D -R 而是使用 -S 解决了这个问题。所以$ screen -S myScreenName。这会立即启动屏幕...

答案4

尝试将这些添加到您的.screenrc文件:

startup_message off
msgwait 1

后者将导致所有屏幕消息仅可见 1 秒 - 但在其他时候,这可能短得令人烦恼。

相关内容