Could someone explain to me terminal performance and what these numbers practically mean? It's a complete mystery to me. It's so incredibly variable, the fact that I notice variability as a user really perturbs me, it's 2019, and displaying a matrix of a few thousand characters is still a challenge.
I live in fullscreen iTerm, Tmux and Vim. I have 256 colours enabled. Vim has lazy redraw enabled. I'm on a 2018 MacBook pro. Scrolling is smooth only when connected to power (probably related to CPU throttling - but it's 2019 and it shouldn't matter). iTerm is significantly faster than Terminal when resizing Tmux panes and Vim windows. I've had similar issues on Linux.
The only terminal emulator that has decent performance scrolling and resizing Vim buffers Alacritty.
What's going on? Why is there a bottleneck here? Is it rendering the text? Is that still hard to do in 2019? I don't understand the technical challenge of parsing a protocol that would literally work on a real VT100 sans some escape sequences and colours.
> Scrolling is smooth only when connected to power (probably related to CPU throttling - but it's 2019 and it shouldn't matter).
This likely isn't CPU throttling at all. iTerm by default uses the faster Metal renderer when your MBP is plugged in, and a different renderer when not. You can adjust this so that it always uses Metal by following the instructions on this page: https://gitlab.com/gnachman/iterm2/wikis/Metal-Renderer
If you live full time inside iTerm, I would highly recommend reading over the documentation and becoming fully familiar with the different aspects of it and what you can tweak. Despite it being something that merely "displays a matrix of a few thousand characters", it is still a very complex piece of software and knowing at least a basic level of its configuration will likely be worth it.
There are (at least) two different things people mean when talking about terminal performance. What's measured above is latency, i. e. the time from keypress to the letter appearing on screen. I must say I rarely actively notice any delay, except when the system is slow or I'm working remotely and the delay is above, say, 1/3 of a second. I was, however, surprised by how notable no delay can be if you ever get to experience it. In my case, this was typing in an UEFI shell. I can't measure the delay there, and it's surprising that the difference from 5.0ms to, at best, 0ms is noticeable at all.
There is also throughout. Some programs have real problems rendering large amounts of output, i. e. when tail'ling logs. This was a significant problem with Hyper, for example, but they have changed the backend library and it's fine now. I believe the reason here is usually a lack of bouncing, i. e. rendering for every new character even if they arrive faster than the refresh cycle.
It's not entirely unreasonable that rendering takes some time. Terminals have evolved and, as but one example, character widths now vary even when using monospaced fonts (non-ascii characters, emojis, whatever). Then, there are fancy additions like ligatures, transparency effects, etc.
For me it's about using tmux with the same commands as the native iTerm2 commands to split panes and other tasks. That way I can work on a server in the same way I work on my machine.
Metal based iTerm2 on a low power intel CPU is one thing which doesn't make me miss Linux terminal on MacOS. I've put up a dedicated display for it and functions seamlessly.
Please try to explain your performance issues, the author is active on HN and perhaps he could comment on it.
For me it’s only 1 feature: the profiles window. I configure them as ssh to hosts. And then I have a decal/text in the corner + a color in the bg. But most importantly is the favorites manager
For me it is the Quake mode and triggers so I can turn output of the many tools I use into coloured and functioning URLs. (E.g. bug ids, pull requests and so on)
Is that really a nice feature? I live in tmux + iTerm, and have set up the integration but never really used/enjoyed is so I just disabled it. Not sure what I'm missing honestly
> displaying a matrix of a few thousand characters is still a challenge.
> I don't understand the technical challenge of parsing a protocol that would literally work on a real VT100 sans some escape sequences and colours.
We definitely ask a lot more of a terminal today then we did of a VT100.
First, it's not really a grid anymore: double-width CJK characters and emoji break that assumption a bit (though it still holds if you just consider them as 2-column glyphs). Our fonts are nicer: we have vectors not bitmaps, anti-aliasing, ligatures, combining accents. Color, but also effects like bold/italics. iTerm2 is also capable of images (even before this release, which added sixel graphics; it can output some other format (PNG?) with a special escape.) iTerm2 will dynamically wrap lines (it remembers where actual  chars are, and if you resize, it can re-wrap the lines appropriately). It can pick out URLs, and make them easily clickable/copyable. It tracks the timestamp of each line of output (press ⌘⇧E by default, or View → Show Timestamps). And it's doing this on top of an OS that is also mux'ing your display out to multiple applications (windows), shared with the same CPU that is driving the programs emitting the output into the terminal (it's not dedicated hardware).
And the terminal protocol is not really simple… some aspects of it rely on how fast input comes from (this only happens on the input side, I think, and there's a varieties of "if this, then this sequences means X, otherwise it means Y".
I too would ask for better perf from iTerm2 (I get much better perf from Terminator on Linux — but it doesn't have quite the featureset that iTerm2 has, I think) but I do think that there's a lot more going on than one might give the emulator credit for.
> The only terminal emulator that has decent performance scrolling and resizing Vim buffers Alacritty.
I've not used Alacritty, but my understanding is that it (intentionally) has a much narrower feature set to support. (I personally prefer something feature-ful like iTerm2.)
> I'm on a 2018 MacBook pro.
I've actually wondered if this is part of it. I get low perf from not just iTerm2, but my system in general. I've looked for, and not really found, a way to see what the core temps are (I've mostly found this, but the numbers are rough) and whether it is being thermally limited (I have no idea). The MBP's limited intake/exhaust areas just feel to me that they would significantly limit the thing's ability to dissipate heat. (E.g., my Lenovo has much more surface dedicated to airflow, and I seem to get better perf from it. The Lenovo also gets hotter too, so… IDK. But it also runs Linux and Terminator, so it's hardly an apples-to-apples comparison.)
This does lend credence to my perception that Terminal is faster. I know everybody else love love loves iTerm2, but I could never get past the feeling of "ugh I am typing in molasses what is going on here." Later versions have been better, but later versions of Terminal have also had more functionality. It's possible I still don't know what I'm missing, but so far the must have features I've tried apparently just weren't ones I must have. (Yes, I know about split panes, but I can run tmux. Yes, I know about iTerm2's tmux integration and I tried it and it was kind of [shrug emoji] for me, I dunno. Terminal has a find-on-page feature and I so far haven't been saddened it doesn't support regex. My shell has autocomplete and iTerm hasn't sold me on its implementation being better. Alfred has a clipboard history and iTerm hasn't sold me on its implementation being better. And so on.)
1. Built in password manager (command-alt-f) for the Times you’re stuck with ssh passwords
2. Output triggers: iterm can run actions in response to certain text on stdout: I use this to insert a mark at each terminal prompt line and when the phrase “NOTICE ME:” is detected. This way, I can use iterm’s mark navigation features to quickly jump to interesting lines
3. Finally, the biggest advantage of iterm is its ability to auto detect soft boundaries like vim vertical splits and restrict selection to one side or the other of the split.
I've spent at least 6+ straight months on iTerm2 3.x, kitty, and Alacritty (my current primary terminal), and briefly tried Terminal. Terminal is waaay faster. The only thing that's stopping me from using it as my primary terminal is the poor colour support and poor split window support (and setting shortcuts to go between them).
I am quite suprised how low your numbers are(eventough I am aware that comparing between machines is probably unreliable), especially Hyper because my experience with it was that it was really slow compared to other terminal emulators.
Is it an OS version issue? I haven't updated my OSX in ages (mainly because I don't like the direction its going, and updating seems to be guaranteed to fuck up my Logic Audio install like it does everydamntime), and iTerm runs amazingly smoothly on it as is. I feel no lag with it and I spend a lot of time on the command line (Lisp programmer on vim ... go figure...), so I'm wondering if these numbers even matter after a certain point, or if later OSX versions are doing something crappier than the usual.
Measuring the time between a simulated keypress and pixels changing in the framebuffer seems kind of inadequate, since it’s missing out on delays in the input and display hardware.
In many cases the display lag can be one of the biggest sources of input lag, often dwarfing the sub 20-30 ms lag times the earlier post measured across iTerm and it’s alternatives.
Not necessarily. For example, if one app synchronizes with screen refresh and another does not, the latter will perform much better on this test but it’s not actually getting the changes to your eyes any faster.
It would also just be nice to know the magnitudes. If the hardware adds a constant 100ms (for example, not a real number) then a 10ms advantage on the software side looks less interesting.
After testing it feels Kate has similar numbers as Terminal mentioned here but most emulators are just as slow. The minimal ones are actually worse off.
Are these milliseconds?
The visual evoked response latency ( time taken from the eye to electrical activity in the occipital cortex ) is about 88 ms in Women and 92 ms in men. There will be additional time for the visual object ( eg cursor) to be processed and appreciated in higher centres.
I can see how that would be a great solution on Windows, since there's no decent built-in TTY (prior to recent builds of Windows 10). It's advertised as an "ssh client" which is great there.
But I don't know why anyone would choose to use that on a Mac. The UI requires initiating connections to remote systems (or "localhost") through the GUI -- which feels really backward when you can just open a new window/tab on any other terminal app (for local tty sessions) or run ssh from the command line (for remote sessions).
I wasn't even thinking about local term vs. remote until you mentioned it, but you're right.
I guess it's because I don't use a Mac very often and when I do I don't usually have a reason to use the local terminal. I find that's true on Windows as well, I don't often need to use the command line.
OTOH, I'm SSHed into remote Linux servers 40+ hours a week.
Is that milliseconds? Aren't those values in the non-noticeable range? I tracked a paper recently saying that users don't notice feedback for less than ~96ms (a bit less in some scenarios).
When I moved back from the betas, the minimal theme is what I missed the most. Its so clean. Combine that with the status bar at the bottom, and I'm in heaven.
It's one of the few pieces of software that I really miss when I'm on my linux boxes -- even if its purely aesthetic.
edit: if you want your status bar at the bottom, Prefs > Appearance > General > Status Bar Location
Kudos to Mr. Nachman on continuing to develop a terrific piece of macOS software!
I've been running the 3.3 betas for a while and some of the new functionality is really great. Exporting a recording of a terminal session from the "Instant Replay" panel is very handy!
For a person who is comfortable with Tmux, is there any significant benefit that iTerm offers over the Terminal.app? I believe Terminal.app is better than other consoles when it comes to power consumption.
I also see little benefit over Terminal.app. Plus Terminal.app has much better performance with infinite scroll back, especially when dumping large streams
A big advantage of tmux for me is consistent keyboard shortcuts across OSs. I really like iTerm but never use the native windows feature because you loose that as far as I know. Once you’re using iterm integration you’re back to macOS shortcuts.
I must be confused. From your description I thought you were not describing my setup. Then I opened iTerm Preferences and saw that Native Windows are in fact turned on. I must have been doing it this way for a while, and I can't remember what the functionality looks like when it's toggled to "Native Tabs in a New Window."
Being able to use native macOS shortcuts like Command-` to move between windows. Native copy–paste. Focus-follow-mouse behavior for panes. Or just the ability to see multiple tmux windows (not panes) at once. And perhaps most importantly, the tmux windows actually look any any other window on macOS.
Huh, all those are features of tmux itself. I can copy/paste to/from system clipboard, I can easily movie between windows (and could set in my tmux.conf to use Command-` if I wanted), I can focus panes with the mouse, etc.
This was a big one for me. Cut/Paste between applications and whatever is running in the terminal with tmux can be a real pain. Not so much with iTerm. And the consistency goes a long ways when you're trying to get stuff done.
The major advantage is performance. With tmux, high volume output from a single pane makes the whole session unresponsive, because it locks up the pty that tmux is running on. Native panes, on the other hand, don't have such a problem because it operates on different ptys.
If windows had iTerm2, I am pretty sure I could let my last mac go. Everything we have for windows is as good as a piece of iTerm2, but none of them bring it all together.
I'm using it (build from source), and it's really nice. Definitely rough around the edge with cut and paste problems and some weird control character glitches if TERM ends up set to the wrong thing (eg inside a gnu screen session). But overall a huge step forward from the old conhost.
Still quite experimental right now, but a really awesome project! A preview build is available through the windows store if you want to try out without playing with building from scratch.
ConEmu is the best solution on Windows. Hopefully the new Windows Terminal brings console API changes that ConEmu can take advantage of; there is a lot of black magic going on under the hood.
iTerm is more than just a "decent" terminal emulator; it's the most featureful. In fact, no other terminal emulator can replace iTerm without losing a ton of features, even on Linux.
Yes. Now I can finally script shell and terminal colors changes for day/night/late night. Tmux and status bar control API should let me get all the magic out of Zsh prompt.
Now I wonder if I could make Sublime Text / VS Code style command palette within iTerm... Probably requires Python shell script as front. I didn’t yet find mention of custom dialogs or the like in the API docs.
I was checking quick open actually for its possible extensions. It does mention /s to "run script" but didn't find it mentioned in the docs.
I'm looking to get:
- switch layout and run server/compile start commands and the like for given project
- call my own shell scripts and assorted helpers from terminal's context
- get Jupyter notebook running and console connected to it
- connect to tmux session on host or start one with given layout if it isn't there
- Kubernetes and Docker context in their own tabs
- Quick Open can probably take care of finding tabs and ssh sessions so need to learn to remember it's there
That's the first things I find myself constantly doing manually. Nothing that can't be done, say, with regular shell and TMUX stuff, but those have so low level control mechanisms. I'm hoping Python access to gives same power with less work.
> If you have lots of sessions you can quickly find the one you're looking for with Open Quickly. Select the View > Open Quickly menu item (cmd-shift-O) and then enter a search query. You can search by tab title, command name, host name, user name, profile name, directory name, badge label, and more. Queries are scored according to relevance and sorted by score. Open Quickly also lets you create new tabs, change the current session's profile, open arrangements, and change the color preset. If you start your query with a / then that gives you a shortcut to various commands. /a followed by an arrangement name restores the arrangement. /f restricts the query to existing sessions, excluding options to open new tabs, etc. /p restrics the query to profile names to switch the current session to. /t restricts the results to "open new tab" for matching profile names. /c restricts the results to color presets.
I think with /s and creating custom scripts you could wire up some of these use cases.
I've been really wanting to auto store declarative pane layouts and default run commands for each project in a file and be able to recreate them programmatically to open / close a "project", like the Projects feature in Sublime.
For example, re-create a layout of multiple tabs with specific split panes for each project.
Previous attempts before this API were a struggle:
- You could almost do this with Saved Window Arrangements but not quite and there was no association to a project.
- You could also hack something with profiles if you're willing to make a profile for each project, but it still doesn't get you there.
- Bury Session is the closest which pretty much does what I want but it keeps all of the tabs running in the background. This can be a lot when you have 5-10+ tabs open each across multiple projects. No way to "sleep" a buried session that I could find.
- I also tried implementing it via the previous AppleScript API and it turned out to be a lot harder than expected to open "2 tabs with 3x2 split panes each and run commands x, y, z, ... in them". Then I called the AppleScripts via Python so I could template them more easily. I got about halfway there.
I have a docker instance that I need to always be running. Whenever I start iTerm, I open an extra tab, start the docker, and bury the tab so it's just running in the background. I'm going to automate that first. This is something I've been waiting to be able to automate.
I also have some helpful triggers, which I currently have a wiki page explaining how others at my company can set up. It looks like I could replace those instructions with a single command using one of these scripts.
Those are the two things I've been wanting to automate for a while. After doing them, I imagine there will be plenty of things I never thought of before but will now that they're possible.
Does `docker run --detach ...` work for your use case?
I have a tangentially related Docker use case: I'd like Docker Desktop (and Kubernetes) to spin down automatically in the background anytime I haven't run a container for some period of time and am on battery. It drains so much power even when idle.
Anyone using Hyper? I played with it but pretty quickly reverted back to iTerm2. In fact iTerm2 is basically the first thing I install on a new system along with ZSH/Oh my ZSH.
Hyper is usable, and it has become rather fast when they switched the backend a few months ago. It's real promise is in scriptability, and, unfortunately, there aren't any must-have extensions for it.
I think there are quite a few low-hanging fruits for the terminal, such as better integration with documentation or using an actually good language such as ruby directly on the command line. If I ever get around to try some of those ideas, I'd use Hyper as the platform.
I tried a few times switching to Hyper. Loved the idea, but it's just nowhere near ready. I'm fine trading performance for scriptability / functionality. But spending hours just trying to get Hyper script opening new tabs was an exercise in frustration. And half the plugins I tried didn't work. Ecosystem is pretty messy and features are lacking.
Switching to iTerm2 has been amazing. And with the new design in 3.3, I'm loving it even more.
I love the idea of how extensible it is, but I haven't found any practical ways to extend it yet. As mentioned the list of public extensions isn't great - Shaking my terminal with each letter is fun I guess for 30 seconds.
Unless I find more creative ways to use it, I'm sticking with terminal.app because it's basically the lowest input delay terminal out there.
Buggy. They broke clear recently. Copying and pasting is strangely difficult. It’s not as good. Settings through a json file is fairly confusing & esoteric at times.
iTerm used to have a lot of really compelling stuff that was missing from the official terminal like tabs, etc... that made straying away from the canonical terminal app worth it but most of them eventually made their way to Terminal.app so nowadays it’s mostly just fluff.
I tried to get that latency tool running but it seems that Java's Cocoa bindings have rotted too much to work any more. I'm done with big year-long release cycles, and I plan to focus on performance and core functionality for the foreseeable future. If anyone can get that thing working please reach out :)
Last I checked, Terminal.app doesn't support "TrueColor" (24-bit ANSI color) while iTerm2 does.
Also, iTerm2 is worth it just for the "Copy to pasteboard on selection" option, as well as the corresponding ability to disable "Copied text includes trailing newline", which has saved me plenty of "crap, I didn't mean to run that!" moments.
You gotta love the "Copy Performance Stats" menu item (available in the "iTerm" menu) to help George debug any performance-related issues. Do something that you think is too slow, select that menu option, and open an issue. (Note that the only drawing that is timed is between when iTerm becomes active and when you copy the stats.) He's definitely concerned with performance.
I’m not sure any more recent benchmarks exist, but try and use both and notice the difference first hand. One is clearly faster at the things that matter (text rendering and input) and yes — has less features.
The reason for this is the same reason that edge/safari have better scroll+graphics perf in their native OSes over Firefox and Chrome. 1st party browsers use internal apis that MS and Apple use and don’t expose.
>One is clearly faster at the things that matter (text rendering and input)
Those things hardly matter at level of difference between the two apps... This is not like Atom and Vim speed difference, this is more like Vim vs Emacs...
Might be a dumb question, how do you split the terminal vertically or horizontally, and hide and un-hide the split terminals on Terminal.app? Without tmux or screen.
I have tried Terminal.app multiple times, but have come back to iTerm2 every time because I've not been able to figure out how to do that.
Disclaimer: I'm not poking at iTerm, its my MacOS terminal emulator of choice.
Why _not_ use tmux? It is pretty fantastic software, and IMO provides a much better interaction model. iTerm itself is even integrated w/ tmux through control mode.
Because the way it handles copy/pasting to the native OS clipboard with multiple panes annoys the hell out of me?
https://news.ycombinator.com/item?id=7758368
Also, not really a Tmux problem, but every so often I'll encounter some wacky behaviors with scrollback & when doing cursor selections via PuTTy from my windows boxes.
Hah - I probably should! I've been impressed every time I see coworkers using it. Especially suspending and unsuspending remote sessions and everything.
When I'm on linux I end up using Konsole or Terminator (depending on the env) which support this functionality. So other than the saving remote sessions - which looks really cool - I've not had a strong impetus to learn tmux.
Its worth learning IMO. There is a learning curve, and the default configuration is unfriendly. If you are interested here are some things I found helpful:
1) Rebind the prefix key from ctrl-b to ctrl-space.
2) Map alt-h,alt-j,alt-k,alt-l to move between window panes.
3) Remap the split keys to something more accessible.
4) Start numbering windows at 1 instead of 0 (makes switching more intuitive imo).
5) Steal a simple configuration for the status bar from the internet.
Beyond that, the defaults are pretty straightforward, and you don't really need to know much to get started. I can share my config if someone is interested.
Or optimize for the platform you actually own and spend time on, and don't build BS cross platform skillsets "just in case".
If at some point you move to Linux or Windows, you can learn tmux proper there. No reason to resort to lower common denominator behavior just to get a "cross platform asset".
Terminal.app also is underperfomant. I like iTerm2 but recently switched to kitty. It's the fastest (multi platform) terminal I found. I also switched under Linux to kitty and stopped using terminux.
I have found the new design around the tabs to be very nice. The status bar looks neat, but it doesn't seem to carry over to tabs created by tmux sessions so I never see it. I also wish there was a way to put that status bar at the bottom.
If you prefer not to use tmux's status bar, turn on Prefs > Advanced > Always use the tmux status bar in tmux integration mode. I'll make this better in the future once I figure out a sane way to expose it in the UI.
I moved away from MacOS on my desktop/workstation to Linux and one of the things I've missed actually was iTerm2. Really great terminal altogether. However, I found a great replacement, even better in some ways - Kitty!
The one thing that annoys me about Kitty is the lack of greyscale anti aliasing. My eyes are damaged and properly configured fonts that aren't jagged or blurry are a godsend.
The new minimal and compact themes look great. Is it possible to drag the window when they are active? It looks like the drag region is reduced to a small area around the stoplight buttons.
iTerm2 is my go-to terminal on OS X. It used to be kind of sluggish but recent iterations have been snappy, which is exactly what I need with the command-line.
I’ve been using betas for a while now. Update check don’t seem to notice new releases so I was running old version for longest time before I noticed. Speaks to beta cycle’s stability.
iTerm is one app that is always on and in use. Especially thanks to its fast full screen switching and transparent tmux integration. I’ve been contributing through Patreon and consider that money well spent.
Thanks for the release. Excited about the scripting API. Sometime I wanted to add "autocomplete" features to iTerms (just like on phones), but the completion predictions will be sourced from stackoverflow. When user types a part of the command, I was planning to add an extra line to the current list of predictions (which are taken from bash command history). Unfortunately, append operation was not supported because of the way the code was written(by the time key is pressed, list is already populated and sent to the handler). So, I could not proceed then.
iTerm is awesome, thanks for the great work! Using macOS without an alternative to Yakuake would have been extremely painful.
Two pain points I'm running into with this release:
1. The tab titles just say the profile name (in my case, "Quake-style") rather than the foreground process name (bash, curl, etc.). It's subtle, but annoying given that I've become accustomed to relying on that information to quickly differentiate between tabs.
2. When I close every open tab and then re-open iTerm with my hotkey (F12), it starts off minimized and I have to drag the cursor over to the dock to manually open the window.
Because of the touch bar I was motived to switch Esc to Caps Lock (using Karabiner Elements), but I have since switched it over on all my machines (i.e. those without touchbars) because it's so convenient/ergonomic.
I've enjoyed having Ctrl where Caps should be so much, and my right hand missed having a Ctrl key on these small Mac keyboards, so I turned the Enter key into Ctrl as well! (Possible as a Complex Modification in Karabiner: "post left_ctrl when enter_or_return is held", so that tapping Enter is still treated like the Enter key)
Second, I'm not sure if this is a bug or a profile configuration I have, but when I have my tabs to the left in the new minimal mode I think my terminal is clipping the window bar:
Honest question for the folks complaining about input lag, does this actually effect your typing of text/commands into the terminal? I feel like I am particularly sensitive to latency in the audio world (such as recording though effects or using virtual instruments), but I work all day long in iTerm2 and never once have I thought to myself that text is not appearing fast enough as I type it. Is this problem exacerbated when like pasting a huge chunk of text into vim or something?
The new features after the app updated were introduced really well, I thought, especially the try it now button beneath the screenshot of each feature. I probably made an audible but quiet oooh at each of the features and enabled all of them, and already have a couple of ideas for building some work things for the status bar.
iTerm2 is incredible. I recently tried alacritty, though, and was amazed by how much faster it is with screen redraws on my 2014 Macbook Pro. I was shocked the first time I used mouse scrolling in vim through Alacritty and found that it was as snappy as in a native app; it never occurred to me that, even for a small pane, the bottleneck was in the emulator. I had to reimplement some of my favorite shortcuts for tab/pane management in tmux, but overall everything is running lightning fast thanks to alacritty's optimized, GPU-accelerated rendering. Alacritty also uses a dirt-simply YAML file for config (which I prefer to a GUI solution) and is cross-platform (which means I'll be able to install this same setup, with tweaked shortcuts, on my Windows box next time I use it).
The new iTerm features sound really awesome, but the one thing I'm already missing badly is inline image-rendering via escape codes. I had a great workflow set up on for viewing astrophysical data products on a remote analysis server using the itermplot matplotlib backend to render plots directly in my terminal from ipython. I'm still planning on firing up iTerm2 for that use case.
All that said, iTerm2 is the best terminal emulator I've ever used, especially when you're first learning things. I probably wouldn't have been able to switch to tmux as easily if I hadn't already used it a bunch through iTerm2's beautiful tmux integration (I'd already configured some tmux functionality for that use case). The aforementioned image-rendering should be a universal feature for terminals. And though the input and redraw lag are higher than Alacritty or Terminal.app, it's always been fast enough. I still recommend it to people with Macs who are just starting to program.
That said, if you're a speed addict and want something with limited but easily-configurable features, give Alacritty a try!
[edit] I should also mention that, if you're willing to put in more effort, you can implement a ton of iTerm2's visual bonuses (like the status bar and pretty icons) with a combination of a Nerd font [0] (particularly a pretty modern one like Iosevka [1]) and an advanced tmux configuration [2].
I think I've thanked you before in the HN comments for it, but thank you again!! itermplot is one of those great tools that actually makes things just work in a pinch. I wrote/maintain a low-latency gravitational wave/high-energy neutrino joint source search, and crazy stuff is always happening. Being able to throw together plots and just see them in my terminal right away helps me maintain my sanity ^_^
Edit: Added iTerm 3.2.9 (2) added alacritty (3) added Kitty