Ghostty 1.0.1

Security

GHSA-5hcq-3j4q-4v6p. Fixed a security vulnerability where Ghostty was improperly handling window title sequences in such a way that could lead to arbitrary code execution (required user interaction).

GHSA-hfg5-8q2c-crhc. The file created with write_*_file keybind actions previously defaulted to mode 0644 allowing any local user to read the file. The file now defaults to mode 0600 to prevent unauthorized access.

Highlights

Default Configuration File

PR: #3460

Ghostty will now create a default configuration file on launch if no non-empty configuration files are found. In line with our zero configuration philosophy, the default configuration file only has comments, but the comments help educate users on file location, syntax, and documentation.

For the 1.0.0 release, we noticed there was a significant amount of confusion about where the configuration file was located, how to edit it, and what options were available. This change is intended to help users better understand how to configure Ghostty.

Bitmap Font Support

PR: #4115 (CoreText), #3837 (Freetype)

Ghostty now supports bitmap fonts on both macOS and Linux. Bitmap fonts must still be in truetype format, but may contain bitmaps for each glyph instead of outlines.

macOS: "Settings" Improvements

PR: #4004

The "Settings" menu option (open_config keybinding action) has improved in several ways.

First, Ghostty now finds the first non-empty configuration file to open if one exists. Previously, Ghostty would always open the XDG configuration path first, even if the AppSupport path existed. This led to confusion because the AppSupport path overrides the XDG path. Now, Ghostty will open the AppSupport path if it exists, and if not, it will open the XDG path.

Second, Ghostty now properly prioritizes opening the AppSupport path over the XDG path if neither path exists. This is important because the AppSupport path overrides all other paths on macOS.

Third, Ghostty now uses the -t flag with open to open the configuration file in a text editor.

Improvements

Color values now accept shorthand hex values (e.g. #ABC). #4111

confirm-close-surface can now be set to always to always show the confirmation dialog when closing a window. #3700

macOS: Add "terminal" keyword to the Spotlight search metadata. #3745

GTK: Add window-titlebar-foreground and window-titlebar-background configuration options. #3806

Bundled iTerm2 color schemes updated to e030599a.

Bug Fixes

Full list of closed issues on GitHub.

keybinds with triggers that map to a key are now treated as a translated key and not a unicode trigger, i.e. cmd+1 now works in addition to cmd+one and cmd+. is the same as cmd+period. #4147

write_selection_file would sometimes write empty contents. #4078

Hyperlinks within TUI applications are more stable. #3903

Reloading configuration no longer overrides OSC 10/11/12. #3228

scrollback-limit configuration now accepts numbers larger than 32-bit. #3906

Fix issues background-opacity on both macOS and Linux. #3347

Fix a crash that could happen if --font-family="" was set specifically on the command-line. #4151

vt: mode 2031 DSR reports are no longer sent for OSC 10/11/12 in accordance with the updated specification. #3994

vt: fix direct-color parsing edge cases #4216

bash: shell integration works better with sudo aliases. #4080

macOS

macOS: Fixed a resource leak where windows were not fully destroyed. #4128

macOS: Fixed an issue where toggle_visibility would bring up unusable "ghost windows" in certain circumstances. #3219

macOS: Quick Terminal now works with focus-follows-mouse. #3337

macOS: Titlebar is now opaque like the rest of Ghostty when fullscreen. #3834

macOS: Exiting fullscreen now restores proper background opacity. #3553

macOS: open_config action now prefers AppSupport path over XDG to match loading priority. #3953

macOS: open_config action now uses the -t flag with open so that a text editor opens. #3284

macOS: Fixed an issue that would sometimes cause the quick terminal to consume 100% CPU, causing significant battery drain. The quick terminal now idles with no CPU usage. #4055

macOS: App bundle now contains the nvim directory. #3966

macOS: Help menu item opens the Ghostty documentation. #3990

macOS: Blur radius being unset now properly reloads at runtime. #3954

macOS: Fix startup crash when $HOME was not writable. #3949

Linux (GTK)

GTK: Detect proper system color scheme on older GTK versions by falling back to a deprecated API if the recommended one is not available. #4035

GTK: Fixed a broken window when both gtk-titlebar=false and gtk-tabs-location=hidden. #3178

GTK: Fix version comparison that was incorrectly detecting minimum GTK versions for some features. #3977

GTK: Install the 1024x1024 app icon for supporting desktop environments. #4003

GTK: Fix artifacting issues when window-decoration=false and gtk-titlebar=true. #3999

GTK: Tab overview is now styled when window-theme=ghostty (requires libadwaita 1.8). #3920

GTK: Tab overview works even when gtk-titlebar=false. #3940

GTK: Add a small delay to title changes to avoid flickering. #3746

GTK: Add xdg-terminal-exec fields to the desktop file. #3853

GTK: Support building against libgtk without X11 support. #3748

GTK: Fix possible segfault when closing surfaces. #3694

Changes for Package Maintainers

The Ghostty source tarball is now named ghostty-${VERSION}.tar.gz (from ghostty-source.tar.gz) and extracts to a directory named ghostty-${VERSION} (from ghostty-source). This better aligns with standard source tarball conventions. The PACKAGING.md file has been updated to reflect this change. #3490

DESTDIR now works properly as documented in PACKAGING.md. #3426

Known Issues

Ghostty 1.0.1 still contains many known issues, but is considered stable for general, professional use.

We are working hard to triage and resolve these issues. This release addresses what we felt were the most critical issues, especially given many people are about to return from holiday and get back to work. Please see the GitHub discussions and issue tracker for more information on known or newly discovered issues.

Roadmap

We plan to release a version 1.0.2 in the near future. We don't want to get in the habit of releasing too many patch versions, but there are still a number of important issues discovered from our initial public release that we feel are important to resolve as quickly as possible.

The major categories of issues we are looking into for 1.0.2 are keyboard input issues especially with non-US keyboard layouts, xterm compatibility issues, and GUI issues on both Linux and macOS.

Long term, we plan to follow a general pattern of only releasing one or two patch versions after a significant release, followed by a months-long period of development towards the next significant release[^1]. This pattern will allow package maintainers to keep up with our releases and get them into distribution channels without too much churn, and allow maintainers to focus on new features and improvements.

[^1]: Barring any critical issues or security advisories that require immediate attention.