Files
ghostty-rs/README.md
T
ddidderr 63216eda8e docs: add README, changelog entry and top-down architecture overview
README explains what the rewrite covers, how to build, run, install and
test it. ARCHITECTURE.md gains a top-down decomposition tree (binary ->
runtime/core -> termio/terminal/renderer -> leaf crates) and an updated
crate map with the actual internal dependencies, including the crates
added during integration (apprt, inspector, onig, bench, build-data).
CHANGELOG records the rewrite under Unreleased; no version bump.
2026-10-12 04:40:52 +02:00

66 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ghostty-rs
A Rust rewrite of the [Ghostty](https://ghostty.org) 1.3.1 terminal emulator
for Linux (GTK4 + libadwaita, OpenGL).
It aims for behavioural parity with Ghostty: the same configuration file
format, options, defaults and documentation; the same keybindings and
actions; the same `ghostty +action` CLI; the same terminal emulation
(including kitty keyboard/graphics protocols, OSC 8 hyperlinks, semantic
prompts, synchronized output, tmux control mode); the same shell
integration, themes and terminfo.
Out of scope: macOS, Windows, WASM, the embedded `libghostty` C API, and
Sentry crash reporting (disabled by default on Linux upstream).
## Building and running
Requirements: Rust (edition 2024), GTK ≥ 4.14, libadwaita ≥ 1.5,
fontconfig, freetype, harfbuzz, Oniguruma, libepoxy, `blueprint-compiler`
and `glib-compile-resources` at build time.
```sh
cargo run # open a terminal window running your shell
cargo run -- -e htop # run a command
cargo run -- +list-themes # CLI actions work like Ghostty's
cargo run --profile production # optimized build (LTO, no debug assertions)
```
Development builds find `resources/` (shell integration, themes, terminfo)
automatically. Your existing Ghostty config
(`~/.config/ghostty/config[.ghostty]`) is used as-is.
## Installing
```sh
just install /usr/local # binary, share/ghostty, terminfo, desktop files,
# completions, man pages, translations, icons
just install /usr false true # system-package layout (lib/systemd/user)
```
## Testing
```sh
just test # cargo test --workspace (~3000 tests)
just clippy # clippy with -D warnings
```
Every Zig `test` block of the ported files was ported to a Rust test.
`crates/ghostty-core/tests` holds end-to-end tests that drive the real core,
terminal and a real pty through a fake app runtime. `ghostty-bench` mirrors
Ghostty's benchmark tool; terminal stream throughput is on par with the Zig
build (see `docs/rewrite/notes/perf-P1.md`).
## Documentation
- `docs/rewrite/ARCHITECTURE.md` – top-down decomposition, crate map, key
design decisions, intentional omissions
- `docs/rewrite/STATUS.md` – work package history
- `docs/rewrite/notes/` – per-crate porting notes, deviations from Zig,
audits and verification reports
## License
MIT, like Ghostty. Bundled fonts and themes carry their own licenses (see
`crates/ghostty-font/res/` and `resources/themes/`).