# Ghostty Web 基于 Web 的终端模拟器,使用 xterm.js 渲染和 node-pty 提供 PTY 支持。 ## 当前状态 ✅ **基础功能已完成** - WebSocket + PTY 服务器 (Node.js) - xterm.js 终端渲染 (支持 WebGL) - Ghostty 风格 UI - 跨平台支持 (Windows/macOS/Linux) ⏳ **WASM 集成待完成** - libghostty-vt 源码已克隆到 `lib/ghostty/` - 需要安装 Zig 0.13+ 编译为 WebAssembly - WASM 加载框架已就绪 (`src/frontend/ghostty-vt.js`) ## 快速开始 ```bash cd ghostty-web npm install npm start ``` 然后打开浏览器访问: http://localhost:3000 ## 安装 Zig (用于编译 WASM) **Windows:** ```powershell winget install Ziglang.Zig ``` **macOS:** ```bash brew install zig ``` **Linux:** ```bash wget https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz tar -xf zig-linux-x86_64-0.13.0.tar.xz sudo mv zig-linux-x86_64-0.13.0 /opt/zig ``` ## 编译 libghostty-vt WASM ```bash # macOS/Linux ./scripts/build-wasm.sh # Windows PowerShell ./scripts/build-wasm.ps1 ``` ## 项目结构 ``` ghostty-web/ ├── package.json ├── README.md ├── Dockerfile ├── docs/ │ └── WASM_BUILD.md # WASM 编译详细指南 ├── lib/ │ └── ghostty/ # ghostty 源码 (含 libghostty-vt) ├── scripts/ │ ├── build-wasm.sh # Linux/macOS 构建脚本 │ ├── build-wasm.ps1 # Windows PowerShell 构建脚本 │ └── install-zig.sh # Zig 安装脚本 └── src/ ├── backend/ │ └── server.js # WebSocket + PTY 服务器 └── frontend/ ├── index.html # 主页面 ├── styles.css # Ghostty 风格样式 └── ghostty-vt.js # WASM 加载器 ``` ## 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 浏览器 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ xterm.js (终端渲染 + 输入处理) │ │ │ │ ghostty-vt.js (WASM 加载器,待集成) │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ WebSocket │ └────────────────────────────┼────────────────────────────────┘ │ ┌────────────────────────────▼────────────────────────────────┐ │ 后端服务器 │ │ ┌──────────────────┐ ┌───────────────────────────┐ │ │ │ WebSocket Server │ ◄─── │ node-pty (PTY 进程) │ │ │ │ (ws library) │ │ bash/powershell │ │ │ └──────────────────┘ └───────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 功能 - ✅ 跨平台 PTY 支持 - ✅ WebGL 加速渲染 - ✅ 终端大小调整 - ✅ 新标签页 - ✅ 全屏模式 - ✅ 自定义外观 (Ghostty 风格深色主题) ## 环境变量 - `PORT` - 服务器端口 (默认: 3000) ## License MIT