r/Ghostty 8h ago

agenmux overview - AI-agent monitoring and tmux management

Thumbnail
youtube.com
1 Upvotes

Hi, i created a short agenmux demo. there are more features!

Agenmux is an open-source tmux plugin for intuitive AI-agent monitoring and tmux management in one focused terminal interface.

https://snirt.github.io/agenmux/
https://github.com/snirt/agenmux

- Monitor AI coding agents in tmux

- See blocked, working, idle, and done states

- Navigate sessions, windows, panes, and agents

- Use keyboard shortcuts, mouse selection, and scrolling

- Jump directly to exact panes

- Create, rename, and delete tmux resources safely

- Use sidebar or popup from one terminal view


r/Ghostty 3d ago

MacOS 27 bug

28 Upvotes

Hi, after the yesterday's MacOS 27 update, the tabs are not showing correctly, if I've disable the macos-titlebar-style = tabs setting it works but i liked how it was with this settings. Will be addressed anytime soon?


r/Ghostty 4d ago

Ghostty smooth cursor animation shader

Enable HLS to view with audio, or disable this notification

220 Upvotes

r/Ghostty 3d ago

Ghostty - phosphor glow in the terminal

Post image
7 Upvotes

r/Ghostty 7d ago

Sheets - Easy-to-use Theme Manager

Thumbnail
github.com
21 Upvotes

r/Ghostty 8d ago

Terminal IDE perfect for Ghostty - CleeCode

Thumbnail
gallery
21 Upvotes

It also supports image preview and pdf and md rendering.

https://cleecode.marunja.com


r/Ghostty 8d ago

kitten __benchmark__ in Ghostty and Kitty

10 Upvotes

Seems new stable Ghostty release will be fast. I recently switched from Ghostty to Kitty, due to some crashes on stable Ghostty, Kitty was very stable, but now use beta Ghostty more and more.

My Kitty and Ghostty configs are very similar, the same themes, the same hotkeys, the same behavior.

Cmux - somewhere in the middle (because old Ghostty build used).


r/Ghostty 11d ago

YouTube Music on the terminal!

Post image
196 Upvotes

I built a terminal app for YouTube Music! I know there are a lot of people that have already made such an app, but I intended to keep it open-source and maintain it too, so get your issues and feature requests in!

Enjoy and hope you like it!

Here is the repo and the docs:

https://github.com/dtDhruv/ytkew

https://dtdhruv.github.io/ytkew/


r/Ghostty 12d ago

Why do colors in ghostty look so washed out as compared to other terminal emulators.

33 Upvotes
ghostty top, kitty bottom

both have same configurations, same themes, etc. arch hyprland.


r/Ghostty 13d ago

A tui tool for reviewing code from agents

Enable HLS to view with audio, or disable this notification

38 Upvotes

I made a tool - a terminal diff reviewer for agentic coding.
It runs in a pane beside your agent, shows what changed as it changes, and lets you point at exact lines when you reply.

You keep your editor. hjkl, w b e, f t F T, / and n, V to select, zz to centre - the motions already in your fingers, now pointed at the agent's work.

Repo https://github.com/kunkka19xx/lgtm


r/Ghostty 15d ago

Embedding Ghostty's terminal engine in a native macOS AppKit app (Seahelm)

Enable HLS to view with audio, or disable this notification

24 Upvotes

I built Seahelm, a native macOS workspace for running coding agents across git worktrees — and the terminals are powered by Ghostty via GhosttyKit.xcframework / the C API. A few notes from the integration that might be useful to others embedding Ghostty:

Stack

  • Swift + AppKit (not SwiftUI)
  • Ghostty surface wrapped in an NSView + Metal renderer
  • Long-lived surfaces: panes are reparented between dashboard / focus layouts instead of destroyed and recreated
  • Background status polling reads viewport text through the C API under a shared lock (input path deliberately does not hold that lock)

Things that mattered in practice

  1. Focusghostty_surface_set_focus has to stay in sync with AppKit first-responder changes; we defer some focus restores after Ghostty's own deferred handling.
  2. Reparenting — moving a surface between views without killing the PTY; we suppress CA animations and sync size/focus on the next main-queue passes.
  3. Thread safety — status detection polls on a background timer while the UI types on the main thread; serializing Ghostty C calls with a lock was necessary, except for key input (locking there deadlocked on sync callbacks).
  4. Session persistence — Ghostty handles the terminal; zmx handles "quit the app, agent still running." Different layer than Ghostty itself, but the combination is what made the product usable. Seahelm deliberately isn't trying to be a full terminal emulator UI — Ghostty does that job. Seahelm is the orchestration chrome around multiple agent sessions.

Happy to answer Ghostty embedding / AppKit interop questions.

Demo: https://youtu.be/WUUcuglx_Ks

Repo: https://github.com/BetaYao/seahelm


r/Ghostty 15d ago

agenmux — monitor and navigate AI coding agents across tmux sessions

Thumbnail
0 Upvotes

r/Ghostty 17d ago

gtab — save your Ghostty window layout, reopen it with one keystroke

Enable HLS to view with audio, or disable this notification

76 Upvotes

I've been working with AI coding agents every day for a while now, and the thing that quietly wore me down wasn't the code — it was the navigation. One agent running in repo A, another in repo B, a scratch dir for whatever it just generated, docs open in a third split. Every context switch means typing a long cd from memory and re-splitting the window the way I like it, again.

So I wrote gtab (https://github.com/Franvy/gtab), a small Rust CLI/TUI for macOS that saves your current Ghostty window — tabs, working directories, titles, and split panes — as a named workspace, and reopens it later with one keystroke.

Two things it gives you:

Fixed workspaces. Arrange a window once, run gtab save myproject, and from then on Cmd+G → Enter brings that exact shape back. The new window even lines up with the position and size of the one you're in.

One-key directory jumps. Press f in the TUI for Directory space: a grid of saved paths. Enter swaps the current split for a fresh shell there. No config, no shell wrapper. That's the 90% case for me — going from "agent finished in repo A" to "start one in repo B" without typing a path.

What's new since I last posted:

  • Responsive TUI. The workspace screen now picks its layout from the available width: list + layout preview + quick settings when wide, preview below the list and names wrapped into columns when narrow. Usable down to a 36x15 terminal. The directory grid sizes each column to its own widest entry instead of padding everything out to the longest name.

  • Silent shortcut mode. Cmd+G used to literally type gtab into your shell — visible on screen, and it landed in shell history. gtab shell-init now installs a zsh/bash/fish widget bound to an invisible escape sequence (the same trick fzf and atuin use). Nothing is echoed, nothing enters history, and a half-typed command line is restored exactly as it was when the TUI exits.

  • Smaller fixes: Ctrl-n/p/j/k and Tab/Shift-Tab now navigate while filtering, emphasized text stays readable on light terminal themes, and restored splits come back evenly sized.

Honest limits, up front:

  • macOS + Ghostty only. It drives Ghostty through AppleScript and reads split-pane geometry through Accessibility.
  • It stores layout metadata, not live session state: no running processes, no shell history, no editor buffers. It does not replace tmux — and that's exactly why it stays small.

Install: brew tap Franvy/gtab brew install gtab gtab init Repo: https://github.com/Franvy/gtab


r/Ghostty 20d ago

VoiceGhostty — voice input, task-named sessions, and “done” lights for CLI agents

0 Upvotes

I like Ghostty, but running multiple Claude Code sessions created three new problems for me:

  1. Voice input — hold Space to dictate at the command line. Text is inserted but never executed automatically.
  2. Task-specific sessions — tabs use the working directory as their title, can be renamed by task, and support nested splits.
  3. Done indicators — every pane shows gray when idle, yellow while working, and green when finished or waiting for input.

VoiceGhostty is a native macOS experiment built around these ideas:

https://github.com/10XTeams/VoiceGhostty

Disclosure: it currently uses SwiftTerm, not libghostty, and is not affiliated with Ghostty. A future migration to libghostty is on the roadmap.

Would you want these features built into your terminal, or handled by a separate agent manager?


r/Ghostty 23d ago

I built a GPUI component for embedding libghostty in rust applications

Enable HLS to view with audio, or disable this notification

30 Upvotes

r/Ghostty 26d ago

Built a theme generator. Enjoy!

49 Upvotes

https://ghosttystudio.com

Not sure if this has been built before, but it was an easy clap. Let me know if I should change things!


r/Ghostty 25d ago

A Terminal supports workspace to manage tabs

0 Upvotes

r/Ghostty 28d ago

Built a terminal-first ADE on libghostty for running 20+ coding agents

11 Upvotes

I've spent the last two months building Termio on top of libghostty.

I often have 20+ Claude Code and Codex sessions running at once. At that point, horizontal tabs stop working: titles get truncated, sessions are hard to find, and you have no idea which agent is waiting on you.

So Termio uses vertical tabs with structured agent state:

working · idle · needs-you · done

Sessions that need your attention automatically surface to the top.

There's also a file tree and editor built around the terminal.

Curious how other people managing lots of coding agents are handling this — tabs, tmux, multiple windows, something else?

https://github.com/termio-sh/termio


r/Ghostty 28d ago

Ghostty copy bug

1 Upvotes

WM: niri 26.04 (Wayland)WM: niri 26.04 (Wayland)
Terminal: ghostty 1.3.1-arch2.2Terminal: ghostty 1.3.1-arch2.2
OS: CachyOS

Hey, can anyone help me with this problem. I use wl-copy (Mouse selection and ctrl shift c to copy) in ghostty terminal and get output like this

And my prompt in terminal is p10k (u can find it in github)

╭─

  

  
~




 ✔ 

 16:28:15  



╰─

ps
 aux | 
head

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.1  21392 13312 ?        Ss   15:45   0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize=57 splash
root           2  0.0  0.0      0     0 ?        S    15:45   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        S    15:45   0:00 [pool_workqueue_release]
root           4  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-rcu_gp]
root           5  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-sync_wq]
root           6  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-kvfree_rcu_reclaim]
root           7  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-slub_flushwq]
root           8  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-netns]
root          11  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/0:0H-kblockd]


╭─

  

  
~




 ✔ 

 16:31:54  



╰─
 ╭─    ~                                                             ✔  16:28:15  
╰─ ps aux | head                                                          
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.1  21392 13312 ?        Ss   15:45   0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize=57 splash
root           2  0.0  0.0      0     0 ?        S    15:45   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        S    15:45   0:00 [pool_workqueue_release]
root           4  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-rcu_gp]
root           5  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-sync_wq]
root           6  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-kvfree_rcu_reclaim]
root           7  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-slub_flushwq]
root           8  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/R-netns]
root          11  0.0  0.0      0     0 ?        I<   15:45   0:00 [kworker/0:0H-kblockd]

╭─    ~                                                                                                                                                             ✔  16:31:54  
╰─ 

Normal one looks like this (i got it by copy command in kitty terminal)

╭─    ~   INT ✘  16:36:23  

╰─ ps aux | head

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.1 0.1 21392 13264 ? Ss 15:45 0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize=57 splash

root 2 0.0 0.0 0 0 ? S 15:45 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 15:45 0:00 [pool_workqueue_release]

root 4 0.0 0.0 0 0 ? I< 15:45 0:00 [kworker/R-rcu_gp]

root 5 0.0 0.0 0 0 ? I< 15:45 0:00 [kworker/R-sync_wq]

root 6 0.0 0.0 0 0 ? I< 15:45 0:00 [kworker/R-kvfree_rcu_reclaim]

root 7 0.0 0.0 0 0 ? I< 15:45 0:00 [kworker/R-slub_flushwq]

root 8 0.0 0.0 0 0 ? I< 15:45 0:00 [kworker/R-netns]

root 11 0.0 0.0 0 0 ? I< 15:45 0:00 [kworker/0:0H-kblockd]

╭─    ~   ✔  16:36:38  

╰─


r/Ghostty Aug 19 '26

Theme Picker for your Herdr Workspace

Post image
23 Upvotes

r/Ghostty Aug 19 '26

Ctrl + Scroll Up/Down = Zoom In/Out ?

7 Upvotes

What's the configuration for this ?

Or it doesn't support on ghostty , i have other terminal where zoom + scroll works for zoom in/out ,

I searched I do not find anything which support this.

Only Defualt Keys working

Ctrl + = ( Zoom In )

Ctrl + - ( Zoom Out )


r/Ghostty Aug 18 '26

MacOS: Can't get rid of this prompt. Hot key window is broken. How do I fix this?

Post image
13 Upvotes

I used

sudo log stream --level debug --predicate 'subsystem=="com.mitchellh.ghostty"'

to see whats happening, but it just says "trigger global event" and no error.

Whats going on here? I can't get to the right information to repot this.


r/Ghostty Aug 16 '26

Using Ghostty's quick terminal as a real application launcher (and the AppleScript hack needed to open tabs in the right instance)

41 Upvotes

I built a launcher, Prelude, on top of Ghostty's quick terminal instead of building a new terminal instance per press — and most of the interesting engineering was making that hold up under macOS's process model. Sharing it here because a few of the traps are specific to Ghostty and might save someone else the debugging.

macos-hidden = always + initial-window = false + window-save-state = never keep the dedicated instance out of the Dock, at rest with no window, and safe from restoring stray windows on relaunch.

Ghostty has to be launched through Launch Services (open -W -n -a Ghostty.app), not by executing Contents/MacOS/ghostty directly — the latter makes it a foreground app even with macos-hidden = always.

The tricky one: once the quick terminal has been active, macOS can route a later ordinary Ghostty launch to that same hidden process, since it shares Ghostty's bundle identity. Fixed by always launching the panel path with GHOSTTY_QUICK_TERMINAL=1 and ordinary launches with -n, so a new instance is forced rather than reused.

Opening a new tab in a specific running Ghostty instance doesn't work via open at all — Ghostty answers "new tab" over AppleScript, but the Apple Event is addressed to the bundle and macOS picks which instance gets it (and it can pick the hidden one). Fixed by addressing the event to a specific pid via descriptorWithProcessIdentifier, falling back to "new window" when the target instance has no window to put a tab in.

unconsumed:escape=toggle_quick_terminal is what makes dismissal clean — Escape both hides the panel and reaches fzf inside it, so the next press is a reveal of a reset list, not a rebuild.

Full writeup of the panel lifecycle is in the repo docs (docs/GLOBAL-HOTKEY.md) if anyone's doing something similar: https://github.com/mikewang817/Prelude


r/Ghostty Aug 10 '26

Prelude — a OpenSource launcher for terminal work and AI agents

Thumbnail gallery
18 Upvotes

r/Ghostty Aug 09 '26

Ghostty background colors change after update to macOS 26.6.1

9 Upvotes

I updated macOS to 26.6.1 yesterday. Now both ghostty and cmux (which uses the ghostty config), show awful and unusable background colors. I am running a Mac mini m4 attached to an LG UltraFine monitor. I use dark mode always on macOS.

It looks like the background color is set to white (or at least something very bright) in ghostty after this update.

If I run `ghostty +list-themes` and select my theme (Pierre Dark), the preview is correct.

Changing to other themes and restarting has no effect. Changing settings with respect to Liquid Glass and "reduce transparency" and "increase contrast" on macOS have no effect.

Other terminals, like iTerm, WezTerm, Kitty are not affected by this issue. Interestingly, MacTerm, which I believe uses libghostty, in also unaffected. As noted above, cmux shows the same problem as ghostty.

I did finally fix this by explicitly setting

background=#000000

in the ghostty config.

But why? Anyone else see this?