docs: preserve upstream English README
Nix / check-zig-cache-hash (push) Has been cancelled
Test / skip (push) Has been cancelled
Test / alejandra (push) Has been cancelled
Test / build-cmake (push) Has been cancelled
Test / build-nix (namespace-profile-ghostty-md-arm64) (push) Has been cancelled
Test / build-macos-freetype (push) Has been cancelled
Test / Build -Dsentry=false (push) Has been cancelled
Nix / Required Checks: Nix (push) Has been cancelled
Test / typos (push) Has been cancelled
Test / Required Checks: Test (push) Has been cancelled
Test / build-bench (push) Has been cancelled
Test / list-examples (push) Has been cancelled
Test / Example ${{ matrix.dir }} (Windows) (push) Has been cancelled
Test / test-lib-vt-pkgconfig (push) Has been cancelled
Test / build-snap (push) Has been cancelled
Test / build-nix (namespace-profile-ghostty-md) (push) Has been cancelled
Test / build-libghostty-vt-macos (aarch64-ios) (push) Has been cancelled
Test / build-libghostty-vt-macos (aarch64-macos) (push) Has been cancelled
Test / build-libghostty-vt-macos (x86_64-macos) (push) Has been cancelled
Test / build-libghostty-vt-android (aarch64-linux-android) (push) Has been cancelled
Test / build-libghostty-vt-android (arm-linux-androideabi) (push) Has been cancelled
Test / build-libghostty-vt-android (x86_64-linux-android) (push) Has been cancelled
Test / GTK x11=false wayland=true (push) Has been cancelled
Test / GTK x11=true wayland=true (push) Has been cancelled
Test / Build -Dsimd=false (push) Has been cancelled
Test / Build -Dsimd=true (push) Has been cancelled
Test / Build -Dsentry=true (push) Has been cancelled
Test / test-macos (push) Has been cancelled
Test / test-windows (push) Has been cancelled
Test / Build -Di18n=false (push) Has been cancelled
Test / build-flatpak (push) Has been cancelled
Test / build-libghostty-vt (aarch64-linux) (push) Has been cancelled
Test / build-libghostty-vt (aarch64-macos) (push) Has been cancelled
Test / build-libghostty-vt (wasm32-freestanding) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-linux) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-linux-musl) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-macos) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-windows-gnu) (push) Has been cancelled
Test / build-linux (namespace-profile-ghostty-md-arm64) (push) Has been cancelled
Test / build-linux-libghostty (push) Has been cancelled
Test / build-libghostty-vt-windows (push) Has been cancelled
Test / build-libghostty-windows-gnu (push) Has been cancelled
Test / build-linux (namespace-profile-ghostty-md) (push) Has been cancelled
Test / build-dist (push) Has been cancelled
Test / build-dist-lib-vt (push) Has been cancelled
Test / trigger-snap (push) Has been cancelled
Test / trigger-flatpak (push) Has been cancelled
Test / build-macos (push) Has been cancelled
Test / test (push) Has been cancelled
Test / test-lib-vt (push) Has been cancelled
Test / GTK x11=false wayland=false (push) Has been cancelled
Test / GTK x11=true wayland=false (push) Has been cancelled
Test / Build -Di18n=true (push) Has been cancelled
Test / Build test/fuzz-libghostty (push) Has been cancelled
Test / zig-fmt (push) Has been cancelled
Test / GitHub Actions Pins (push) Has been cancelled
Test / prettier (push) Has been cancelled
Test / swiftlint (push) Has been cancelled
Test / shellcheck (push) Has been cancelled
Test / translations (push) Has been cancelled
Test / blueprint-compiler (push) Has been cancelled
Test / Test pkg/wuffs (push) Has been cancelled
Test / Test build on Debian 13 (push) Has been cancelled
Test / valgrind (push) Has been cancelled
Test / Example ${{ matrix.dir }} (push) Has been cancelled
Nix / check-zig-cache-hash (push) Has been cancelled
Test / skip (push) Has been cancelled
Test / alejandra (push) Has been cancelled
Test / build-cmake (push) Has been cancelled
Test / build-nix (namespace-profile-ghostty-md-arm64) (push) Has been cancelled
Test / build-macos-freetype (push) Has been cancelled
Test / Build -Dsentry=false (push) Has been cancelled
Nix / Required Checks: Nix (push) Has been cancelled
Test / typos (push) Has been cancelled
Test / Required Checks: Test (push) Has been cancelled
Test / build-bench (push) Has been cancelled
Test / list-examples (push) Has been cancelled
Test / Example ${{ matrix.dir }} (Windows) (push) Has been cancelled
Test / test-lib-vt-pkgconfig (push) Has been cancelled
Test / build-snap (push) Has been cancelled
Test / build-nix (namespace-profile-ghostty-md) (push) Has been cancelled
Test / build-libghostty-vt-macos (aarch64-ios) (push) Has been cancelled
Test / build-libghostty-vt-macos (aarch64-macos) (push) Has been cancelled
Test / build-libghostty-vt-macos (x86_64-macos) (push) Has been cancelled
Test / build-libghostty-vt-android (aarch64-linux-android) (push) Has been cancelled
Test / build-libghostty-vt-android (arm-linux-androideabi) (push) Has been cancelled
Test / build-libghostty-vt-android (x86_64-linux-android) (push) Has been cancelled
Test / GTK x11=false wayland=true (push) Has been cancelled
Test / GTK x11=true wayland=true (push) Has been cancelled
Test / Build -Dsimd=false (push) Has been cancelled
Test / Build -Dsimd=true (push) Has been cancelled
Test / Build -Dsentry=true (push) Has been cancelled
Test / test-macos (push) Has been cancelled
Test / test-windows (push) Has been cancelled
Test / Build -Di18n=false (push) Has been cancelled
Test / build-flatpak (push) Has been cancelled
Test / build-libghostty-vt (aarch64-linux) (push) Has been cancelled
Test / build-libghostty-vt (aarch64-macos) (push) Has been cancelled
Test / build-libghostty-vt (wasm32-freestanding) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-linux) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-linux-musl) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-macos) (push) Has been cancelled
Test / build-libghostty-vt (x86_64-windows-gnu) (push) Has been cancelled
Test / build-linux (namespace-profile-ghostty-md-arm64) (push) Has been cancelled
Test / build-linux-libghostty (push) Has been cancelled
Test / build-libghostty-vt-windows (push) Has been cancelled
Test / build-libghostty-windows-gnu (push) Has been cancelled
Test / build-linux (namespace-profile-ghostty-md) (push) Has been cancelled
Test / build-dist (push) Has been cancelled
Test / build-dist-lib-vt (push) Has been cancelled
Test / trigger-snap (push) Has been cancelled
Test / trigger-flatpak (push) Has been cancelled
Test / build-macos (push) Has been cancelled
Test / test (push) Has been cancelled
Test / test-lib-vt (push) Has been cancelled
Test / GTK x11=false wayland=false (push) Has been cancelled
Test / GTK x11=true wayland=false (push) Has been cancelled
Test / Build -Di18n=true (push) Has been cancelled
Test / Build test/fuzz-libghostty (push) Has been cancelled
Test / zig-fmt (push) Has been cancelled
Test / GitHub Actions Pins (push) Has been cancelled
Test / prettier (push) Has been cancelled
Test / swiftlint (push) Has been cancelled
Test / shellcheck (push) Has been cancelled
Test / translations (push) Has been cancelled
Test / blueprint-compiler (push) Has been cancelled
Test / Test pkg/wuffs (push) Has been cancelled
Test / Test build on Debian 13 (push) Has been cancelled
Test / valgrind (push) Has been cancelled
Test / Example ${{ matrix.dir }} (push) Has been cancelled
This commit is contained in:
+226
@@ -0,0 +1,226 @@
|
||||
<!-- LOGO -->
|
||||
<h1>
|
||||
<p align="center">
|
||||
<img src="https://github.com/user-attachments/assets/fe853809-ba8b-400b-83ab-a9a0da25be8a" alt="Logo" width="128">
|
||||
<br>Ghostty
|
||||
</h1>
|
||||
<p align="center">
|
||||
Fast, native, feature-rich terminal emulator pushing modern features.
|
||||
<br />
|
||||
A native GUI or embeddable library via <code>libghostty</code>.
|
||||
<br />
|
||||
<a href="#about">About</a>
|
||||
·
|
||||
<a href="https://ghostty.org/download">Download</a>
|
||||
·
|
||||
<a href="https://ghostty.org/docs">Documentation</a>
|
||||
·
|
||||
<a href="CONTRIBUTING.md">Contributing</a>
|
||||
·
|
||||
<a href="HACKING.md">Developing</a>
|
||||
</p>
|
||||
</p>
|
||||
|
||||
## About
|
||||
|
||||
Ghostty is a terminal emulator that differentiates itself by being
|
||||
fast, feature-rich, and native. While there are many excellent terminal
|
||||
emulators available, they all force you to choose between speed,
|
||||
features, or native UIs. Ghostty provides all three.
|
||||
|
||||
**`libghostty`** is a cross-platform, zero-dependency C and Zig library
|
||||
for building terminal emulators or utilizing terminal functionality
|
||||
(such as style parsing). Anyone can use `libghostty` to build a terminal
|
||||
emulator or embed a terminal into their own applications. See
|
||||
[Ghostling](https://github.com/ghostty-org/ghostling) for a minimal complete project
|
||||
example or the [`examples` directory](https://github.com/ghostty-org/ghostty/tree/main/example)
|
||||
for smaller examples of using `libghostty` in C and Zig.
|
||||
|
||||
For more details, see [About Ghostty](https://ghostty.org/docs/about).
|
||||
|
||||
## Download
|
||||
|
||||
See the [download page](https://ghostty.org/download) on the Ghostty website.
|
||||
|
||||
## Documentation
|
||||
|
||||
See the [documentation](https://ghostty.org/docs) on the Ghostty website.
|
||||
|
||||
## Contributing and Developing
|
||||
|
||||
If you have any ideas, issues, etc. regarding Ghostty, or would like to
|
||||
contribute to Ghostty through pull requests, please check out our
|
||||
["Contributing to Ghostty"](CONTRIBUTING.md) document. Those who would like
|
||||
to get involved with Ghostty's development as well should also read the
|
||||
["Developing Ghostty"](HACKING.md) document for more technical details.
|
||||
|
||||
## Roadmap and Status
|
||||
|
||||
Ghostty is stable and in use by millions of people and machines daily.
|
||||
|
||||
The high-level ambitious plan for the project, in order:
|
||||
|
||||
| # | Step | Status |
|
||||
| :-: | ------------------------------------------------------- | :----: |
|
||||
| 1 | Standards-compliant terminal emulation | ✅ |
|
||||
| 2 | Competitive performance | ✅ |
|
||||
| 3 | Rich windowing features -- multi-window, tabbing, panes | ✅ |
|
||||
| 4 | Native Platform Experiences | ✅ |
|
||||
| 5 | Cross-platform `libghostty` for Embeddable Terminals | ✅ |
|
||||
| 6 | Ghostty-only Terminal Control Sequences | ❌ |
|
||||
|
||||
Additional details for each step in the big roadmap below:
|
||||
|
||||
#### Standards-Compliant Terminal Emulation
|
||||
|
||||
Ghostty implements all of the regularly used control sequences and
|
||||
can run every mainstream terminal program without issue. For legacy sequences,
|
||||
we've done a [comprehensive xterm audit](https://github.com/ghostty-org/ghostty/issues/632)
|
||||
comparing Ghostty's behavior to xterm and building a set of conformance
|
||||
test cases.
|
||||
|
||||
In addition to legacy sequences (what you'd call real "terminal" emulation),
|
||||
Ghostty also supports more modern sequences than almost any other terminal
|
||||
emulator. These features include things like the Kitty graphics protocol,
|
||||
Kitty image protocol, clipboard sequences, synchronized rendering,
|
||||
light/dark mode notifications, and many, many more.
|
||||
|
||||
We believe Ghostty is one of the most compliant and feature-rich terminal
|
||||
emulators available.
|
||||
|
||||
Terminal behavior is partially a de jure standard
|
||||
(i.e. [ECMA-48](https://ecma-international.org/publications-and-standards/standards/ecma-48/))
|
||||
but mostly a de facto standard as defined by popular terminal emulators
|
||||
worldwide. Ghostty takes the approach that our behavior is defined by
|
||||
(1) standards, if available, (2) xterm, if the feature exists, (3)
|
||||
other popular terminals, in that order. This defines what the Ghostty project
|
||||
views as a "standard."
|
||||
|
||||
#### Competitive Performance
|
||||
|
||||
Ghostty is generally in the same performance category as the other highest
|
||||
performing terminal emulators.
|
||||
|
||||
"The same performance category" means that Ghostty is much faster than
|
||||
traditional or "slow" terminals and is within an unnoticeable margin of the
|
||||
well-known "fast" terminals. For example, Ghostty and Alacritty are usually within
|
||||
a few percentage points of each other on various benchmarks, but are both
|
||||
something like 100x faster than Terminal.app and iTerm. However, Ghostty
|
||||
is much more feature rich than Alacritty and has a much more native app
|
||||
experience.
|
||||
|
||||
This performance is achieved through high-level architectural decisions and
|
||||
low-level optimizations. At a high-level, Ghostty has a multi-threaded
|
||||
architecture with a dedicated read thread, write thread, and render thread
|
||||
per terminal. Our renderer uses OpenGL on Linux and Metal on macOS.
|
||||
Our read thread has a heavily optimized terminal parser that leverages
|
||||
CPU-specific SIMD instructions. Etc.
|
||||
|
||||
#### Rich Windowing Features
|
||||
|
||||
The Mac and Linux (build with GTK) apps support multi-window, tabbing, and
|
||||
splits with additional features such as tab renaming, coloring, etc. These
|
||||
features allow for a higher degree of organization and customization than
|
||||
single-window terminals.
|
||||
|
||||
#### Native Platform Experiences
|
||||
|
||||
Ghostty is a cross-platform terminal emulator but we don't aim for a
|
||||
least-common-denominator experience. There is a large, shared core written
|
||||
in Zig but we do a lot of platform-native things:
|
||||
|
||||
- The macOS app is a true SwiftUI-based application with all the things you
|
||||
would expect such as real windowing, menu bars, a settings GUI, etc.
|
||||
- macOS uses a true Metal renderer with CoreText for font discovery.
|
||||
- macOS supports AppleScript, Apple Shortcuts (AppIntents), etc.
|
||||
- The Linux app is built with GTK.
|
||||
- The Linux app integrates deeply with systemd if available for things
|
||||
like always-on, new windows in a single instance, cgroup isolation, etc.
|
||||
|
||||
Our goal with Ghostty is for users of whatever platform they run Ghostty
|
||||
on to think that Ghostty was built for their platform first and maybe even
|
||||
exclusively. We want Ghostty to feel like a native app on every platform,
|
||||
for the best definition of "native" on each platform.
|
||||
|
||||
#### Cross-platform `libghostty` for Embeddable Terminals
|
||||
|
||||
In addition to being a standalone terminal emulator, Ghostty is a
|
||||
C-compatible library for embedding a fast, feature-rich terminal emulator
|
||||
in any 3rd party project. This library is called `libghostty`.
|
||||
|
||||
Due to the scope of this project, we're breaking libghostty down into
|
||||
separate libraries, starting with `libghostty-vt`. The goal of
|
||||
this project is to focus on parsing terminal sequences and maintaining
|
||||
terminal state. This is covered in more detail in this
|
||||
[blog post](https://mitchellh.com/writing/libghostty-is-coming).
|
||||
|
||||
`libghostty-vt` is already available and usable today for Zig and C and
|
||||
is compatible for macOS, Linux, Windows, and WebAssembly. The functionality
|
||||
is extremely stable (since its been proven in Ghostty GUI for a long time),
|
||||
but the API signatures are still in flux.
|
||||
|
||||
`libghostty` is already heavily in use. See [`examples`](https://github.com/ghostty-org/ghostty/tree/main/example)
|
||||
for small examples of using `libghostty` in C and Zig or the
|
||||
[Ghostling](https://github.com/ghostty-org/ghostling) project for a
|
||||
complete example. See [awesome-libghostty](https://github.com/Uzaaft/awesome-libghostty)
|
||||
for a list of projects and resources related to `libghostty`.
|
||||
|
||||
We haven't tagged libghostty with a version yet and we're still working
|
||||
on a better docs experience, but our [Doxygen website](https://libghostty.tip.ghostty.org/)
|
||||
is a good resource for the C API.
|
||||
|
||||
#### Ghostty-only Terminal Control Sequences
|
||||
|
||||
We want and believe that terminal applications can and should be able
|
||||
to do so much more. We've worked hard to support a wide variety of modern
|
||||
sequences created by other terminal emulators towards this end, but we also
|
||||
want to fill the gaps by creating our own sequences.
|
||||
|
||||
We've been hesitant to do this up until now because we don't want to create
|
||||
more fragmentation in the terminal ecosystem by creating sequences that only
|
||||
work in Ghostty. But, we do want to balance that with the desire to push the
|
||||
terminal forward with stagnant standards and the slow pace of change in the
|
||||
terminal ecosystem.
|
||||
|
||||
We haven't done any of this yet.
|
||||
|
||||
## Crash Reports
|
||||
|
||||
Ghostty has a built-in crash reporter that will generate and save crash
|
||||
reports to disk. The crash reports are saved to the `$XDG_STATE_HOME/ghostty/crash`
|
||||
directory. If `$XDG_STATE_HOME` is not set, the default is `~/.local/state`.
|
||||
**Crash reports are _not_ automatically sent anywhere off your machine.**
|
||||
|
||||
Crash reports are only generated the next time Ghostty is started after a
|
||||
crash. If Ghostty crashes and you want to generate a crash report, you must
|
||||
restart Ghostty at least once. You should see a message in the log that a
|
||||
crash report was generated.
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> Use the `ghostty +crash-report` CLI command to get a list of available crash
|
||||
> reports. A future version of Ghostty will make the contents of the crash
|
||||
> reports more easily viewable through the CLI and GUI.
|
||||
|
||||
Crash reports end in the `.ghosttycrash` extension. The crash reports are in
|
||||
[Sentry envelope format](https://develop.sentry.dev/sdk/envelopes/). You can
|
||||
upload these to your own Sentry account to view their contents, but the format
|
||||
is also publicly documented so any other available tools can also be used.
|
||||
The `ghostty +crash-report` CLI command can be used to list any crash reports.
|
||||
A future version of Ghostty will show you the contents of the crash report
|
||||
directly in the terminal.
|
||||
|
||||
To send the crash report to the Ghostty project, you can use the following
|
||||
CLI command using the [Sentry CLI](https://docs.sentry.io/cli/installation/):
|
||||
|
||||
```shell-session
|
||||
SENTRY_DSN=https://e914ee84fd895c4fe324afa3e53dac76@o4507352570920960.ingest.us.sentry.io/4507850923638784 sentry-cli send-envelope --raw <path to ghostty crash>
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
>
|
||||
> The crash report can contain sensitive information. The report doesn't
|
||||
> purposely contain sensitive information, but it does contain the full
|
||||
> stack memory of each thread at the time of the crash. This information
|
||||
> is used to rebuild the stack trace but can also contain sensitive data
|
||||
> depending on when the crash occurred.
|
||||
Reference in New Issue
Block a user