大家好,我写了一个终端模拟器,叫 Nutty。
先放官网:
https://nutty.net.cn
支持 Windows、macOS 和 Linux。
我平时工作基本离不开终端。
本地开发开几个终端,编码、codex、跑本地测试都在这几个终端里完成;通常如果外出,还会用ssh去连接开发测试环境。
远程连接的时候,通常我还要用SFTP传文件,配端口转发,还会用到 rz、sz 快速传文件。
rz
sz
我找了很多终端,也有不少做得非常成熟。但我自己用下来,总有一些地方不太顺手:
Nutty 使用 C / C++ 开发。主要用到了 SDL3、ImGui、libvterm、libssh2。
先列一下现在能用的功能:
性能时我做这个终端的主要原因之一,所以放将它放在第一位。我深度优化libvterm 和 渲染性能。从目前benchmark 脚本输出性能来看,是超过了ghostty、iterm2、alacritty、wezterm、windterm。
测试机器为:MacBook Air M4 16G。
目前瓶颈在dd 命令到 pty 的输出上。
Nutty 里可以同时开本地 Shell 和远程 SSH,不需要本地终端一个软件、SSH 再开另一个软件。
SSH 主机可以集中管理,支持搜索、密码、私钥、跳板机和 TOTP。已经配置好的连接可以直接打开新标签,也可以复制会话。
标签可以设置颜色。
之前一直使用konsole,它搜索非常好用,可以高亮当前屏幕上匹配的内容,我觉得非常好用,因此我把它引入了进来。
普通的 SFTP 上传下载肯定是有的,这里主要说一下跨服务器传输。
以前需要把服务器 A 的文件传到服务器 B,我一般先下载到本地再上传到目标服务器去,用着非常不爽。
所以我让Nutty可以直接选择服务器 A 上的文件,再选择服务器 B 和目标目录,在两个 SFTP 会话之间完成传输。
这个功能可能比较小众,但对我来说非常实用,也是我自己写 Nutty 的原因之一。
Nutty 支持 Sixel,可以在终端里直接显示图片。
图片会跟着终端历史一起滚动,TUI 全屏程序也可以正常使用。
Nutty 内置了 SSH 端口转发,可以直接建立 Tunnel。
另外也支持 Zmodem。如果中间套了好几层跳板机,还是 rz、sz 最省事。
Nutty 基本是跟着我自己的工作需求写出来的。
我遇到一个不顺手的地方,就想改掉;需要在两个服务器之间传文件,就做了 SFTP 跨服务器传输;每天要开很多窗口,就做了标签和分屏;远程看图麻烦,就把 Sixel 加了进来。
现在它还算不上一个非常成熟的终端,但主要功能已经可以满足我的日常使用了。
如果大家愿意体验,欢迎把遇到的问题、使用环境和复现方式告诉我。
No replies yet
Featured Collection
Popular Events
大家好,我写了一个终端模拟器,叫 Nutty。
先放官网:
https://nutty.net.cn
支持 Windows、macOS 和 Linux。
为什么又做了一个终端?
我平时工作基本离不开终端。
本地开发开几个终端,编码、codex、跑本地测试都在这几个终端里完成;通常如果外出,还会用ssh去连接开发测试环境。
远程连接的时候,通常我还要用SFTP传文件,配端口转发,还会用到
rz、sz快速传文件。我找了很多终端,也有不少做得非常成熟。但我自己用下来,总有一些地方不太顺手:
Nutty 使用 C / C++ 开发。主要用到了 SDL3、ImGui、libvterm、libssh2。
目前已经做了什么?
先列一下现在能用的功能:
rz、sz;性能
性能时我做这个终端的主要原因之一,所以放将它放在第一位。我深度优化libvterm 和 渲染性能。从目前benchmark 脚本输出性能来看,是超过了ghostty、iterm2、alacritty、wezterm、windterm。
测试机器为:MacBook Air M4 16G。
目前瓶颈在dd 命令到 pty 的输出上。
SSH 和本地终端放在一起
Nutty 里可以同时开本地 Shell 和远程 SSH,不需要本地终端一个软件、SSH 再开另一个软件。
SSH 主机可以集中管理,支持搜索、密码、私钥、跳板机和 TOTP。已经配置好的连接可以直接打开新标签,也可以复制会话。
标签可以设置颜色。
搜索高亮
之前一直使用konsole,它搜索非常好用,可以高亮当前屏幕上匹配的内容,我觉得非常好用,因此我把它引入了进来。
SFTP 可以在两台服务器之间传文件
普通的 SFTP 上传下载肯定是有的,这里主要说一下跨服务器传输。
以前需要把服务器 A 的文件传到服务器 B,我一般先下载到本地再上传到目标服务器去,用着非常不爽。
所以我让Nutty可以直接选择服务器 A 上的文件,再选择服务器 B 和目标目录,在两个 SFTP 会话之间完成传输。
这个功能可能比较小众,但对我来说非常实用,也是我自己写 Nutty 的原因之一。
Sixel
Nutty 支持 Sixel,可以在终端里直接显示图片。
图片会跟着终端历史一起滚动,TUI 全屏程序也可以正常使用。
端口转发和 Zmodem
Nutty 内置了 SSH 端口转发,可以直接建立 Tunnel。
另外也支持 Zmodem。如果中间套了好几层跳板机,还是
rz、sz最省事。最后
Nutty 基本是跟着我自己的工作需求写出来的。
我遇到一个不顺手的地方,就想改掉;需要在两个服务器之间传文件,就做了 SFTP 跨服务器传输;每天要开很多窗口,就做了标签和分屏;远程看图麻烦,就把 Sixel 加了进来。
现在它还算不上一个非常成熟的终端,但主要功能已经可以满足我的日常使用了。
如果大家愿意体验,欢迎把遇到的问题、使用环境和复现方式告诉我。