Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Ghostty TerminalNew to Visual Studio Code? Get it now.
Ghostty Terminal

Ghostty Terminal

TobiLG

|
497 installs
| (0) | Free
Terminal powered by Gespenst and Ghostty WASM, with search, links, and rich paste
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Ghostty Terminal

A VS Code extension powered by @gespenst/core and Ghostty's WASM terminal engine. The terminal renders inside a VS Code WebviewPanel and connects to a real shell process via node-pty.

Features

  • Full terminal emulator using Ghostty's battle-tested VT100 parser compiled to WASM
  • Multiple simultaneous terminal instances
  • Configurable shell, font, cursor, scrollback, and color themes
  • Built-in themes: Dark, Light, Tokyo Night, Dracula, Solarized Dark
  • Inherits VS Code's terminal.integrated.fontSize and terminal.integrated.fontFamily by default
  • Live config updates (font, theme, cursor changes apply immediately)
  • Full-scrollback find with match counts, case sensitivity, whole-word matching, and regular expressions
  • HTTP(S) links opened in your browser with Cmd-click on macOS or Ctrl-click on Windows/Linux
  • Text and rich clipboard paste, including images in terminal applications supporting Kitty clipboard mode 5522

Installation

npm install
npm run build

Then press F5 in VS Code to launch the Extension Development Host.

Usage

  • Command Palette (Cmd+Shift+P / Ctrl+Shift+P):
    • Ghostty Terminal: New Terminal — open a new terminal
    • Ghostty Terminal: Clear Active Terminal — clear the active terminal
    • Ghostty Terminal: Kill Active Terminal — kill the active terminal
    • Ghostty Terminal: Focus Active Terminal — focus the active terminal
    • Ghostty Terminal: Find — search the active terminal, including its scrollback
  • Keyboard shortcut: Cmd+Shift+`` (macOS) / Ctrl+Shift+`` (Windows/Linux) — new terminal

Inside a Ghostty terminal, press Cmd+F / Ctrl+F to open Find. Enter goes to the next match, Shift+Enter goes to the previous match, and Escape closes Find and returns focus to the terminal. Search queries stay with their terminal while it is open, including after the shell exits.

Use Cmd+C on macOS or Ctrl+Shift+C on Windows/Linux to copy a selection through VS Code. Paste uses the native clipboard event and honors bracketed-paste mode. If text could execute commands without bracketed-paste protection, VS Code asks you to review it before pasting. Images require a terminal application supporting Kitty mode 5522; ordinary shells receive the text representation, when one is available. Clipboard transactions are limited to 32 MiB and expire after 30 seconds. Remote terminal clipboard writes remain disabled.

Configuration

All settings are under the ghosttyTerminal namespace.

Setting Default Description
shell "" (auto-detect) Shell executable path
shellArgs [] Arguments passed to the shell
fontSize 0 (inherit) Font size in pixels. 0 inherits from terminal.integrated.fontSize
fontFamily "" (inherit) Font family. Empty inherits from terminal.integrated.fontFamily
theme "dark" Color theme: dark, light, tokyo-night, dracula, solarized-dark, or custom
theme.background "#1e1e1e" Background color (only used with custom theme)
theme.foreground "#d4d4d4" Foreground color (only used with custom theme)
scrollback 10000 Number of scrollback lines
cursorStyle "underline" Cursor style: block, underline, or bar
cursorBlink true Whether the cursor blinks
copyOnSelect false Automatically copy selected text to clipboard

Architecture

Extension Host (Node.js)                Webview (Chromium sandbox)
┌─────────────────────────┐             ┌─────────────────────────┐
│  GhosttyTerminalManager │             │  @gespenst/core         │
│  GhosttyTerminalPanel   │ ◄─────────► │  Ghostty + callback WASM│
│  PtyBridge (node-pty)   │ postMessage │  Search / links / paste │
└─────────────────────────┘             └─────────────────────────┘
  • Extension host spawns the shell via node-pty and manages the WebviewPanel
  • Webview uses Gespenst's native API, automatic sizing, and WebGPU → WebGL2 → Canvas 2D renderer fallback
  • Communication is via VS Code's postMessage API
  • The shell starts only after the webview, WASM, and addons are ready and the initial grid is measured
  • Rendering runs on the webview's main thread (worker: false) to fit VS Code's worker-loading restrictions
  • Both compatible WASM artifacts ship with the extension; no CDN or network access is needed to start a terminal
  • Gespenst packages are pinned together to 0.1.2. Update and test them together, including their WASM assets

Known Limitations

  • The terminal appears in the editor area as a WebviewPanel, not in VS Code's native terminal tab bar
  • Does not appear in vscode.window.terminals (not accessible by other extensions)
  • File drag & drop from Finder/Explorer does not work (webview sandbox blocks file path access)
  • Requires macOS, Linux, or Windows 10 build 18309+ (ConPTY)
  • Does not support VS Code for the Web (node-pty requires native Node.js)

Development

Use Node.js 22.12 or later and npm. The extension continues to support desktop VS Code 1.85+.

npm ci
npm run build    # one-time build
npm run watch    # rebuild JavaScript and CSS on changes
npm run compile  # type-check extension and webview
npm test         # host/adapter unit tests
npx playwright install chromium
npm run test:browser  # real WASM + addons, auto renderer and forced Canvas fallback
npm run test:vscode   # isolated desktop VS Code smoke test; downloads stable if needed
npm run package      # create a local VSIX

Press F5 in VS Code to launch the Extension Development Host for testing.

Set VSCODE_TEST_VERSION=1.85.0 to run the desktop smoke test against the minimum supported version, or VSCODE_TEST_EXECUTABLE to use a specific installed VS Code executable. The runner uses isolated settings and extension directories. Set GHOSTTY_TEST_CHROME=1 to run browser tests with installed Google Chrome instead of Playwright's Chromium.

The browser harness serves the actual webview bundle and CSP on loopback with a simulated host. The desktop smoke test uses real webviews and local shells. Before release, also check native clipboard shortcuts, platform-specific shells, and rendering at different display scale factors.

License

See LICENSE.

Gespenst and Ghostty license notices are copied into media/licenses/ during the build and included in the VSIX. See THIRD_PARTY_NOTICES.md.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft