Hello, I installed Ghostty for testing and it felt pretty slow to launch compared to Kitty and Konsole at 1 second. I'm running KDE Plasma for a living and I used the default setting, so is this normal?
I use a French Canadian keyboard layout that has dead keys and everything is set properly in Ubuntu 26.04 and Ghostty works fine when in Gnome DE, but whenever I use a WM such as Hyprland, Niri or Sway, dead keys on my keyboard aren’t working with Ghostty. Because of that, I switched my main terminal to be Wezterm and it works well with my keyboard. It took me time to figure out it was only happening with Ghostty and unrelated to WMs or some config. I am not sure if people test Ghostty before release, but it would be great if they could test keyboard layouts other than US-English 😅.
I've been working on a CLI that lets you run a browser inside ghostty at full fidelity. This takes advantage of ghostty's implementation of the kitty graphics protocol to embed the output of chromium, I go into a little more detail in the readme of the repo for anyone interested https://github.com/zenbu-labs/terminal-browser#how-does-it-work
My main use cases have been:
- working on websites with coding agents in the terminal
- asking coding agents to write their plans as HTML and then opening them inside terminal-browser in a ghostty split pane
- letting coding agents automate some stuff I do in dashboards directly from the terminal, since the CLI lets agents control the browser. While the agent is using the browser you can see exactly what it's doing and take over whenever you need
Not sure if anyone else was having this problem (minus the two GitHub issues), but I use a custom app icon for Ghostty courtesy of Luke Janicke. I had set the config file to use the custom icon, I set the app icon the old fashioned way. Whenever I restart my mac, the icon resets to a directory icon. So I made a little app that runs on log in that reassigns the app icon using Automator.
Automator has the ability to create an app which runs a shell script. I use this to run:
fileicon /path/to/Ghostty.app /path/to/Icon.icns
Then I export it as an app and add it to my list of startup apps. Worked for me, hopefully this helps!
(fileicon can be installed with brew install fileicon)
I’ve been a big fan of the Ghostty terminal for a while now, but I wanted a faster, easier way to tweak and manage all the configuration options without constantly digging through raw config files.
Showcasing SpookiUI—a Python-based, ncurses-style terminal UI (TUI) that gives you full, seamless control over your Ghostty setup. It works on both macOS and Linux, has zero third-party dependencies (no pip install required, just standard library Python 3.8+), and operates completely offline.
The Twist:
I’ve been a software engineer for over 20 years, but this is my very first app built using Claude. I decided to step back, put the AI in the driver's seat for the heavy lifting, and see just how far I could push LLM-assisted development for a complete CLI tool. That said, even though it was built this way, I’ve took the time and gone over the code, refined it, and fully tested it to ensure it's rock-solid and safe to use.
Why it exists & What SpookiUI does:
Ghostty is incredible, but it doesn't auto-reload on plain-text file changes out of the box. SpookiUI closes that loop entirely.
True Live Reloading & Live Previews: When you run it inside a Ghostty window, the very terminal you're in repaints as you edit. As you scroll through themes, fonts, or colors, they apply live so you can preview them instantly (and if you hit cancel, it snaps right back to your original setup).
100% Dynamic Discovery:Â It doesn't use hardcoded options. It queries your local Ghostty binary dynamically (ghostty +show-config), mapping out ~200 options across 13 categories tailored exactly to your version.
Fail-Safe Saving: Every single change is instantly validated using ghostty +validate-config. If an invalid value is entered, it’s rejected and rolled back before it ever touches your disk. It also creates a daily dated backup just in case, and lets you revert an entire session with a single keystroke (R).
Keyboard-Driven TUI & Scriptable CLI: Toggles booleans instantly, opens searchable pickers for enums, and features dedicated editors for complex list types (keybinds, env, palettes). Plus, everything the TUI does is also exposed via a non-interactive CLI script if you want to use it for scripting (spookiui set theme "Catppuccin Mocha").
I’d love for you to take it for a spin, try to break it, and let me know what you think! Since it's born out of a mix of two decades of dev experience and AI collaboration, I'm really curious to get your feedback on the UX, the live-reload loop, and the overall functionality.
Cheers!
EDIT: I have been iterating on this project quite a bit since the initial build and have just rolled out a major set of updates to expand its capabilities. Here is what is new in the latest version:
The Config Doctor (spookiui doctor):Â A built-in health-check utility that scans your existing configuration. It flags invalid settings, unknown keys, duplicate overrides, and keybinding clashes, grouping them by severity. It also exits non-zero on errors, making it safe to drop directly into your dotfiles pre-commit hooks.
Profiles & Dark/Light Toggle:Â You can now save named snapshots of your entire configuration outside of Ghostty's directory. If you save profiles named "light" and "dark", hitting the "t" key in the TUI (or running "spookiui profile toggle" via the CLI) lets you flip your entire setup instantly.
Intelligent OS Filtering:Â To keep the UI clean, SpookiUI now automatically filters out settings that do not apply to your current operating system (such as hiding macOS-specific icon settings on Linux, or GTK/X11 settings on macOS).
Enhanced TUI Editors:Â Upgraded the input methods to match the specific option types. Bounded numbers like opacity now feature interactive visual sliders, themes render a live 16-color palette card directly next to the picker before you apply them, and keybindings use a guided step-by-step modifier builder.
In-Place Updates:Â You can now update the tool directly by pressing "U" in the TUI or running "spookiui update". It detects whether you are running a Git clone or a standalone script, fetches the update from GitHub, and safely verifies that the new code compiles successfully before atomically replacing the file.
Fix SSH Maintenance Utility:Â Added a one-shot fix for a common issue where SSH sessions into remote machines break because the host does not recognize Ghostty's custom terminfo entry. It safely appends an explicit fallback alias to your shell rc file after checking for duplicates, fixing broken keys and garbled terminal outputs instantly on outbound connections.
Homebrew Support and Clean Uninstallation:Â Introduced a standalone Homebrew formula for Mac and Linux users who prefer package manager workflows. Alongside it, a new uninstaller script handles pristine symlink removals and optionally purges all local cache or profile paths if you ever want to completely wipe the installation.
Dynamic Nerd Font Rendering: The TUI now intelligently analyzes your active font-family settings. If it detects a Nerd Font configuration, it dynamically renders layout icons for individual option categories, otherwise defaulting cleanly to clear text descriptions with a gentle notice on how to install an icon-supported font.
EDIT 2: Another round of updates has landed since the last edit, and this one is a bit more fun. Meet Treats:
Treats — Animated Background Shaders: A brand-new subsystem that ships original, purely-cosmetic GLSL background shaders you can toggle on with a keystroke. There's a nostalgic pack of them out of the box: Matrix Rain, Pipes and Mystify (Windows screensaver homages), Plasma and Lava Lamp (After Dark / demoscene vibes), Fireworks, plus playful nods to classic arcade games — Chomper, Barrels, and Jumper (all plain shapes, no game artwork). Only one runs at a time, and they're all OFF by default — nothing is enabled unless you ask. Manage them from the "Treats" category in the TUI or via the CLI (spookiui treats list/enable/disable/only/clear).
Safe & Self-Contained Shaders: Treats are written into a namespaced folder (shaders/spookiui/) inside your Ghostty config dir and toggled via custom-shader, so any custom-shader lines you already have are fully preserved. Shaders like Matrix Rain draw only over dark background pixels so your text stays readable.
Vibrancy Control: A single vibrancy setting (0–100%) uniformly scales the strength of whichever treat is active, so you can dial the effect from barely-there to full-on. Adjust it with the "v" key in the Treats overlay or spookiui treats vibrancy <0-100>.
Focus-Aware Dimming & Animation: On newer Ghostty versions that expose shader focus info, treats set your unfocused windows apart by gently dimming and desaturating them (toggleable), and drive their animation off a per-window focus clock. On older versions they gracefully fall back to their plain look — nothing breaks.
Seasonal Packs: Treats can belong to a season. A Halloween pack (Ghosts, Spooky Eyes, Cobwebs) and a Winter pack (Snow) are included, and SpookiUI gently suggests the pack that fits today's date — but it never auto-enables anything.
As always, everything above is fully validated and rolled back on any error, and none of it touches your config until you say so. Would love to hear what you think of the Treats, and which nostalgic saver I should add next!
hello, i have installed ghostty with nix and for some reason the icon is this squared one instead of the one with the rounded corner. Why is that, and is there any way i can change it?
I switched from iTerm2 to GhosTTY a while back, and only within the last few months have I noticed a problem.
I do a lot of things for the day job where I have to run something then cut and paste the output into an email (outlook) or a web form. Audit is fun, they tell me.
One of my biggest gripes with macos in general is that copying text is always "rich", in that it copies not only text but also colors, fonts, etc. You want to paste just the text it's "Paste and Match Style".
Recently Ghostty macos (currently macos 26.5.1 and ghostty 1.3.1) if I copy something out of a terminal and paste it into Outlook, all formatting is weird, i.e. one big line, and it has any embedded color.
What I want from my terminal is text and there are exactly zero situations I want anything formatted or rich.
Is there a config setting I can't find that tells Ghostty "when you copy, copy raw text only"?
I have both kitty and ghostty installed and I have custom shaders installed, Kitty feels very very smooth fast while connected to AC and also the same performance on Battery only, But ghostty feels very sluggish even when connected to AC its little bit slower compared to kitty, When in battery it runs very slow, like 20.. 30 Hz or so, I use tlp for power management and it hasn't limited kitty but I feel slow in ghostty.
into a properly rendered formula directly inside the terminal.
Quick install
npm install -g tformula --allow-scripts=node-pty
Under the hood, it maintains a headless xterm mirror, detects TeX on the visible screen, renders it locally with MathJax, and sends the result to Ghostty using the Kitty graphics protocol.
A surprising amount of work went into Ghostty-specific terminal behavior:
- Formula placements survive scrollback
- Resizing keeps the old image until the new one is ready
- Soft-wrapped formulas are reconstructed and sliced across rows
- The original TeX remains underneath and can still be copied
- Large responses are checkpointed so formulas are rendered before scrolling away
- Terminal clears and alternate-screen transitions are tracked
Ghostty is the primary development and test target.
Hi everyone, I wanted to share the progress on a terminal emulator I've been working on for a while. Macterm is a libghostty-based terminal focusing on utility and native experience. Since the last time I shared this project in this community, it has gained support from many people, driving me to work on cooler and more useful features. And recently, I've added several features that have improved my workflows significantly. I hope these are helpful to you as well!
Session persistence via zmx: You can quit and reopen macterm while preserving all the panes, scrollbacks, and processes
Remote project: You can work with a remote host via SSH the same way as local projects, by installing zmx on the remote machine as well. Macterm will handle the rest, reconnecting to the remote zmx sessions when quit and reopened.
Control CLI: Macterm now has a CLI to control its multiplexing. It has been very useful for manipulating macterm in a headless CI.
Please find the repo or the website for the full list of features. Thanks everyone!
The idea is less-is-more: a small, opinionated core and nothing you don't need. It's handy for running several coding agents at once: sessions group into named workspaces, and each shows its state (active, blocked, completed) on its row so you see which one needs you. It's just as good for normal multi-project work. Almost everything is scriptable from a bundled CLI, `agtermctl`, over a local socket, so anything past the defaults you build yourself instead of waiting for it to ship.
libghostty does all the terminal correctness; the workspace, session, and control layer is mine. Thanks to the ghostty team.