gpt4 book ai didi

linux - 编写 Linux 终端模拟器

转载 作者:可可西里 更新时间:2023-11-01 11:46:14 27 4
gpt4 key购买 nike

我想编写一个 x11 终端模拟器,但我不知道我应该如何生成并与 shell 通信,是否有任何基本(伪或 C)代码?比如要创建什么样的 PTY,如何将 shell 绑定(bind)到它,我必须捕获或发送什么信号等等。真的不想整理整个 xterm 源。

编辑:哦,我想实现一种与其中的任何应用程序通信的方式,我应该如何进行功能发现? “客户端”中有一些隐藏的 ansi 序列,希望它不会与其他终端仿真器发生冲突?一些环境变量,希望它不会与“客户端”发生冲突或被 shell 删除?

最佳答案

YAT(又一个终端)https://github.com/jorgen/yat适合嵌入到 Qt Quick 程序中。欢迎为改进做出贡献。 (免责声明:一个 friend 开始了那个项目,我有时也从事它。)它采用了一种基本正确的方法(例如,它正确地使用了 Linux 伪终端,在我的 friend 解释之前我不知道这一点),并且有很多特点;然而,解析器是从头开始编写的,还不具备完整的功能或没有错误。

不幸的是,到目前为止,大多数终端实现都是从头开始,或者使用一次性的整体分支(例如来自 rxvt),这需要大量工作并导致所有这些都不完整。所以我认为更好的选择是使用一个名为 libvterm 的可重用纯逻辑库:http://www.leonerd.org.uk/code/libvterm/或者将您的终端建立在已经使用它的终端上。这样,如果您发现错误并修复它们,您将改善整个生态系统。

https://github.com/timmoorhouse/imgui-terminal很有趣,并且有效(至少在某种程度上)但是是用 libvterm,IMO 重写的主要候选者。如果您喜欢 OpenGL 中的即时模式渲染,无论如何它可能是一个不错的选择。

http://41j.com/hterm/确实使用 libvterm,并添加了一些 libvterm 没有的功能,用于内联图形渲染(ReGIS 和 PNG)。但是代码不够优雅或不够便携,IMO,并且图形渲染“漂浮”在文本上而不是真正的内联。对于某些用例,它仍然可能是一个合适的起点。在我的 fork 里 https://github.com/ec1oud/hackterm我使用大部分现代系统库来构建它,但它仍然依赖于包含在内的过时版本的 SDL。

关于linux - 编写 Linux 终端模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com