没有终端仿真的终端代理或屏幕

没有终端仿真的终端代理或屏幕

如何使终端应用程序不受终端仿真器关闭的影响,但仍然能够使用所有虚拟终端功能?

\开始{更新}

我希望我的终端应用程序在我不小心关闭终端仿真器时仍保持活动状态并可访问。此功能由 screen 和 tmux 提供,但它们的颜色存在问题,并且会刷新屏幕。是的,我可以在 screen 中运行 shell,但除非有其他程序正在运行,否则我不希望 shell 保持活动状态。

\结束{更新}

我认为这肯定是类似屏幕的东西,但没有 VT100 终端仿真,它只会将应用程序对“终端代理”终端执行的操作(例如将某些内容输出到 stdout/stderr 或使用 stty 设置终端选项)应用到此代理运行的终端。

// 我知道screenaltscreen on,但它会使这 (screenTERM=screen) 成为可能:

TERM=screen 的屏幕

或这样(screen带有TERM=rxvt-unicode):

屏幕显示 TERM=rxvt-unicode

而我想要的是这个(rxvt-unicode没有screen):

rxvt-unicode

我已经发现如果我rxvt-unicode使用进行编译USE=-xterm-color(事实上,如果我添加这个 USE 标志,即使没有屏幕,vim 看起来也像第二张图片上的那样)并进行设置,一切看起来都很好TERM=screen-256color,但我不喜欢这种解决方法,因为它实际上会改变颜色,而且我不能确定它只会以这种方式改变它们:

屏幕 TERM=screen-256color

答案1

还有一个名为“dtach”的程序可以做到这一点,而无需叠加自己的屏幕缓冲区。(我知道答案已经很晚了,但我还是把它贴出来,供那些在谷歌上搜索并偶然发现该页面的人使用)

答案2

是的,我可以在屏幕内运行 shell,但我不希望 shell 保持活动状态,除非有其他程序正在运行。

一个解决方案是从屏幕运行 shell(正如您所说您不想这样做),然后添加一个 Cron 作业每 10 分钟运行一次以检查是否有要关闭的屏幕会话。

如果所有屏幕会话都已分离,并且除了 shell 之外没有其他程序在运行,那么您可以关闭它们。

答案3

使用樱花。如果您尝试关闭正在运行的程序的 vterm,它会提示您。

答案4

您可以使用屏幕直接启动您的应用程序,因此当您的应用程序退出时屏幕也将退出:

screen <yourprog>

参见屏幕第 5 段手册页更多细节。

相关内容