Tools

Ghostel.el: an Emacs Terminal Emulator Powered by libghostty

13 July 2026 Mehdi 06:38
Ghostel.el: an Emacs Terminal Emulator Powered by libghostty

Emacs users have long juggled between vterm and eat to get a decent terminal inside their editor. Ghostel.el comes with a different proposition: plug the Ghostty VT engine directly into Emacs, without compromising on modern features.

Ghostel.el: the Emacs terminal powered by libghostty

Ghostel.el is a terminal emulator for Emacs built on libghostty-vt, the same VT engine that drives the Ghostty terminal. The project follows a two-layer architecture directly inspired by emacs-libvterm: a native module written in Zig handles terminal state, rendering, and PTY I/O, while Elisp takes care of keymaps, buffers, and remote process integration.

In practice, this means Ghostel.el inherits everything that libvterm does not support. That includes the Kitty keyboard protocol, the Kitty graphics protocol for inline images, OSC 8 hyperlinks, OSC 4/10/11 color queries, and DEC 2026 synchronized output.

What sets Ghostel apart from vterm and eat

The fundamental difference comes down to the underlying VT engine. Vterm relies on libvterm, a well-respected library that has not kept pace with the rapid evolution of modern terminal protocols. Eat implements its own engine in pure Elisp, which offers maximum portability at the cost of a performance ceiling.

Ghostel.el takes a third path: delegating to Ghostty’s Zig engine, a project known for its conformance and speed. The native module is downloaded automatically on first launch, so no toolchain is required in the common case.

Features that follow directly from this:

  • Inline images via the Kitty graphics protocol
  • Clickable OSC 8 hyperlinks with keyboard navigation
  • Extended underline styles (curly, double, dotted)
  • Synchronized output to prevent visual tearing
  • Automatic password prompt detection
  • Zero-config shell integration for bash, zsh, fish, and nushell

Five input modes for a frictionless workflow

Ghostel.el offers five interaction modes, in the same spirit as eat.el. The default is semi-char mode: nearly every keystroke is sent to the terminal, with a few reserved Emacs bindings like C-c, C-x, or M-x held back.

Char mode sends absolutely everything to the terminal, useful for TUI applications that want to capture C-x or M-x themselves. Emacs mode makes the buffer read-only while leaving the terminal running in the background. Copy mode freezes the output while you select text without the terminal scrolling. Line mode behaves like M-x shell: you compose your command normally in Emacs before sending it.

This level of granularity addresses a real daily problem: switching between terminal interaction and buffer navigation without losing your place.

Native Windows support starting in version 0.43.0

The 0.43.0 release on July 11, 2026 introduces a native ConPTY backend for Windows. Pre-built binaries cover x86_64-windows and aarch64-windows. Ghostel first looks for Microsoft’s redistributable ConPTY support files (conpty.dll and the OpenConsole.exe helpers) alongside the native module to get more recent behavior. If they are absent, it falls back to the ConPTY API built into Windows.

This is a clear signal of cross-platform ambition for a project that could have stayed strictly Unix. The only documented limitation on Windows concerns remote terminals via TRAMP: dynamic window resizing is not yet supported for Windows-to-TRAMP connections.

Installation and integration in the Emacs ecosystem

Ghostel.el is available on MELPA. A single line is enough to install it:

(use-package ghostel :ensure t)

The native module downloads itself on the first M-x ghostel. The official documentation also covers building from source with Zig 0.15.2 for those who prefer to compile it themselves.

The integration goes beyond a plain terminal. Ghostel integrates with TRAMP for remote terminals, with compilation mode to replace the usual build buffer, with Eshell, Comint, and even evil-mode via a dedicated package. It is also possible to call Elisp functions from the shell, which opens up some powerful workflows such as triggering magit-status or find-file directly from the command line.

Reception and project maturity

The project was announced publicly around July 12, 2026 and earned 268 points and 52 comments on Hacker News, solid traction for a niche Emacs tool. Reception on Lobste.rs was similar, with users describing Ghostel as the endgame of terminal emulation inside Emacs.

The project is still young. No published benchmarks exist yet for a head-to-head comparison with vterm or eat. The roadmap beyond Windows support is not publicly documented. This is a project worth watching, not yet an established safe bet.

Key takeaways

  • Ghostel.el plugs the Ghostty VT engine into Emacs via a native Zig module, bringing modern protocols that no alternative supports natively yet.
  • Five input modes cover every use case, from the most demanding TUI to simple scrollback navigation.
  • Native Windows support via ConPTY starting in v0.43.0 expands the target beyond Unix environments.
  • Installation goes through MELPA, and the module compiles or downloads automatically.
  • The project is promising but young: evaluate it on real workflows before replacing vterm or eat in production.

If you work in Emacs and the limitations of vterm or eat are holding you back, Ghostel.el deserves a serious test run. Feel free to share your experience in the comments or follow the blog for upcoming DevOps tool analyses.

Sources

Read also

Leave a comment

Your email address will not be published. Required fields are marked *