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

CoderKang 2026-10-29 12:14 1

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


https://github.com/nyakang/nyaterm


4685b1ae0cde121d009bea9c60a65541|690x375


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


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


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


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


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


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


既然如此,那就换框架!


轻装上阵,全新出发!


NyaTerm v2 选择了 Rust + GPUI。


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


0651188d54b0a77fefc63c22729a2c60|690x375


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


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


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

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

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

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

    也可以在 Vim 中执行 `:set mouse=` 关闭鼠标支持,不过更推荐使用 NyaTerm 的这个设置。
  • zdf3 10-29 14:39
    18楼
    ui 很差 win98 的感觉
  • dbak 10-29 14:42
    19楼
    @CoderKang 非常感谢 已经解决了
  • raycloud 10-29 14:42
    20楼
    感觉目前你的主要竞争对手是 Netcatty ,哈哈哈😂,两个都很不错
  • russ44 10-29 14:52
    21楼
    下载试用
  • oldManNewThought 10-29 15:08
    22楼
    牛逼,一直再用,2.0 版本是去掉 tauri 了吗?那是用哪个跨平台方案啊
  • senooo 10-29 15:18
    23楼
    @CoderKang
    1. 支持 Ctrl+V 粘贴了没有
    2. 左侧的目录树能不能跟随 cd 命令或者 pwd 命令
  • fusxcs 10-29 15:23
    24楼
    不支持 双击后按住拖拽连选文本吗?
  • uni 10-29 15:37
    25楼
    星星了

    我现在用的是 electerm ,改天试试你的
  • mgcnrx11 10-29 15:38
    26楼
    之前已经 star 了,但 Tauri 就没有用下去了。看到 Rust GPUI 再支持一下
  • Hconk 10-29 15:45
    27楼
    从 1.x 开始用,切到 2.0 了,不错
  • jarryson 10-29 15:52
    28楼
    v2 上好东西不少,感谢,一直用的 windterm ,试试这个
  • begitcn 10-29 15:58
    29楼
    用了很久了,不错
  • CoderKang 楼主 10-29 16:03
    30楼
    @senooo 支持的,这是基本功能
  • CoderKang 楼主 10-29 16:06
    31楼
    @fusxcs
    感谢反馈!
    由于`拖拽下载文件`的特性导致这个操作失效了,后续版本会进行修复。
  • Jasperzz 10-29 16:07
    32楼
    希望能再好看一点点啊
  • senooo 10-29 16:39
    33楼
    @CoderKang
    1. 但是我在 ssh 终端内 Ctrl+v 输入的是 ^V ,右键 粘贴对应的快捷键是 ctrl+shift+v
    2. 怎么设置左侧目录树才能跟随 cd 命令进入的目录
  • Niphor 10-29 16:45
    34楼
    @CoderKang 看了下
    > 所有外部链接都拒绝密码
    这个有点尴尬,我这用的堡垒机都是临时密码,然后直接唤起 FileZilla 这种上古工具的
    垃圾堡垒机的 ssh 跳板功能也没法正常工作
  • CoderKang 楼主 10-29 17:28
    35楼
    @senooo
    1. 需要在设置中自行设置快捷键;
    2. 在文件浏览器下方有功能三个图标,其中第二个就是。
  • CoderKang 楼主 10-29 17:29
    36楼
    @Niphor
    这个我跟进一下,在 v1 版本中是支持传入密码的。
  • Reid 10-29 17:56
    37楼
  • CoderKang 楼主 10-29 17:59
    38楼
    @Reid
    应该是没有开发者证书的问题。

    sudo xattr -cr /Applications/NyaTerm.app

    https://nyaterm.app/docs/getting-started/installation#macos
  • senooo 10-29 18:34
    39楼
    @CoderKang
    啊 是我愚蠢了,感谢!
  • xshrim 10-29 19:59
    40楼
    这个能不能支持带密码的批量导入? 实际运维中经常需要将变化的一堆主机连着密码一起通过一个固定的格式(json 或者终端工具约定的格式)导入为终端工具的会话列表的, 以便连接的时候就不需要再手动去输入密码了. 很多终端工具都忽略了这个功能, 包括 windterm, 每次输密码烦死, 导致不得不放弃这些工具.
    还有一个功能, 类似 mobaxterm 的,允许在一个默认的窗口直接通过 ssh 命令临时连接到某个主机, 不管是在默认的本地 shell 中实现还是给一个地址输入栏, 反正就是能通过原始的 ssh 命令快速的创建一个临时会话, 省的每次都得点开新建会话的窗口. mabaxterm 最绝的是, 他不仅支持这种临时会话, 它还能记住这次会话的登录凭证, 后续无论是通过临时会话还是通过窗口新建持久会话,都能够自动使用之前保存的登录凭证, 不需要重新再登录, 把临时会话和持久会话打通, 这一点太方便了.
  • thinkwei2012 10-29 20:28
    41楼
    @Sodacooky +1 termora 也不更新了,我也转过来了
  • stebest 10-29 20:36
    42楼
    支持 keepane 和 tmux 这种吗?
  • CoderKang 楼主 10-29 20:36
    43楼
    @xshrim

    1. https://nyaterm.app/docs/guide/ssh-connection#%E4%BB%8E-nyaterm-json-%E5%AF%BC%E5%85%A5
    2. https://picui.ogmua.cn/s1/2026/10/29/6ae33dc0cf714.webp
  • CoderKang 楼主 10-29 20:38
    44楼
    @xshrim
    ![1793277373099.png]( https://picui.ogmua.cn/s1/2026/10/29/6ae33dc0cf714.webp)
  • vvenvw 10-29 21:04
    45楼
    看这标题就很烧心!
  • wtcs 10-29 23:41
    46楼
    问下支持多窗口同步操作吗
  • wm5d8b 10-30 08:20
    47楼
    支持 Debian aarch64 吗? WindTerm 的维护者说是做了 x86 指令集层面的优化,支持不了 aarch64
  • itfanr 10-30 08:36
    48楼
    支持
  • maomaosan2012 10-30 08:54
    49楼
    通过 jumpserver 登录服务器,使用 rz sz 有问题啊
* 帖子来源V2EX
返回