【问题标题】:Spliting a terminal like GNU screen, programatically以编程方式拆分像 GNU 屏幕这样的终端
【发布时间】:2015-05-02 11:42:34
【问题描述】:

据此(@Programs using ncurses):

http://en.wikipedia.org/wiki/Ncurses

还有这个:

http://aperiodic.net/screen/faq#when_i_split_the_display_and_then_detach_screen_forgets_the_split

Screen 使用 termcap(我几乎不知道如何使用)而不是文本库来处理窗口拆分。我正在开发一个小型 C++ 控制台应用程序,我需要在其中做同样的事情。我尝试使用 ncurses,这是显而易见的选择,但它不支持颜色的 ANSI 转义序列(http://ascii-table.com/ansi-escape-sequences.php),而我实际上在做的是 fork ()/exec() 同一个 tty 中的 4 个 bash shell,这在 ncurses 中是小菜一碟,但是没有颜色和许多看起来像垃圾的失败转义序列。 printf() 和 std::cout 之类的方法可以完美地处理颜色,但在这种情况下是无用的,因为 ncurses 依赖于它自己的函数来保持位置。

在建议将转义序列解析为 ncurses 以使用库的本机属性对输出进行着色之前,请记住这是太多的工作,应该有一种更优雅的方式来处理它(就像 GNU Screen 一样)

那么,有什么想法可以解决吗?

提前致谢

【问题讨论】:

  • 如何创建一个包装系统(脚本?),根据需要配置启动screen,然后启动控制台应用程序以在其中运行。祝你好运。
  • 类unix系统的主要力量在于,可以从较小的系统中构建更大的东西。所以@Lucas Black 的评论是你能得到的最好的答案。不要尝试重新发明轮子,因为您可以以正方形结束并使用已经完美工作的轮子 = gnu 屏幕。使用屏幕分割你的终端(也可以在非ansi终端上工作),然后你应该在里面给你的程序加注星标......

标签: bash ncurses gnu-screen tty termcap


【解决方案1】:

您不能允许从属程序发出它们自己的转义序列。如果这样做,它们会破坏您的屏幕格式。

GNU screen 实际上是在模拟它自己的终端,也就是说,解析转义序列,执行它们的逻辑,构建屏幕的内部表示,然后在它运行的任何终端上传输它。这是唯一明智的做法。不幸的是,工作量很大。

【讨论】:

  • 我同意。至少@LucasBlack 有screen 源代码来使用模型和资源。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2023-03-12
  • 2020-07-16
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多