An unofficial, native macOS app for editing your Ghostty config.
Ghostty is configured through a plain text file — which is fine, right up until you're digging through the docs for the exact option name, or you save one typo and the terminal won't start. So this app puts a small UI on top of that file: browse every option with its official docs, search by what you actually want, edit with validate-before-write, and preview a theme before you commit to it.
It doesn't reimplement anything. It reads your real config at ~/.config/ghostty/config.ghostty
(or the pre-1.3 config) and drives your local ghostty CLI — +show-config, +list-themes,
+validate-config, and the rest — so what you see always matches the exact Ghostty you have
installed. No bundled options list quietly drifting out of date.
- Every option, documented — the full Ghostty option catalog, each with its description, default, and your current value, grouped into categories you can actually scan.
- Edit safely — every change is checked with
ghostty +validate-configbefore it touches your file. A bad value is rejected with a clear message, so your working config never ends up broken. - Search by intent — type what you're after ("cursor blink", "transparency") and find the option, even when you don't know its exact key.
- Themes — browse the built-in themes as live previews and apply one in a click.
- Keyboard shortcuts — see and rebind Ghostty's keybindings, filtered by group, with press-the-keys capture.
- Live reload — optionally, it asks Ghostty to reload the moment you save, so your open terminals update right away.
- Open from Ghostty (⌘,) — Ghostty opens its config with whatever app is the default editor for
.ghosttyfiles, and this app claims that role. Set it up once in Status (⌘,) — rename a pre-1.3configtoconfig.ghosttyif needed, then click Use This App — and Ghostty's Open Config lands here instead of TextEdit. - Native, and honest about it — a real SwiftUI Mac app that only ever edits the file you'd edit by hand. Nothing more.
Grab the latest Ghostty Config Editor.app from the Releases
page, unzip it, and drag it into /Applications.
Note
First launch — the "Apple could not verify…" block. The app is ad-hoc signed and not notarized, so on first open macOS Gatekeeper blocks it once. Clear it either way (just once — macOS remembers afterward):
- System Settings: double-click the app, click Done on the warning, then open System Settings → Privacy & Security, scroll to Security, and click Open Anyway next to the app's name. On macOS 15 (Sequoia) / 26 (Tahoe) this is the reliable route — the older right-click → Open trick no longer works dependably.
- Terminal (fastest): remove the download quarantine, then open normally:
xattr -dr com.apple.quarantine "/Applications/GhosttyConfigEditor.app"
git clone https://github.com/mshddev/ghostty-config-editor.git
cd ghostty-config-editor
scripts/package-app.sh --install # build, then copy the .app into /Applications- To run: macOS 14 (Sonoma) or newer.
- Ghostty 1.3.1 or newer — the version the option catalog and test
fixtures are built and verified against. The catalog is read live from your installed
ghostty, so newer releases work too; much older ones are untested. The app finds the binary via the app bundle, Homebrew, or your login shell. - To build from source: Xcode 26 (the macOS 26 SDK) and a Swift 6 toolchain. The app adopts a
couple of macOS 26 SwiftUI refinements behind
#availableguards — those only compile against the macOS 26 SDK, even though the app itself still runs all the way back to macOS 14.
It's a Swift Package, not an .xcodeproj:
swift build # debug build
swift test # run the suite
swift run GhosttyConfigEditor # launch itPrefer Xcode? xed ., pick the GhosttyConfigEditor scheme with My Mac as the destination,
and ⌘R. (Mac apps run natively — there's no simulator.)
GhosttyConfigKit— the library target, where all the logic lives (CLI, catalog, config read/write, lint, search, themes). Fully unit-tested.GhosttyConfigEditor— a thin SwiftUI shell over the kit.- Tests — grounded in real captured
ghosttyCLI output, not hand-waved mocks.
scripts/package-app.sh builds a release binary, assembles the .app (binary + resources +
Info.plist), and ad-hoc code-signs it so Gatekeeper allows a local launch. The app is deliberately
not sandboxed — it execs your local ghostty and reads ~/.config, and a sandboxed app could
reach neither. Drop an AppIcon.icns at packaging/AppIcon.icns before running the script to embed
an icon.
Issues and pull requests are welcome. Please run swift test before opening one — CI runs the full
suite on every push, and if you touch behavior in the kit, add or update a test for it.
And if you find it useful, please consider giving it a star — it helps more people find it. Feel free to contribute.
MIT © 2026 mshddev.
This is an unofficial, community-built tool — not affiliated with, endorsed by, or sponsored by
the Ghostty project or its authors. "Ghostty" and the Ghostty logo belong to their respective owners.
The app only reads and writes your local Ghostty config and invokes your locally installed ghostty
binary. Nothing leaves your machine.
