Skip to content
This repository has been archived by the owner on Jan 25, 2023. It is now read-only.
/ termare_view Public archive

支持全平台的终端模拟器,使用 Flutter 开发,不依赖平台代码。

License

Notifications You must be signed in to change notification settings

Termare/termare_view

Repository files navigation

termare_view

Language: 中文简体 | English

Last Commits Code size License Platform download time open issues fork code line build Codacy Badge

支持全平台的终端模拟器,使用 Flutter 开发,是一个通过 canvas 渲染的上层组件,不依赖任何平台代码。

这个 view 就类似于 xterm.js 一样,仅仅是一个上层 UI 显示组件,你可以使用来自操作系统底层的终端流,亦或者是连接 ssh 服务器的终端流,只需要给这个组件输入,就能自动的解析终端序列渲染终端。

开始使用

引入项目

这是一个纯 flutter package,所以只需要在 yaml 配置文件的 dependencies 下引入:

termare_view:
  git: https://github.com/termare/termare_view

创建终端控制器

TermareController controller = TermareController();

使用组件

TermareView 是一个 Widget,通常情况下,只需要给一个 TermareController 作为终端组件的控制器即可。

TermareView(
  controller: controller,
),

让终端显示一些东西

controller.write('hello termare_view');

代码在 example 中。

更详细的例子

相关文章

已支持序列文档

终端序列支持文档

Q&A

为什么没有使用 xterm.dart

最初开发这个组件的原因是因为个人的一个项目需要在 Flutter 中集成一个终端模拟器,至今这也很好的实现了我想要的需求。 本仓库与 xterm.dart 的开始时间基本上是差不多的,我尝试将本仓库的内容合并到 xterm.dart,但最后由于代码风格 太不统一,还是决定像 termux-view 那样,单独维护一个更适应安卓端场景的终端。

但 xterm.dart 目前的很多功能是比 termare 多的,架构上的设计也更优一些。

为何要用Flutter重写而不是...?

  • 一次编写,到处运行。
  • Flutter 当前作为非常优秀的跨平台框架,我想也能用它来编写一个全平台终端模拟器,从安卓前几代终端模拟器来看, 这可能是一个比较漫长的过程,而我的时间并不太多,但我会尽量尝试重写。
  • 我喜欢尝试。

是否存在未适配的序列?

按照 xterm.js 的 序列文档 适配了其中 90% 的序列,但个别序列实现比较复杂,例如 CSI ps;ps r,目前能正常解析,但在序列的行为表现上还有问题,还有个别序列没获取到具体的行为,例如ESC \。 一些命令如 vim,htop,nano,在运行的时候使用到了较多的序列,主要表现在 vim 编写文本时,内容超过终端高度时涉及到的序列。而 htop 输出的终端序列实在太多,不好定位是哪个序列的问题导致表现上的差异。

如何帮助开发?

测试序列可以通过输入指定的序列对比 xterm.js 或者操作系统中本地终端的显示。 发现可优化的地方你可以提交 issue 或 pr。

pr 请尽量保证与当前项目代码风格一致喔。

以下来自 termux 仓库的终端资源

Terminal resources

Terminal emulators

About

支持全平台的终端模拟器,使用 Flutter 开发,不依赖平台代码。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published