Ghostty 1.1.1

Release notes for Ghostty 1.1.1, released on February 13, 2025.

Ghostty 1.1.1 features two weeks of work with changes from 13 contributors over 125 commits. The focus of this release is on fixing regressions or bugs introduced as part of the 1.1.0 release. We've also snuck in some nice improvements to existing features.

Important

A critical regression was found in Ghostty 1.1.1 on macOS that caused control-modified keys to not work properly in programs using the Kitty Keyboard protocol such as Neovim and Fish 4.0. This was fixed in 1.1.2.

Highlights

Server Side Decorations (SSD) on Linux X11

PR: #5533

Ghostty 1.1.0 introduced support for server-side decorations (SSD) on Linux for Wayland compositors. This allows Ghostty to look and feel more like a native application on a wider variety of desktop environments. Notably, however, this did not work on X11.

With Ghostty 1.1.1, we've added support for SSD on X11 as well when window-decoration = server. X11 doesn't provide a standard way to tell us if it prefers SSD or client-side decorations (CSD), so SSD on X11 only works with the explicit server configuration and does not work with the auto value.

Continued Input Method Editor (IME) Improvements

PR: #5550 #5448

A lot of effort went into Ghostty 1.1.0 to improve IME support, but ironically broke the scenario where no input method was active (the GTK "simple" input method). This has been fixed in 1.1.1. A workaround in 1.1.0 was to install ibus or fcitx. This is no longer necessary, and the "simple" input method should work as expected.

Additionally, on macOS, improved IME support regressed the ability for certain keyboard layouts to input control characters (e.g. ctrl+c). This has been fixed in 1.1.1.

macOS: Renderer Improvements for Intel GPUs

PR: #5625, #5652

It turns out Ghostty was triggering undefined behavior on macOS when using discrete GPUs. Practically, this only affected Intel Macs because all Apple Silicon Macs have integrated GPUs and Ghostty will always prefer an integrated GPU if available for power efficiency.

The undefined behavior would sometimes work but sometimes result in rendering artifacts or other strange visual behaviors. We now properly detect discrete GPUs and use the proper APIs and behaviors to avoid undefined behavior.

Full List

Full list of closed issues on GitHub.

In each section, we try to sort improvements before bug fixes.

  • goto_split and goto_tab now work properly with the performable: keybind prefix. #5644
  • The +list-actions CLI command now includes actions that have no associated documentation. #4958
  • Added keyboard navigation to the terminal IO window for the terminal inspector. #3909
  • Fix a crash that could occur when resetting the terminal with Kitty graphics on the screen. #5693
  • Fix a crash that could occur with very large OSC8 hyperlinks. There are likely other scenarios where this crash could be triggered but the entire class of crash has been resolved. #5666
  • Fix an issue where the character under the cursor would not be visible when the cursor color matched the background color. #5570
  • Fix crashes that could occur when loading themes that were not files. #5632
  • iTerm2 color themes updated to db227d159 #5511

macOS

  • macOS: Add a handful of new alternate artist-drawn icon choices. These can be set using the macos-icon configuration. #5696
  • macOS: Place the window at the location of the last focused window on startup, following the behavior of other native macOS applications. #5529
  • macOS: Close confirmation now appears if there is an active but hidden quick terminal that requires close confirmation. #5450
  • macOS: Fix control characters not working with certain keyboard layouts. #5448
  • macOS: Fix graphical flickering when invoking the move_tab keybind. #5729
  • macOS: toggle_visibility now restores focus to the proper tab when called from a global keybind. #5692
  • macOS: Fixed an issue where some command characters such as cmd+backtick would leak the unmodified character into the terminal. #5558
  • macOS: toggle_visibility no longer has any effect while the window is in native fullscreen. Previously, it would cause the window to lose focus. #5472
  • macOS: Fix undefined behavior for discrete GPUs. #5625
  • macOS: Update our Sparkle dependency to 2.6.4 to fix security issues. #5598

Linux (GTK)

  • GTK: Server-side decorations (SSD) now work on X11. #5533
  • GTK: Set the WINDOWID environment variable to the X11 window ID. #5650
  • GTK: Fix incorrect context menu location in certain circumstances. #5710
  • GTK: The "simple" input method now works properly. #5550
  • GTK: Add option to disable color management to workaround GTK bugs. #5593
  • GTK: window-decoration=none works properly on GNOME #5463
  • GTK: Remove CSD styling such as borders when CSDs are not in use. #5581
  • GTK: Nautilus integration now uses a properly named file. #5469
  • GTK: Close cgroup file descriptor after clone to prevent a small fd leak. #5515

Changes for Package Maintainers

  • A new Zig dependency zig-gobject was introduced. This is licensed 0BSD. The introduction of this dependency does not change the existing process for packaging Ghostty.

Roadmap

At the time of this release, we do not plan to have followup patch releases. We believe the remaining bugs are minor and can be addressed as part of a future, larger 1.2.0 release. We will continue to monitor the issue tracker and pull requests for any critical issues that may arise.

The focus will shift to the 1.2.0 release. This will be a larger release with more significant changes and features. The timeline for this release is not yet determined, but is likely to be several months away.

One major breaking change planned with 1.2.0 for Linux is to require libadwaita. We announced this intention as part of the 1.1.0 release and have asked for feedback if this is an issue. Before providing feedback, please carefully read the details about this change.