Ghostty 1.0.1

Release notes for Ghostty 1.0.1, released on December 31, 2024.

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.

Note

A future update will allow users to use their $EDITOR to open the configuration file. And another future update will allow users to use a GUI to modify the configuration file.

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 release1. 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.

Footnotes

  1. Barring any critical issues or security advisories that require immediate attention.