Ghostty 1.2.1
Release notes for Ghostty 1.2.1, released on October 6, 2025.
Ghostty 1.2.1 features two weeks of work with changes from 13 contributors over 62 commits. This is a patch release primarily focused on fixing issues introduced in the 1.2.0 release. It includes a small handful of improvements, too.
PRs: #8563 #8580 #8738 #8720 #8847
Ghostty 1.2.0 contained a substantial overhaul of the font rendering system. As expected with such a large change, some issues were discovered outside of our testing. Ghostty 1.2.1 addresses many of these issues.
An overview of the changes:
- Nerd Font icons are now larger and better matched in size relative to each other, making better use of available cell space. Icons wider than a single cell are now left-aligned rather than centered across cells.
- CJK characters no longer appear oversized when using wide-aspect primary fonts. The IC width (ideographic character width) is now upper-bounded by measuring the overall bounding box of ASCII characters.
- Glyph constraints are now applied before thickening and centering operations, ensuring that icon sizes and positions are consistent regardless of font size, thickening strength, or display DPI.
- Fixed bugs in Nerd Font patch extraction where rules were applied to wrong glyphs due to codepoint offset issues, and irrelevant patch sets were incorrectly included.
- Improved FreeType glyph measurements to ensure glyphs are measured with the same hinting as they are rendered.
PR: #8976
Shell integration now automatically adds GHOSTTY_BIN_DIR
to your PATH,
making the ghostty
binary available in many shells without additional
configuration.
Ghostty previously (and still) adds ghostty
to your PATH prior to executing
the shell, but many shell configurations reset PATH. This change adds an
additional layer as part of the shell integration scripts to increase the
chances that ghostty
is available in your shell.
This is supported for bash, zsh, fish, and elvish.
PR: #8927
The mouse-scroll-multiplier
configuration now supports precision
scrolling devices like Apple trackpads. You can now independently control
multipliers for both discrete (mouse wheel) and precision (trackpad)
scrolling, making navigation through large scrollback buffers smoother
and more predictable across different input devices.
Examples:
# Apply the same multiplier to both precision and discrete
mouse-scroll-multiplier = 3
# Apply different multipliers (order doesn't matter)
mouse-scroll-multiplier = precision:0.1,discrete:3
# Apply only to precision, use default for discrete
mouse-scroll-multiplier = precision:2
The default precision multiplier is 0.1
while the default discrete
multiplier remains 1
.
Full list of closed issues on GitHub.
In each section, we try to sort improvements before bug fixes.
- config:
font-size
now reloads at runtime if font wasn't manually set. #8680 - cli:
+list-themes
now includes cursor and selection colors in preview. #8446 - cli:
+edit-config
properly handles$EDITOR
values with arguments. #8898 - config:
command-palette-entry
now supports commas in fields. #8849 - config: binding values containing
=
now parse properly. #8675 - Scrolling no longer reverses direction when dragging mouse outside the window. #8683
- Config template creates properly even if config directory already exists. #8892
- config: treat empty XDG environment variables as not existing. #8830
- shell-integration: now adds
GHOSTTY_BIN_DIR
to PATH for all supported shells. #8976 - shell-integration/bash: mark ssh wrapper as a function to avoid alias conflicts. #8647
- i18n: add Croatian (hr_HR) translation. #8668
- i18n: add Traditional Chinese (zh_TW) translation. #6773
- i18n: Portuguese translation updates. #8633
- contrib/vim: use
:setf
to set the filetype. #8914
- macOS: implement
bell-features=border
on macOS. #8768 - macOS:
bell-features=title
now works properly. #8766 - macOS: progress bar widget now renders correctly on macOS 26. #8731 #8753
- macOS: allocation error when editing config file no longer causes a crash. #8886
- macOS: custom shaders now work on Intel GPUs. #8751 #8749
- macOS: "New Terminal" shortcut properly passes desired configuration to splits. #8638
- macOS: add support for
~
expansion inmacos-custom-icon
. #9024 - macOS: quick terminal restores size more reliably when used with muiltiple monitors. #8796
- macOS: "New Terminal" app intent now opens only one terminal when Ghostty isn't running. #8669
- macOS: "Copy Screen to Temporary File and Open" action now opens the file properly. #8763
- macOS:
window-position-x/y
now correctly use top-left corner as reference. #8672 #8760 - macOS: "New Ghostty Tab Here" service now opens a tab instead of a new window. #8783 #8784
- macOS: Services no longer show warning dialog "the service could not be used". #8785 #8790
- macOS:
window-step-resize
now works more reliably with Stage Manager. #9020 - macOS: Delay app icon update in syncAppearance to improve startup time. #8792
- font/coretext: crash with certain RTL languages and trailing spaces no longer occurs. #9002
- GTK: Enter key now confirms "Change Terminal Title" dialog. #8949
- GTK: dragging last tab out of tab overview no longer crashes. #8944 #8955
- GTK:
minimum-contrast
for black text now sets proper color instead of being invisible. #8782 - GTK:
quit-after-last-window-closed-delay
now works as expected. #9052 #9053 - GTK:
split-divider-color
now applies correctly. #8853 - GTK:
unfocused-split-fill
now renders properly. #8813 - GTK: bell features now trigger on every BEL character. #8962
- GTK: duplicate signal handlers no longer cause multiple toasts. #9001
- GTK: Flatpak-aware resource directory support restored. #8816
- Ghostty now limits builds to 32 cores on Linux to workaround a known memory corruption bug in Zig, allowing Ghostty to be reliably built on machines with more than 32 cores. This bug has been resolved in Zig but won't be backported to the 0.14.x series that Ghostty 1.2.x relies on. #8925
We believe there will likely be a 1.2.2 release at some point to continue to address minor issues introduced by the changes in 1.2.0 and 1.2.1. A possible 1.2.2 release is probably going to be a mid-cycle release (months away) rather than a quick follow-up.
As it stands, the 1.2.x series has been very stable and we don't feel a rush to release any more bugfix releases. We've heard very positive feedback about the release and we're happy to see people enjoying the new features.
See the roadmap from the 1.2.0 release notes for bigger picture plans.