Skip to content
chlee1001Public

About

Ghostty for macOS with an in-window Workspace/Tab/Pane hierarchy in a sidebar. Unofficial fork, not affiliated with Ghostty (MIT, upstream notice retained)

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

16,778 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chostty

English | 한국어

A macOS fork of Ghostty that replaces native window tabs with an in-window Workspace → Tab → Pane hierarchy, driven from a left sidebar.

Upstream gives every tab its own NSWindow inside an NSWindowTabGroup. That is the right default for a terminal, but it makes a set of related shells a property of the window manager rather than of the app: there is no grouping above a tab, the group is invisible when the window is not frontmost, and anything that wants to reason about "the session I was working in" has to go through AppKit.

Chostty keeps one physical window and owns the hierarchy itself. Workspaces group tabs, tabs own a split tree of panes, and the sidebar shows all of it at once. AppKit tabbing is not hidden or worked around — it is removed, and macos/scripts/native-tab-audit.sh fails the build if any of it comes back.

Everything below the window model is stock Ghostty: the same renderer, the same config file, the same terminfo, the same shell integration.

Install

Download the DMG from Releases and drag Chostty to Applications. Releases are signed with a Developer ID and notarized, so they open without extra steps. Universal binary, macOS 13 and later.

Chostty updates itself through Sparkle, against this repository's signed appcast and never upstream's. Set auto-update = off to stop automatic checks, or auto-update = download to fetch updates in the background. Installs of 0.2.12 or older have no updater and need one manual upgrade.

Chostty's version numbers are its own. 1.0.0 is the first stable Chostty release, not a build of Ghostty 1.0; the upstream revision it carries is whatever scripts/upstream-sync.sh reports as the merge base.

Upgrading from 0.2.15 or older

0.2.16 changed the bundle identifier from com.chostty.app to kr.co.devch.chostty and replaced the inherited Ghostty icon with Chostty's own. On first launch the app copies the old preferences and saved session across, leaving the originals in place. macOS ties privacy permissions — Accessibility, Automation, notifications, Full Disk Access — to the bundle identifier, so grant them again when prompted.

Using it

⌘B toggles the sidebar, or use the buttons next to the traffic lights — the toggle, + for a new workspace, and the workspace actions menu. ⌘N makes a workspace, ⌘T a tab inside the current one, ⌘⇧N a separate physical window. Right-click a workspace, a tab, or empty sidebar space for the rest. The full chord table is in FORK.md.

Configuration is unchanged from Ghostty — ~/.config/ghostty/config, the same keybind and theme syntax, TERM=xterm-ghostty. An existing Ghostty setup works as-is, and the two can be installed side by side.

Configuration can also be edited without touching text: ⌘, (Preferences…) opens a built-in editor for the common settings — fonts, colors, cursor, window behavior, keybinds — with inline help per setting. It rewrites only the lines it changes, so comments, ordering and keys it does not know survive a save untouched. Save & Apply writes the file and reloads immediately; Edit in External Editor opens the same file as plain text. Themes are picked from a previewed gallery, values that come from a theme or an included file are shown with their source, and All Settings reaches every Ghostty key. The open_config action and keybinding open this editor too.

Shortcuts this fork reserves are taken only from chords upstream left unbound or already broken; live Ghostty bindings such as ⌘⌥←/→ and ⌘0 are untouched.

Building

Needs Xcode 26 (macOS 26 SDK) and Zig 0.16. Nix is not required.

zig build -Demit-macos-app=false     # GhosttyKit, the Zig core the app links
./macos/build.nu --configuration Release --action build

Verify with the audit gate and the affected test suites:

./macos/scripts/native-tab-audit.sh
xattr -cr macos/build/Debug/Chostty.app
./macos/build.nu --configuration Debug --action test

The whole suite in one invocation can wedge on accumulated live terminal surfaces; run it as -only-testing: batches of a few suites each, as described in AGENTS.md.

If a build fails with no error: line, it is usually a stale signature — remove macos/build/<Configuration> and rebuild. Running the app re-adds quarantine attributes to the build output, so re-run xattr -cr on the bundle before testing.

The app icon and every alternate icon are generated by macos/scripts/generate-icons.py (needs Pillow); edit the script and re-run it rather than editing the PNGs.

The Linux and GTK trees are inherited from upstream and carried unmodified. They are not built or tested here.

Tracking upstream

This is a fork, not a snapshot. scripts/upstream-sync.sh reports what upstream changed since the last merge, sorted by how likely it is to hurt:

./scripts/upstream-sync.sh

It groups changes into files this fork also modified (real conflicts), files it deleted (delete/modify stops), macOS code it has not touched (merges cleanly but lands in the restructured app), and the Zig core (usually uneventful). It does not merge. The fork's actual risk is a merge git resolves without complaint that restores a window-level assumption removed on purpose, and only reading the list catches that. A scheduled workflow posts the same report to a tracking issue.

The sync point is the git merge base with upstream/main, so there is no recorded revision to fall out of date.

Relationship to Ghostty

Chostty is an independent fork. It is not affiliated with, endorsed by, or supported by the Ghostty project; report problems here, not upstream. The name Ghostty and the Ghostty logo belong to their owners, and Chostty ships its own icon.

Licence

Ghostty is MIT licensed. LICENSE keeps the upstream copyright notice verbatim and adds this fork's line beneath it; ship it with any copy. See FORK.md for what changed, what is deliberately kept compatible, and the known gaps.

About

Ghostty for macOS with an in-window Workspace/Tab/Pane hierarchy in a sidebar. Unofficial fork, not affiliated with Ghostty (MIT, upstream notice retained)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages