@aurigax-ai/ghostty-web

中文文档
0.3.9发布于 2026/11/01MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 1.3万

Ghostty在浏览器中的终端引擎(libghostty-vt):WebAssembly building,一个xterm.js-形状的API和WebGL和帆布渲染器. 一个硬叉 代码/鬼网.

中文使用文档
文档目录7 节
  1. 安装
  2. 构建
  3. 主钩
  4. 无头终端
  5. 使用
  6. 释放
  7. 许可证

幽灵网(AurigaX)

幽灵浏览器中的终端引擎,带有 x 任期.js- 成型的API和WebGL和帆布渲染器。 这是引擎 在奥斯提亚的幽灵终端后面.

这是一个硬叉 编码器/鬼网 (麻省理工学院,编者), 保持历史。 它不跟踪上游。 改变了什么:

  • (原始内容存档于2012-10-10). Official, unphopped libghostty-vt. 鬼网用一个补丁来建鬼网 C函数。 这叉子建了Ghostty出版的 libghostty-vt API 在一个被钉住的承诺上 (单位:千美元)GHOSTTY_COMMIT并与之交谈通过 lib/abi.ts,它读取结构布局 ghostty_type_json() 所以,一个字段会大叫地移动,而不是读取垃圾.
  • 宿主钩子. JavaScript 回调通过可生长函数表到达 libghostty-vt (单位:千美元)Abi.addCallback),因此主机可以收到快取标记(OSC 133),工作目录与 它的主机(OSC 7),通知,剪贴板写作和未知序列,并保持标记为 跟踪网格参考.
  • WebGL 渲染器. renderer: 'webgl' (默认)从甘油图集中取出WebGL 2, 只重写更改的行并只绘制显示的单元格和格来像素 某物; 没有WebGL 2 , 或者当其上下文丢失时, 终端 取而代之的是画布渲染器(renderer: 'canvas' 问取取取. 两种绘图框 挡住几何结构的元素 所以它们会填充细胞.
  • pnpm 和 Vitest 数据 而不是 Bun; 没有演示服务器、 基准或发布自动化 .

安装

pnpm add @aurigax-ai/ghostty-web

货包载运其TypeScript源和 ghostty-vt.wasm; 将它与Vite或类似的相捆.

构建

需求 齐格 0.16.0和pnpm (英语). 使用官方 Zig 沥青球( 如 CI 所做的): a 发行版的Zig用自己的LLVM制造了一种不同的,同样有效的 ghostty-vt.wasm, (中文(简体) ), 和CI检查 承诺的文件匹配 官方构建。 点 ZIG 如果不是的话 zig 在你的路径: ZIG=/path/to/zig pnpm build:wasm。 。 。 .

pnpm install
pnpm build:wasm   # clones Ghostty at GHOSTTY_COMMIT into vendor/ and builds ghostty-vt.wasm
pnpm test
pnpm build        # dist/ with the library and the WASM

libghostty -vt的API还不稳定,所以 GHOSTTY_COMMIT 试验为: 警卫 建筑 ghostty-vt.wasm 被承诺, 所以包安装没有 Zig; 构建 如果所承诺的文件与被绑定的承诺的新建文件不同,则CI失效. 软件包导出其 TypeScript 源(lib/index.ts),为维特等捆绑者提供.

主钩

除了xterm.js形状的API, Terminal 揭露了libghostty-vt报道的确切地点 在输出流中 :

钩子报告的内容
onSemanticPromptOSC 133 即时标记(prompt-start, (中文(简体) ), input-start, (中文(简体) ), output-start, (中文(简体) ), command-end 带有退出代码)
onPwdChange发送的OSC 7:原始 file://host/path URI 资源
onDesktopNotificationOSC 9和OSC 777通知
onUnknownOscOCS Ghostty不执行,例如:. 633;E;…
onBell, (中文(简体) ), onTitleChange幽灵自己的钟和头衔
clipboardWriteHandler决定 OSC 52 写作( 除非它返回为真实; 读作从未被回答)
registerMarker(offset)Xterm.js 风格标记,通过滚动和回流遵循其行
modes.mouseTrackingModenone, (中文(简体) ), x10, (中文(简体) ), vt200, (中文(简体) ), drag 或者说 any

渲染回路只在某事改变时运行(输出、输入、滚动、选择、光标) 眨眼),否则会入睡. setPaused(true) 停止绘制屏幕关闭的终端 继续解析输出; setPaused(false) 重新绘制整个. setPaused(true, { releaseRenderer: true }) 并在此之前放弃其WebGL上下文,因为浏览器只保留了少数.

无头终端

HeadlessTerminal 为保留屏幕并回滚的服务器或工人绘制没有DOM、画布或渲染器的字节.

import { Ghostty, HeadlessTerminal } from '@aurigax-ai/ghostty-web';

const ghostty = await Ghostty.fromBytes(wasmBytes);
const term = new HeadlessTerminal({ ghostty, cols: 120, rows: 40, scrollback: 2000 });
term.parser.registerOscHandler(133, (data) => false);
term.parser.registerCsiHandler({ final: 'J' }, (params) => {});
term.write('hello\r\n', () => {});
term.buffer.normal.getLine(0)?.translateToString(true);

它已经 buffer, (中文(简体) ), registerMarker, (中文(简体) ), onScroll, (中文(简体) ), onWriteParsed, (中文(简体) ), modes.bracketedPasteMode, (中文(简体) ), resize 财务报告和审定财务报表 dispose,带有xterm.js名称。 OCS操作员在编号(7、133和任何其他编号)后获得有效载荷。 CSI处理器只观察一个序列,就在终端应用之前. scrollback 释放出整页,因此屏幕的行能比限制(80列时约一半)更能保持更窄的一行.

使用

import { Ghostty, Terminal, FitAddon } from '@aurigax-ai/ghostty-web';

const ghostty = await Ghostty.fromBytes(wasmBytes);
const term = new Terminal({ ghostty, fontSize: 14 });
const fit = new FitAddon();
term.loadAddon(fit);
term.open(element);
fit.fit();
term.onData((data) => pty.write(data));
pty.onData((data) => term.write(data));

释放

提升 version 内 package.json,并按下匹配键 v<version> 标签. release.yml 重建 WASM, 检查它是否匹配承诺的文件, 运行测试并发布到 npm 信任的出版( 无符号) 。 带有一个版本 - (例如:. 0.2.0-rc.1(a) 载于 next 标签.

许可证

麻省理工学院. 见 自由主义鬼蒂是麻省理工学院的许可 由米切尔・桥本和鬼蒂 贡献者.

版本与发布记录

@aurigax-ai/ghostty-web 共发布 13 个版本,首次发布于 2026/10/07;过去 12 个月发布了 13 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.9latest2026/11/016 天前
0.3.82026/11/016 天前
0.3.72026/11/016 天前
0.3.62026/10/2018 天前
0.3.52026/10/1722 天前
0.3.42026/10/1622 天前

关于 @aurigax-ai/ghostty-web 的常见问题

@aurigax-ai/ghostty-web 是什么?

Ghostty在浏览器中的终端引擎(libghostty-vt):WebAssembly building,一个xterm.js-形状的API和WebGL和帆布渲染器. 一个硬叉 代码/鬼网.

如何安装 @aurigax-ai/ghostty-web?

在项目目录运行 npm install @aurigax-ai/ghostty-web,或使用 pnpm add / yarn add / bun add。

@aurigax-ai/ghostty-web 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aurigax-ai/ghostty-web 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aurigax-ai/ghostty-web 可以商用吗?

@aurigax-ai/ghostty-web 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aurigax-ai/ghostty-web 的下载量有多少?

根据 npm 官方下载统计,@aurigax-ai/ghostty-web 在 2026/10/07 – 2026/11/05 这 30 天内被下载 13,218 次,日均约 441 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aurigax-ai/ghostty-web 还在维护吗?

最新版本 0.3.9 发布于 2026/11/01(6 天前);至今共发布 13 个版本,其中过去 12 个月发布了 13 个;首次发布于 2026/10/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。