Could someone sell me on one of these alternative terminals (kitty, ghostty, wez, etc)? There is probably something I am missing not using GPU backed rendering, but I don’t know what I don’t know.

I really love the following things that I can do with kitty:

- Access the scrollback buffer in neovim

- Access the last command output in neovim

- Animated cursor trails. It sounds dumb at first but I find that when sharing my screen, the cursor trails help other people keep track of my cursor when using neovim.

Here are my configs to quickly load @screen_scrollback or @last_cmd_output in neovim

map kitty_mod+z launch --stdin-source=@screen_scrollback --type=overlay /bin/zsh -c "nvim +$ +'nnoremap q ZQ'"

map kitty_mod+v launch --stdin-source=@last_cmd_output --type=overlay /bin/zsh -c "nvim +$ +'nnoremap q ZQ'"

Gotta give a shoutout regarding Ghostty [1]. I keep switching terminal apps; I'm on an iTerm2 kick right now… but I used Ghostty for a while and it's pretty damn cool.

Anecdotally, it feels the fastest to me. Also GPU-accelerated and super configurable. It's amazing how a guy (Mitchell Hashimoto)[2] leaves the company he co-founded before it was sold to IBM.

[1]: https://ghostty.org

[2]: https://www.youtube.com/watch?v=l_qY2p0OH9A

Ghostty has nicer UX but there's certain features that Kitty has that Ghostty doesn't that I really like to use.

Can ghostty pipe the scrollback buffer to nvim?

You can get cursor trail on any terminal these days...

Can you access the scrollback buffer in nvim?

All I want is terminals to share config across MacOS, Linux and ideally Windows and have great support for SSHing into low end boxes with some minimal persistence solution like tmux on them. In an ideal world I would not have to think about mouse capture and scroll modes, they’d work seamlessly across my device and the devices I’m SSHed into.

It shocked me when I got back into playing with multiple machines after over a decade that this mostly still does not exist.

Instead we’re finally doing gpu rendering (which is amazing but … surprising for this to be the 2025 topic du jour?)

+1 -- consistency is key.

Wezterm runs everywhere, but lets me customise it once and keep that config uniform across all machines.

I can have a single config [0], wrap that in a nix expression [1] for anywhere that runs home-manager / NixOS and then also check it out and symlink on Windows machines as my portal to WSL. As my preferences change, my tooling stays consistent and familiar everywhere it's needed.

[0]: https://git.sr.ht/~kb/env/tree/main/item/dotfiles/wezterm.lu...

[1]: https://git.sr.ht/~kb/env/tree/main/item/programs/wezterm.ni...

There are dozens of us… dozens ;)

I use Ghostty, but the same thing. I have a flake based setup, which means I have the same environment and programs across all my Macs, Linux machines and WSL terminals.

Takes me about 30 minutes to spin up a new Mac laptop, with 99% of all setup done, down to system preferences.

Linux (nixOS) a little longer because for a brand new machine I may need to do a little hardware specific bootstrapping, but if I’m paving the same machine about the same.

The main features I use are

1. quick-select the output in the terminal (select files/paths, urls, etc and either copy or paste them at the cursor). This is very useful as you often don't have the foresight to pipe the command to pipe the output of the command to some selection mechanism and even placing text on the line-editor is not that easy by default.

2. view images (sixel or kitty protocol). This is pretty useful visual analog to cat that doesn't require opening another program and works over ssh. Also for video.

There are some other nice utilities for doing things like downloading files directly in the terminal (it2dl for iterm and kitten transfer for kitty).

kitty doesn't work out of the box on macos if I remember; you have to set configuration for option/command etc.

[deleted]

I tried a few of them and they were all way slower than xfce4-terminal. So I just kept using that.

I don't really dump megabytes of text into the terminal, they might have an edge there? (I found that xterm is much faster than xfce4-terminal for that.)

I have a very silly primary reason for preferring the Kitty terminal - I configured it to look very minimalistic and compact. It doesn't even have the customary app titlebar at the top. The other benefit is that it's actually a lot faster to start up than Terminal.app when you first invoke it. I know iTerm2 is really well-liked, but to me, it gave the "Breakin' 2: Electric Boogaloo" vibes.

Kitty and wez both have the ability to present graphics on the terminal which may sound like a solution in search of a problem, but once you start using the capability, it's hard to live without it.

Wez is also cross platform so I get to use it on my Linux and Mac and my (Ugh) Windows work machine. Configuration being done in Lua is also something I quite like, but your mileage may vary on that one.

I was using Wezterm because of the cross platform and the lua config (let's me reuse my mad lua skilz from keeping my nvim config).

The thing that made me switch to Ghostty was the image support in wez didn't play well with tmux.

After testing wez, kitty, and Ghostty, I ended up going with Ghostty.

I do miss the idea of the whole lua config thing, but since I never did anything with it, I can't treat that as a practical concern.

This is kinda mind-blowing when combined with yazi[0] for example. You can browse a directory with images or videos on your terminal and see previews of both.

[0] https://yazi-rs.github.io/features

All I know is that on MacOS iTerm2 is unmatched. Every few months I go in search of something similar to it (as a backup), and every single time, after trying countless terminals, I give up. The closest I've found is WezTerm, and even that is a pale shadow of Iterm2

I switched from iTerm to WezTerm and haven’t looked back. It feels faster and it’s simpler to configure. I only have a basic use case, though, as tmux does all the heavy work for me. People with an appetite for more features might legitimately prefer iTerm, but I can’t endorse the comment “pale shadow of iTerm” for all use cases.

[deleted]

I use 2-5 different macs semi-regularly.

What killed iTerm2 for me was the fact that syncing settings between machines with chezmoi was next to impossible.

With Wezterm it's just Lua code, easy to diff and easy to apply.

> Could someone sell me on one of these alternative terminals (kitty, ghostty, wez, etc)?

* They're very fast and the scrolling is very smooth, especially on a 120 Mhz (ProMotion) refresh rate on MacBook Pros.

* While TMUX runs on all of them, they have built-in multiplexing, so you terminal sessions without requiring TMUX.

* Super configurable and in some cases programable

* Excellent typeface support, including ligatures, which I liker

* A quality of life issue: you don't have to copy and paste URLs; you just right-click them in the terminal.

* Excellent typeface support

I just recently decided to replace iterm2 with wezterm when I started moving macbook over to nix. iterm2 is about the only one that didn’t work well for this, since you can’t source control the configuration (import/export doesn’t cut it)

Any of the ones you mentioned would probably work good with nix too. I don’t really care about the config being scriptable at all, it was just the first terminal that easily let me set all of the keyboard shortcuts I wanted, so I stuck with it.

iTerm2 does support source control; I've got my settings in a git repo managed by Chezmoi. In the settings dialog, under "General" -> "Settings", there's an "External settings: Load settings from a custom folder or URL" option.

I've also gone wez from iterm2, and you hit upon why. Don't ever make me click on things. I can't script => modify => export clicking on things. When you make me click on things, you've defined my interface for me, which I did not ask for.

I suppose I'm a bit of an extremist, though.

Nah, I want my configurations to be deterministic.

I put config in dir, launch app. App should look like config.

If it doesn't it's the app's fault.

There are a limited number of applications I tolerate this behaviour from, but not many.

Almost entirely with you on that, actually. But OS and other environment differences frequently demand some sort of tweaking, which I absolutely do not want to do by hand if I've done it before.

Chezmoi can do conditional templating on config files, which is super nice.

But it's always better when the application itself is cross platform and uses just a single config file.

(Just setting all of the knobs on macOS is a massive hassle and only part of them can be automated in a deterministic way...)

It's about time I started using a dotfile manager that I didn't make entirely myself - thanks for the recommendation.

For more and more of the cross-platform headaches, I've actually found myself treating the OS as more of a virtual host, and spending the plurality of my time configuring layers that run in it (modify .zshrc where it can do the work of iterm/wezterm, if it can be done in .emacs then do it there).

I get the feeling that I'm not far off shipping personal nix containers around, but there's still a little too much friction between having containers work and working on the OS itself.

To be completely honest, the reason I switched was for true-color support in my editor (vim), rather than being limited to just 256 colors.

Low latency full screen editor is really nice if you have a reasonably fast monitor and appreciate or need a terminal based editor.

The low latency claim is up for debate: https://beuke.org/terminal-latency/

Interesting! Maybe I’ll have to check out st.

> Could someone sell me on one of these alternative terminals (kitty, ghostty, wez, etc)?

Because these terminals all use the Kitty protocol, you can finally detect a single ESC press without a timeout hack as well as use shift with arrow keys to do text selection.

The fact that it has taken until 2025 to be able to do something this basic is pathetic.