ghostty
GPU-accelerated terminal emulator pushing modern features.
## About
ghostty is a cross-platform, GPU-accelerated terminal emulator that aims to
push the boundaries of what is possible with a terminal emulator by exposing
modern, opt-in features that enable CLI tool developers to build more feature
rich, interactive applications.
There are a number of excellent terminal emulator options that exist
today. The unique goal of ghostty is to have a platform for experimenting
with modern, optional, non-standards-compliant features to enhance the
capabilities of CLI applications. We aim to be the best in this category,
and competitive in the rest.
While aiming for this ambitious goal, ghostty is a fully standards compliant
terminal emulator that aims to remain compatible with all existing shells
and software. You can use this as a drop-in replacement for your existing
terminal emulator.
**Project Status:** Pre-Alpha. This project is not ready to be used as a
day-to-day terminal emulator. It can't even render vim yet!
## Roadmap and Status
The high-level ambitious plan for the project, in order:
| # | Step | Status |
|:---:|------|:------:|
| 1 | [Standards-compliant terminal emulation](docs/sequences.md) | ⚠️ |
| 2 | Competitive rendering performance (not the fastest, but fast enough) | ✅ |
| 3 | Basic customizability -- fonts, bg colors, etc. | ❌ |
| 4 | Richer windowing features -- multi-window, tabbing, panes | ❌ |
| 5 | Optimal rendering performance | ❌ |
| N | Fancy features (to be expanded upon later) | ❌ |
### Standards-Compliant Terminal Emulation
I am able to use this terminal as a daily driver. I think that's good enough
for a yellow status. There are a LOT of missing features for full standards
compliance but the set that are regularly in use are working pretty well.
### Competitive Rendering Performance
I want to automate the testing of this, but for now I've manually verified
we can maintain 120fps `cat`-ing a 6MB file. In terms of raw draw speed,
`cat`-ing a 6MB file is consistently faster on Linux using ghostty than
any other terminal emulator currently.
On macOS, `cat`-ing the large file is acceptable performance but not optimal.
I don't know why and need to look into it.
## Developing Ghostty
Ghostty is built using both the [Zig](https://ziglang.org/) programming
language as well as the Zig build system. At a minimum, Zig must be installed.
For [Nix](https://nixos.org/) users, a `shell.nix` is available which includes
all the necessary dependencies pinned to exact versions.
With Zig installed, a binary can be built using `zig build`:
```shell-session
$ zig build
...
$ zig-out/bin/ghostty
```
This will build a binary for the currently running system (if supported).
You can cross compile by setting `-Dtarget=`. For example,
`zig build -Dtarget=aarch64-macos` will build for Apple Silicon macOS. Note
that not all targets supported by Zig are supported.
**Note: Zig nightly is required.** Ghostty is built against the nightly
releases of Zig. The latest released version (0.9.1 at the time of this
edit) will NOT work.
Other useful commands:
* `zig build test` for running unit tests.
* `zig build run -Dconformance=` run a conformance test case from
the `conformance` directory. The `name` is the name of the file. This runs
in the current running terminal emulator so if you want to check the
behavior of this project, you must run this command in ghostty.