Foretype:用 Rust 预测按键,让远程机器输入达到本地速度
Show HN: Foretype: type on remote machines at local speed
Foretype 是一个 Rust 工具,通过预测你的输入、在服务器回显前先画出每个按键,让远程机器上的输入达到本地速度。
在远程机器上以本地速度打字。
一个 Rust 工具,预测你的输入,在服务器回显之前就绘制出每个按键。
上:普通 ssh。下:foretype。同一时刻按下相同的键,连接到故意设置延迟、约 440 毫秒远的服务器。
without with foretype
bash over ssh 160 ms 10 ms
coding agent over ssh 148 ms 11 ms
any laggy console 158 ms 10 ms
另一次测量,服务器约 150 毫秒远。从按键到字符出现在屏幕上的中位时间;使用 foretype 时,这就是本地绘制的预测,而真实回显仍以网络速度到达。使用 scripts/latency.py 测量。
安装
git clone https://github.com/itsfabioroma/foretype && cd foretype ./install.sh
想不安装就试用,运行 cargo build --release,然后
FORETYPE_SHELL=$SHELL ./target/release/foretype shell。这会在当前终端里于
foretype 中运行你的 shell;exit 退出。
用法
打开一个新的终端标签页。就这样。现在向任何缓慢的东西里打字都感觉是即时的:ssh、
kubectl exec、docker exec、远端机器上的编码代理。服务器上无需安装任何东西,你的 shell、提示符和配置都保持不变。
foretype status # is this tab boosted? sudo foretype uninstall # put your old shell back
工作原理
foretype 是一个单独的 Rust 二进制文件。foretype install 把它复制到 /usr/local/bin,将
foretype-shell 添加到 /etc/shells,用 chsh 把它设为你的登录 shell,并把
your 旧 shell 保存在 ~/.config/foretype/shell 中。此后每个新的终端标签页、tmux 窗格和
编辑器终端都会启动 foretype,它会在伪终端中运行你真正的 shell
并原样转发每一个字节。它用
vt100 镜像屏幕,并计时每个按键回显需要多久。当
前面的程序慢于 30 毫秒时,foretype 会自己绘制你的按键,然后对照真实回显
进行检查。
- 只有交互式终端会被包装。
-c命令、脚本和管道直接使用你真正的 shell。 - ssh、你的 shell 配置和服务器都不受影响。只有安装 和卸载时才需要 root。
- 仅在该行上的程序已经回显之后才进行预测,因此密码保持隐藏。
- 在绘制之前向终端询问其光标位置(
ESC [6n)。 - 在转发输出之前恢复光标,因此程序的字节原样落地。
- 如果回显不同,或在大约三个 往返时间内(至少 750 毫秒,至多 5 秒)没有回显到达,就撤回预测。
- 在 Enter、编辑键、粘贴和调整大小时暂停。
- 隐藏的是打字延迟,不是网络延迟。
许可证
Apache-2.0
来源:Hacker News · github.com