Ghostty notes

Ghostty 1.0 is Coming

Ghostty is a terminal emulator written in Zig with an emphasis on performance – looking forward to trying this!

After nearly two years of development and private beta testing1, I’m excited to share that Ghostty 1.0 will be publicly released in December 2024 as an open-source project under the MIT license.

https://mitchellh.com/writing/ghostty-is-coming

Ghostty is released

This has been privately developed for several years now, but was released as OSS:

Arch already has a real package. Note, this is in the main feeds, not AUR.

https://archlinux.org/packages/extra/x86_64/ghostty/

Blog article:

https://mitchellh.com/writing/ghostty-1-0-reflection

I’ll report back after using it a bit …

This is one first significant tools written in Zig (most are written in Rust these days), so interested in how it is working out. From the above blog article:

Zig has been an absolute joy to work with. I have fun writing Zig every single day and that fun hasn’t diminished a bit over two years. The build system is fantastic, the community is amazing, and the core maintainers are brilliant. My excitement is well known and I’ve also put my money where my mouth is by sponsoring the Zig Software Foundation.

The split between shared core written in Zig and platform-specific GUIs has also been a success. I’ve been able to effortless integrate platform-native experiences into Ghostty while keeping over 90% of the code shared.

The beta community has also had no problem contributing to the project. I think this shows that despite being a new, niche language, Zig is easily approachable and productive for new contributors. This is great news for the future of the project.

One thing I don’t like about Ghostty compared to Alacrity is the size of the bar at the top, which I don’t really need as I use Zellij instead of tabs in the terminal:

However, setting the following in ~/config/ghostty/config gets rid of it:

gtk-titlebar = false

1 Like

The latest version of Ghostty completely gets rid of any bar at the top of the screen with the above config item – that is nice in that gives and extra line of text.

I also figured out how to click on links in Ghostty inside Zellij – Shift+CTRL+mouse works. Outside of Zellij, CTRL-click works. This was a blocker for me using Ghostty, so back to trying it for awhile.

I was not able to use Option + left|right arrows for switching tabs in zellij and was one of hurdles for me. Luckily found a way to get this sorted by adding following to config

macos-option-as-alt = true
keybind = alt+left=unbind
keybind = alt+right=unbind
1 Like

Ghostty supports the Kitty graphics protocol

Example displaying an image in yazi:

I’ve been very happy with Alacritty, but may need to give this a try now …

eliminating window decorations

This is my current config:

…/.config/ghostty ❯ more config
# Dynamic theme colors
config-file = ?"~/.config/omarchy/current/theme/ghostty.conf"

# Font
font-family = "CaskaydiaMono Nerd Font"
font-style = Regular
font-size = 9

# Window
window-padding-x = 14
window-padding-y = 4
confirm-close-surface=false
resize-overlay = never
window-decoration = none
gtk-titlebar = false
gtk-tabs-location = hidden
adw-toolbar-style = flat

# Cursor styling
cursor-style = "block"
cursor-style-blink = false
shell-integration-features = no-cursor

# Keyboard bindings
keybind = f11=toggle_fullscreen

Looks pretty good:

Ghostty supports dropping images into Claude Code

I dropped the following image into claude:

❯ [Image #1] what is this image?
  ⎿  [Image #1]

● This is a screenshot from FlightGear, the open-source flight simulator. Specifically:

  - Aircraft: A Lockheed P-38 Lightning — the WWII twin-boom, twin-engine fighter (visible in the title bar: "Lockheed P38"). You
   can see the iconic central nacelle with the pilot, flanked by the two engine booms.
  - Location: Flying through (or under) the Golden Gate Bridge in San Francisco — recognizable suspension towers and cabling,
  with the Marin Headlands to the left.
  - UI clues: The top menu bar (File, View, Location, Autopilot, Environment, Equipment, AI, Multiplayer, Debug, Help) is the
  standard FlightGear menu. The "Multiplayer Chat" panel in the lower right and the "Pilots: 0" counter indicate you're in (or
  set up for) a multiplayer session.

  Classic FlightGear stunt — buzzing the Golden Gate is something of a community tradition.

(This image is left over from when my son used to use this computer to play Flightgear)

Dropping images into the terminal still does not seem to work in Alacritty for me.

Doing a little research:


Dropping images into Claude Code works in Ghostty and not in Alacritty because Ghostty implements the “modern terminal” image and drag‑and‑drop plumbing that Claude Code expects, while Alacritty intentionally does not support any terminal graphics/image protocols.

What Claude Code expects

Claude Code’s image support relies on terminal features beyond plain text:

  • Image/graphics escape sequences or terminal‑specific protocols (e.g., iTerm2/Kitty‑style inline images).
  • Proper handling of drag‑and‑drop or clipboard payloads so that dropped images are forwarded to the running TUI instead of being ignored.

Terminals that implement these capabilities can hand the raw image data (or a path/temporary file) to Claude Code, which then uploads it to the model.

What Ghostty provides

Ghostty is designed as a “feature‑rich” modern terminal and includes terminal graphics support (bitmap/inline images) and OS‑integrated behaviors.

Because Ghostty understands these image/graphics escape sequences and has codepaths for handling richer clipboard/drag‑and‑drop data, it can route a dropped image into the running TUI session so Claude Code receives it.

There have been open issues specifically about Ghostty and Claude Code image drag‑and‑drop, which confirms that Ghostty is at least trying to participate in this workflow rather than ignoring it.

What Alacritty does not do

Alacritty’s philosophy is to be a fast, GPU‑accelerated text terminal and avoid non‑standard features like inline images or advanced graphics protocols.

Comparison matrices explicitly list “Image / Terminal Graphics Protocol Support: No” for Alacritty and “Yes” for Ghostty, which means Alacritty neither implements Kitty/iTerm2‑style image protocols nor the associated drag‑and‑drop plumbing that Claude Code relies on.

So when you drop an image into the Alacritty window, there is no code to translate that into data on stdin/pty for the child process; the drop may be ignored or treated as a simple URI/text, which Claude Code doesn’t interpret as an image upload.

Net effect

  • In Ghostty, image drop → terminal recognizes rich drag‑and‑drop/image data → forwards to Claude Code via supported graphics/protocol path → Claude Code uploads/uses the image.
  • In Alacritty, image drop → terminal only knows about plain text, no image protocol → nothing useful reaches Claude Code → upload appears “broken.”

Ghostty also seems to give me smoother gradients on progress bars, so maybe more colors available:

1 Like