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

7 linux gnu-screen

我正在运行 screen -D -R(可以选择使用 -S 名称),它工作得很好,但有一个问题 - 当给定的屏幕之前不存在时,我收到通知“新屏幕...”,并且很烦人等待。

如何禁用此特定通知?

Jes*_*ess 11

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

显示

if (rflag && (rflag & 1) == 0 && !quietflag)
Run Code Online (Sandbox Code Playgroud)

所以我不知道 Gilles 在哪里发现的,或者什么时候改变的。


Gil*_*il' 3

不幸的是,这种行为在源代码中是硬编码的:相同的测试用于确定是否发出 \xe2\x80\x9cNew screen...\xe2\x80\x9d 通知并确定是否附加到正在运行的会话。(在屏幕 4.0.3 源中,(rflag && (rflag & 1) == 0)inattacher.cscreen.c\xe2\x80\x94rflag为 1,-r每个 加上 2。-R

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n
msgwait 0\nscreen -t post_initialization 39 sh -c 'sleep 1; screen -X msgwait 5'\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

请注意,这两种解决方法都会隐藏screen启动时选择显示的任何消息,而不仅仅是无用的 \xe2\x80\x9cNew screen...\xe2\x80\x9d 消息。

\n