@@ -4,4 +4,369 @@ description: |-
44 Release notes for Ghostty 1.2.0, presently unreleased.
55---
66
7- Coming soon.
7+ <Note >
8+ This page is still a ** work-in-progress.** 1.2.0 is still unreleased and this
9+ page is missing a lot of content. We're slowly filling in the blanks as we
10+ near the release.
11+ </Note >
12+
13+ Ghostty 1.2.0 features ** 6 months of work** with changes from
14+ ** 142 contributors** over ** 2,520 commits** . This release contains major
15+ improvements to every part of Ghostty, including hundreds of bug fixes.
16+
17+ ## Highlights
18+
19+ Potential list:
20+
21+ - terminal background image GH-3645
22+ - quick terminal on linux GH-4624
23+ - quick terminal size GH-2384
24+ - linux bell features GH-5326
25+ - linux localization
26+ - command palette GH-7153 GH-7156
27+ - w3c key input GH-7320
28+ - macOS undo/redo GH-7535
29+ - ssh shell integration GH-7608
30+ - big renderer rework GH-7620
31+ - macOS App Intents GH-7634
32+ - Custom cursor shaders GH-7648
33+
34+ ## Breaking Changes
35+
36+ - GTK: libadwaita is now required. We've
37+ [ warned that this was coming] ( /docs/install/release-notes/1-1-0#gtk:-forcing-a-dependency-on-libadwaita )
38+ since the 1.1.0 release notes and our motivations are well explained in
39+ the prior link. Please read that carefully before reacting! We put out a
40+ call for feedback from the community and discussed this decision at length.
41+ We shipped features addressing those concerns such as our SSD support, first
42+ class CSS styling, and more.
43+ - GTK: The minimum required OpenGL version is now 4.3. This was required
44+ to improve performance, fix some rendering bugs more easily, and make our
45+ OpenGL backend more maintainable. OpenGL 4.3 was released in 2012, so this is
46+ still over a decade old. GH-7620
47+
48+ ### Deprecations
49+
50+ The list below contains deprecations that will be removed in the future,
51+ but remain compatible today:
52+
53+ - ` selection-invert-fg-bg ` should be replaced with
54+ ` selection-foreground=cell-background ` and
55+ ` selection-background=cell-foreground ` . GH-5219
56+ - ` cursor-invert-fg-bg ` should be replaced with
57+ ` cursor-color=cell-foreground ` and
58+ ` cursor-text=cell-background ` . GH-5219
59+
60+ ## Full Changelog
61+
62+ [ Full list of closed issues on GitHub] ( https://github.com/ghostty-org/ghostty/milestone/5?closed=1 ) .
63+
64+ In each section, we try to sort improvements before bug fixes.
65+
66+ - Commands through ` -e ` no longer are run wrapped with ` /bin/sh `
67+ and instead are executed directly. GH-7032
68+ - Add a new command palette feature to macOS and GTK that allows
69+ executing most keybind actions even if they aren't bound. GH-7153 GH-7156
70+ - Directional ` goto_split ` on both macOS and GTK navigates to the nearest
71+ split in that direction from the top-left corner of the current split.
72+ We call this "spatial navigation" and it results in more intuitive split
73+ navigation. GH-574
74+ - New opt-in shell integration features ` ssh-terminfo ` and ` ssh-env `
75+ improve the experience of using Ghostty over SSH. GH-7608
76+ - Cursor information is now available to custom shaders, enabling custom
77+ shaders to do things such as draw cool animations for cursor movement.
78+ GH-7648
79+ - Add a new keybind ` prompt_surface_title ` that can be used to change
80+ the title of a terminal manually. GH-2509 GH-5769
81+ - Add a new keybind ` scroll_to_selection ` which scrolls the viewport
82+ to the top-left of the current selection, if it exists. GH-7265
83+ - config: ` command ` value can be prefixed with ` shell: ` or ` direct: `
84+ to execute a command via the shell (default) or directly via
85+ ` exec ` . GH-7032
86+ - config: copy on right click with ` right-click-action = copy ` . GH-4404
87+ - config: ` background-image ` can be used to set a background image for
88+ the terminal. This currently applies to each terminal, not to windows.
89+ GH-3645
90+ - config: ` env ` can be used to specify environment variables to set
91+ in the terminal environment. GH-5257
92+ - config: ` quick-terminal-size ` can be used to customize the
93+ size of the quick terminal. GH-2384
94+ - config: ` font-shaping-break ` configures when a ligature should be
95+ broken (split). GH-4515
96+ - config: new values ` cell-foreground ` and ` cell-background ` can be used
97+ with ` selection-foreground ` , ` selection-background ` , and ` cursor-color `
98+ to set their color values to the dynamic cell colors. GH-5219
99+ - config: new ` bold-color ` option to specify a custom color for bold to
100+ make it easier to read. GH-7168
101+ - config: new ` selection-clear-on-typing ` option to clear selection
102+ when typing. GH-7394
103+ - cli: pressing ` enter ` in ` +list-themes ` now shows help text on
104+ how to configure the theme. GH-4731
105+ - cli: ` +list-themes ` now has a flag to filter light and dark themes. GH-7235
106+ - custom shaders can now be reloaded at runtime. GH-7620
107+ - custom shaders blend properly with the background color. GH-7620
108+ - holding the mouse above or below the window while clicking now
109+ scrolls the viewport without having to jiggle the mouse. GH-4422
110+ - shell-integration: now uses a single ` GHOSTTY_SHELL_INTEGRATION_FEATURES `
111+ env var to specify enabled features instead of multiple env vars. GH-6871
112+ - shell-integration/elvish: use the ` kitty-shell-cwd:// ` scheme for OSC 7
113+ reporting so we don't have to encode it. GH-7033
114+ - fix crash that could happen with certain ` font-family ` flags provided
115+ specifically to the CLI. GH-7481
116+ - Resolve issue when pressing ` backspace ` with preedit text (such as
117+ when using an IME). GH-5728
118+ - config: ` keybind= ` (blank) restores default keybindings, behaving
119+ like other ` <key>= ` blank values. GH-5936
120+ - config: ` palette ` configuration now supporst whitespace between
121+ the palette number and color. GH-5921
122+ - config: All configurations that take a list of colors (e.g.
123+ ` macos-icon-ghost-color ` ) support spaces after commas. GH-5918
124+ - the ` copy_url_to_clipboard ` keybind action works properly with OSC 8
125+ hyperlinks. GH-7499
126+ - font: U+25E4 and U+25E2 (geometric shapes) are now rasterized
127+ with the built-in sprite font. GH-3344
128+ - font: corner pieces of Geometric Shapes are now rasterized with
129+ the built-in sprite font. GH-7562
130+ - input: mouse scrollwheel mapping to mouse events was modified to
131+ better match other terminal emulators. GH-6052
132+ - input: ` ctrl+<ASCII> ` works across a wider variety of keyboard layouts.
133+ GH-7309
134+ - input: mouse dragging while clicking cancels any mouse link actions. GH-7080
135+ - fix some rounding errors for Octant rendering which caused Octants to not
136+ line up in some scenarios. GH-7479
137+ - fix some mouse selection logic which sometimes caused Ghostty to incorrectly
138+ select an extra line or character. GH-7444
139+ - fix file path regular expression to require at least one slash. GH-7355
140+ - fix a crash when reflowing a grapheme with a spacer head in a specific
141+ location. GH-7537
142+ - Images rendered using the Kitty image protocol now use correct gamma
143+ blending. GH-7368
144+ - shell-integration/bash: no longer depends on a valid ` GHOSTTY_RESOURCES_DIR `
145+ env var. GH-7611
146+ - vt: ` XTGETTCAP ` works properly for lowercase hex characters. GH-7229
147+ - vt: Kitty image protocol supports delete by range operations. GH-5957
148+ - vt: Fix aspect ratio issues with some images using the Kitty image
149+ protocol. GH-6673
150+ - vt: Kitty image protocol should accept commands with no control data. GH-7023
151+ - vt: don't force Kitty images to a grid size. GH-7367
152+ - vt: OSC 4/104 allow multiple color specifications. GH-7402
153+ - vt: add support for mode 47. GH-7443
154+ - vt: add support for mode 1048. GH-7473
155+ - vt: fix a variety of alt screen edge cases for mode 47, 1047, and 1049 to
156+ better match xterm behavior. I don't know any real programs that exercised
157+ these bugs, but its good hygiene. GH-7471
158+ - vt: clear hyperlink state when switching between normal and alt screen.
159+ GH-7471
160+ - vt: ` ctrl+esc ` now produces the proper Kitty keyboard encoding. GH-7000
161+ - vt: clear correct row on index (` \n ` ) operation in certain edge cases.
162+ This fixes a misrender that could happen with the vim status line
163+ in certain scenarios. GH-7093
164+ - vt: clicking on an unfocused window no longer encodes a mouse event. GH-2595
165+ - contrib/vim: fix syntax highlighting of the config in scratch buffers. GH-7119
166+
167+ ### macOS
168+
169+ - macOS: Support macOS 26 (Tahoe).
170+ - macOS: You can now undo and redo closing any type of terminal (window, tab,
171+ or split). We keep recently closed terminals in memory for a configurable
172+ amount of time (default 10 seconds) so you can recover them if you close
173+ them by accident. GH-7535
174+ - macOS: Read-only accessibility API integration allows screen readers
175+ to read Ghostty's structure and contents. This is also useful for AI software
176+ to read Ghostty's contents. This requires accessibility permissions, so it is
177+ opt-in. GH-7601
178+ - macOS: Integration with App Intents enables Ghostty to be automated with
179+ Apple Shortcuts. GH-7634
180+ - macOS: Bell implementation. By default, the bell will bounce the dock icon
181+ and put a bell emoji in the title. This is cleared when the terminal is
182+ focused or on any input. The bell does not make any audio sounds. These
183+ can all be disabled with ` bell-features ` . GH-7099
184+ - macOS: Scripts executed from Finder or dropped onto the dock now execute
185+ via the login shell and sending ` <filepath>; exit ` via stdin. This is how
186+ the built-in Terminal and other terminals work to allow loading your
187+ login scripts. GH-7647
188+ - macOS: Add ` bring_all_to_front ` keybind action to bring all
189+ Ghostty windows to the front. GH-4704
190+ - macOS: Add ` reset_window_size ` keybind action to reset the window
191+ size to its initial configured size. GH-6038
192+ - macOS: Add ` check_for_update ` keybind action. GH-7235
193+ - macOS: Add "Return to Default Size" menu item. GH-1328
194+ - macOS: ` macos-hidden ` configuration will hide Ghostty from the
195+ dock and tab menu. GH-4538
196+ - macOS: Clicking links now uses the ` NSWorkspace ` API rather than
197+ the ` open ` command. This preserves the source application (Ghostty)
198+ which other programs can now use to change their behavior if
199+ desired. GH-5256
200+ - macOS: New config ` macos-window-buttons ` to hide the traffic light
201+ buttons. GH-7504
202+ - macOS: New option ` padded-notch ` for the existing ` macos-non-native-fullscreen `
203+ configuration to put the non-native fullscreen window below the notch
204+ but still hide the menu bar. GH-5750
205+ - macOS: New keybind action and menu item ` toggle_window_float_on_top ` to
206+ have a specific terminal widnow float above all other windows even when
207+ unfocused. GH-7237
208+ - macOS: Equalize splits now works in the quick terminal. GH-7480
209+ - macOS: The reset zoom button for splits is now visible with titlebar tabs
210+ and a single tab. GH-7502
211+ - macOS: ` Cmd+h ` (macOS hide window) no longer sends ` h ` if attempting to
212+ hide the last visible window. GH-5929
213+ - macOS: ` maximize ` configuration now works on macOS. GH-5928
214+ - macOS: Improve key input handling speed by about 10x. GH-7121
215+ - macOS: Differentiate between closing a tab vs a window when pressing the
216+ red traffic light. GH-7618
217+ - macOS: Title text is vertically centered with ` macos-titlebar-style=tabs ` .
218+ GH-5777
219+ - macOS: focus no longer goes to the first split when toggling
220+ non-native fullscreen. GH-6999
221+ - macOS: ` cmd+. ` can now be bound. GH-6909
222+ - macOS: font glyphs constrained to a terminal cell now appear sharper. GH-6914
223+ - macOS: the ` close_window ` keybind action now works. GH-7003
224+ - macOS: quick terminal can appear and disappear more reliably
225+ on fullscreen spaces. GH-7070
226+ - macOS: selection off the left edge of the window no longer
227+ scrolls up by one line. GH-7071
228+ - macOS: New windows created with ` macos-titlebar-style=hidden ` now cascade
229+ their position like other windows. GH-7567
230+ - macOS: Key input that clears preedit without text shouldn't encode to pty.
231+ GH-7226
232+ - macOS: keyboard shortcuts now work properly with the "Dvorak - QWERTY
233+ ⌘" macOS keyboard layout. GH-7315
234+ - macOS: Round up fractional mouse scroll events, making mice with scroll
235+ wheels feel more usable. GH-7185
236+ - macOS: All split directions are now available in the menubar and
237+ context menus. GH-5807
238+ - macOS: Setting the pwd with OSC 7 now works with macOS's "Private Wi-Fi
239+ Address" feature. GH-7029
240+ - macOS: Resize overlay now uses language-neutral ` w x h ` format
241+ and omits units. GH-7142
242+ - macOS: "Services -> New Ghostty Window/Tab Here" now works with files.
243+ GH-7286
244+ - macOS: Reliably retain focus when using non-native fullscreen. GH-7279
245+ - macOS: Fix memory leak that would retain memory of the last closed
246+ surface (only one at a time). GH-7507
247+ - macOS: Fix crash that would occur if non-native fullscreen and
248+ ` fullscreen = true ` were both set. GH-7277
249+ - macOS: If ` title ` is set, the title is set on the window on load,
250+ allowing window managers to see the title sooner. GH-6056
251+ - macOS: Any keypress with ` cmd ` pressed is not encoded for legacy
252+ key encoding. GH-6057
253+ - macOS: Invoking ` new_tab ` in anyway within the quick terminal now
254+ shows a helpful error rather than creating a new window. Tabs in the
255+ quick terminal will be supported in a future release. GH-5939
256+ - macOS: Closing non-native fullscreen windows no properly restores
257+ the menu bar. GH-7525
258+ - macOS: Dismiss any notifications on window focus. GH-7531
259+ - macOS: Dismiss any notifications on window close. GH-7531
260+ - macOS: Dismiss any notifications of an already-focused window after
261+ a few seconds. GH-7531
262+ - font/coretext: improve font search sorting to be more consistent. GH-7483
263+ - man pages now mention macOS-specific configuration path. GH-5938
264+
265+ ### GTK (Linux, FreeBSD)
266+
267+ - GTK: Support for FreeBSD. This work was all driven by a single community
268+ member and we are very grateful for their contributions. GH-7606
269+ - GTK: The quick terminal now works on Linux under Wayland and the
270+ ` wlr-layer-shell ` protocol. GH-4624
271+ - GTK: ` global: ` keybinds now work whenever XDG desktop portal
272+ is available (almost all desktop environments). GH-6051
273+ - GTK: Audio bell support (default off) can be enabled with
274+ ` bell-features=audio ` and setting ` bell-audio-path ` and
275+ ` bell-audio-volume ` . GH-5326
276+ - GTK: Install DBus and Systemd activation services for faster startup. GH-7433
277+ - GTK: OpenGL renderer now supports linear blending for more correct
278+ color blending. GH-7620
279+ - GTK: Dynamically choose between ` io_uring ` and ` epoll ` for the
280+ async API on Linux. Previously, this was hardcoded to ` io_uring `
281+ and epoll-only systems had to build from source. GH-5916
282+ - GTK: New config ` async-backend ` can be set to ` epoll ` to force using
283+ epoll instead of io_uring on Linux. This can be useful on kernels where
284+ iowait reporting is broken. GH-5916
285+ - GTK: New config ` window-show-tab-bar ` customizes when the tab bar
286+ is visible. GH-5590
287+ - GTK: New config ` quick-terminal-keyboard-interactivity ` to specifically
288+ customize the keyboard interactivity setting on Wayland. GH-7477
289+ - GTK: New keybind action ` show_gtk_inspector ` to show the GTK inspector
290+ since terminal keybinds usually clobber the GTK default. GH-7468
291+ - GTK: The new tab button now has a dropdown menu to create new splits. GH-7127
292+ - GTK: A new "remember choice" toggle is added to the clipboard confirmation
293+ dialog. GH-6783
294+ - GTK: Escape ` ( ` and ` ) ` when dropping filepaths onto the terminal. GH-6922
295+ - GTK: ` copy-on-select=clipboard ` no longer causes toast spam while
296+ selecting. The copy only happens when the mouse is released. GH-4800
297+ - GTK: All split directions are now available in the menubar and
298+ context menus. GH-5779
299+ - GTK: Windows do not request close confirmation for ` wait-after-command ` .
300+ GH-7500
301+ - GTK: Fix an issue where the window would sometimes become blank
302+ and not close after the last tab was closd. GH-5837
303+ - GTK: Resize overlay now uses language-neutral ` w x h ` format
304+ and omits units. GH-6013
305+ - GTK: Clean up surface cgroup properly on close. GH-6766
306+ - GTK: Reduce flickering/stretching on resize for OpenGL. GH-7155
307+ - GTK: Detect ` GHOSTTY_RESOURCES_DIR ` in more installation environments.
308+ GH-6814
309+ GTK/X11: Fix blur regions when using > 200% scaling. GH-6978
310+ - font/freetype: error when loading SVG glyphs, since we don't support them
311+ anyways. GH-6824
312+ - font/freetype: fix data races that could cause crashes in rare scenarios.
313+ GH-7238
314+ - packaging: experimental snap packaging is now tested in CI. The
315+ published snap image is maintained by an external maintainer for now.
316+ GH-3931
317+
318+ ### Changes for Package Maintainers
319+
320+ - We now generate source tarballs with some preprocessed files as is
321+ standard with many source tarballs (e.g. convertig parser ` .y ` to ` .c ` ).
322+ For Ghostty, we preprocess Blueprint ` ui ` to ` xml ` files, translations,
323+ and GTK resource files. This allows Ghostty to built on older platforms
324+ without access to newer build tools. ** Packagers should use the source
325+ tarball, not the Git checkout. The ` PACKAGING.md ` documentation has been
326+ updated with this information.** GH-6800
327+
328+ ## Roadmap
329+
330+ Ghostty 1.3 will continue the focus of making Ghostty the
331+ [ "best existing terminal emulator"] ( https://mitchellh.com/writing/ghostty-1-0-reflection )
332+ by shipping the last remaining major missing features to achieve
333+ parity with other popular terminal emulators. Namely, we plan on shipping
334+ scrollback search and scrollbars for 1.3, at a minimum.[ ^ 1 ]
335+
336+ The primary focus of Ghostty 1.3 will be on desktop application features
337+ (of which scrollback search and scrollbars are a part). The core terminal
338+ emulation features of Ghostty have already proven to be very feature
339+ rich and stable. However, we plan on continuing to expand our VT feature
340+ support, such as adopting new experimental protocols that have been recently
341+ released into the ecosystem by others.
342+
343+ To answer common requests, ** Windows** and ** libghostty as a
344+ standalone library** are not planned for Ghostty 1.3. These remain part
345+ of the long term roadmap, but we want to focus on our existing platforms
346+ and desktop applications first.
347+
348+ ### Moving to a March/September Release Cycle
349+
350+ Ghostty will move to a 6-month release cycle for major/minor releases,
351+ with the next minor release (1.3.0) planned for March 2026. A March/September
352+ release cycle aligns well with many major Linux distibutions and macOS.
353+ Patch releases (e.g. 1.2.1) will be made as needed on an unscheduled basis.
354+
355+ This is a relatively long release cycle for modern applications, but
356+ let's the development team focus on large, impactful features with enough
357+ time to stabilize in tip releases. For packagers, it avoids the churn of
358+ packaging new releases frequently. And the alignment with major OS releases
359+ let's us ensure we ship major releases that work well on new OS versions.
360+
361+ For users who are interested in more frequent updates, we recommend using
362+ the [ ` tip ` release channel] ( /docs/config/reference#auto-update-channel ) on macOS or
363+ [ building from source] ( /docs/install/release-notes/1-1-0#roadmap ) frequently on Linux.
364+ We have thousands of nightly users (thank you for testing!) and the entire
365+ maintainer team works hard to keep tip releases stable. For the entire 1.1
366+ to 1.2 development cycle, I can't remember tip releases ever being broken
367+ for daily use.
368+
369+ [ ^ 1 ] :
370+ "Parity" here is used loosely to describe the most popular, frequently
371+ used features of other terminal emulators. There is a long tail of features
372+ we'll likely never fully implement (and vice versa for our features).
0 commit comments