NyaTerm:这样的终端用起来不烧心

3 小时 33 分钟前
 CoderKang

来分享一下自己一直在开发和维护的开源项目 NyaTerm。

https://github.com/nyakang/nyaterm

NyaTerm 是一个跨平台远程终端工具,最初使用 Tauri + WebView 构建。经过一段时间的开发和重构,现在已经正式切换到 Rust + GPUI 原生桌面架构,并发布了 2.0.0 正式版。

我自己一直是 WindTerm 的忠实用户,它的很多功能和设计都非常符合我的使用习惯。

不过,由于 WindTerm 已经有一年左右没有更新,一些长期存在的小问题、偶发闪退等情况始终没有得到解决,日常使用起来多少有些困扰。

所以,在今年 5 月份我开始照着 WindTerm 开始复刻功能,得益于 AI 第一版( WebView )很快就搓出来虽然功能逐渐丰富,但性能问题也一直困扰着我。

终端与普通桌面应用不同,尤其是大量文本输出、持续刷新、滚动和多终端并行运行的时候,对渲染效率和响应速度的要求比较高。

随着功能不断增加,原有 WebView 方案在这些场景下逐渐暴露出一些性能瓶颈。虽然尝试过不少优化,但始终没能达到自己期望的效果。

既然如此,那就换框架!

轻装上阵,全新出发!

NyaTerm v2 选择了 Rust + GPUI。

这一次不再使用 WebView ,而是将整个桌面应用重构为原生 Rust 实现,包括界面、终端渲染、连接管理等。

说起来简单,实际动手才发现,这基本相当于重新开发了一遍 NyaTerm 。

原本 WebView 中很多习以为常的功能,都需要在 GPUI 中重新实现。终端绘制、窗口管理、输入法、剪贴板、跨平台兼容性等问题,也花费了不少时间折腾。

好在经过多个预览版本的迭代,NyaTerm v2.0.0 终于正式发布了!

1083 次点击
所在节点    程序员
27 条回复
isAK47
3 小时 20 分钟前
支持,体验很棒!
fstab
2 小时 49 分钟前
支持,的确不烧心。
clacf
2 小时 30 分钟前
支持 tui 吗?
wanguorui123
2 小时 23 分钟前
不错
Niphor
2 小时 12 分钟前
请问 能不能直接 命令行传参 启动并且支持多窗口或者多个 tab ,
比如 传 --ssh/sftp ip:port -pass xxx 打卡
初衷想找一款可以在 mac 上适配各种堡垒机的客户端。。。
clacf
2 小时 8 分钟前
大佬,可以开发个,从 windterm 迁移主机记录的工具吗
ycl10875222
2 小时 7 分钟前
咨询个问题大佬,我现在也在做一款原生应用用 C++做的 你觉得 C++和 Rust 有什么开发上的体验区别吗 UI 必须自己手绘妈
CoderKang
1 小时 52 分钟前
CoderKang
1 小时 51 分钟前
@clacf
NyaTerm 支持从 WindTerm 直接导入的。`顶部工具栏 > 文件 > 导入配置`
Sodacooky
1 小时 48 分钟前
2.0 后确实界面没那么多闪烁了,windterm 停止更新后最接近它的一个工具了,现在用来取代 termora 变成主力工具,非常好用。
不过顶部的资源监控加载变慢了,tmux integration 不知道有没有计划。
fusxcs
1 小时 43 分钟前
用上了,大佬牛逼
565656
1 小时 40 分钟前
这个剧本怎么这么像一个叫 oxideterm 的,也是第一版 xx 然后第二版 gpui
zepc007
1 小时 37 分钟前
习惯了 nettycat 了,感觉都大差不差
CoderKang
1 小时 34 分钟前
@ycl10875222
可以说一下我现在 Rust 开发流程中所遇到的一个最大问题,就是 Rust 的编译速度,以及构建产生的中间产物特别占磁盘空间。UI 我是借鉴了一些主流软件的设计(例如 NyaTerm 的布局就是参考的 JetBrains 家的软件),再让 AI 去实现。
dbak
1 小时 28 分钟前
做的很不错呀 不过 我用 vim 打开文件 用鼠标双击一行代码进行选定的时候 会触发 vim 的 VISUAL 模式 请问在哪个选项里可以解决这个问题呀
smilenceX
1 小时 25 分钟前
从上次看到 OP 的帖子就下载下来,一直在用了。很不错
CoderKang
1 小时 11 分钟前
@dbak
这个是 Vim 开启鼠标支持后接管了终端的鼠标事件,属于正常行为。

可以在 NyaTerm 的 **设置 → 交互 → 剪贴板和鼠标** 中开启「**鼠标报告需按 Alt**」。

开启后,正常双击就可以使用 NyaTerm 的文本选中功能,按住 Alt 操作鼠标才会将事件发送给 Vim 。

也可以在 Vim 中执行 `:set mouse=` 关闭鼠标支持,不过更推荐使用 NyaTerm 的这个设置。
zdf3
1 小时 8 分钟前
ui 很差 win98 的感觉
dbak
1 小时 5 分钟前
@CoderKang 非常感谢 已经解决了
raycloud
1 小时 5 分钟前
感觉目前你的主要竞争对手是 Netcatty ,哈哈哈😂,两个都很不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1252814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX