Hacker News new | past | comments | ask | show | jobs | submit login
iTerm2 3.3 (iterm2.com)
439 points by tmvnty 46 days ago | hide | past | web | favorite | 183 comments



Here's some comparison of input lag:

    # Title              Min    Max   *Avg*   SD
    1 iTerm 3.3.0beta16  11.2   33.6   15.9  3.4
    2 iTerm 3.2.9        10.8   29.5   21.3  4.5
    3 hyper 3.0.2        22.3   46.9   27.6  3.6
    4 Terminal 2.9.1      2.4    8.3    5.8  0.5
    5 Alacritty 0.3.3     5.2   16.8    6.3  1.4
    6 Kitty 0.14.3        7.7   11.6    9.6  0.8
Measured using https://github.com/pavelfatin/typometer

Edit: Added iTerm 3.2.9 (2) added alacritty (3) added Kitty


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.


I have found iTerm to have very bad performance relative to Terminal.app. I honestly have no clue why its so popular, I cannot stand it.


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


I do this in my ssh config to get what I assume is the same effect with the iTerm badge.

  Host * !github.com
    LocalCommand printf '\e]7;file://%n/\a'
    PermitLocalCommand yes


I agree with you, or, I did, until they switched to the metal renderer. Now iTerm is as fast as terminal.app (provided you use the same settings)


So, in this case, why would I prefer iTerm over Terminal.app?

Seriously, I don't understand what the benefits are, if it's only "just as fast as Terminal.app".


It has quite a few nice features that Terminal doesn't have. But yeah, if you don't need those features then just use Terminal.


Speed is secondary. iTerm has much richer features, even the hotkeys are super nice.

But among those features is tmux integration and now python extension support.


iTerm has very many features that are great for productivity which the default Terminal.app does not have.


Did you read the release notes for 3.3? How many of those features are supported by Terminal.app?


I think that iTerm is prettier. The font rendering looks better to me.


It supports a 'quake mode', which is the only reason I use it.


Agree,I set the same key as in Quake,and full screen console drop down,which is very cool.


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)


Tmux integration.


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


Give neovim a try. Along with iterm gpu rendering, it's quite fast even with syntax highlighting and cursorline.

IIRC iterm2 has a setting to disable gpu rendering while on battery which is almost certainly your issue.


If you know how to set it up, iTerm2 + NeoVim + tmux + zsh is a pretty tasty combination.


Do you have syntax on in Vim?

It can be super slow. I've compared scrolling in Vim and Emacs on the same (large) json file and Vim is painful and Emacs is almost immediate.


> 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.)


It might not be for you, but I would recommend reading through this https://www.iterm2.com/documentation-highlights.html

I personally find the following either cool or really productive;

Open Quickly, Undo close, Triggers, Smart Selection, Instant Replay, Regular Expression Search, Save Mark/Jump to Mark


The killer features of iterm for me are three:

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).


Could you test Alacritty too? https://github.com/jwilm/alacritty


done


I am running a relatively barebones version of st(https://github.com/Peter-JanGootzen/st) and am getting these numbers on a modern machine.

    # Title Min Max Avg SD
    1 st 12.6 38.1 20.7 6.8
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.


If you have the time could you test both alacritty and hyper?


I tested them a few months ago:

https://news.ycombinator.com/item?id=19456146


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 every damn time), 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.


Was that with or without the GPU rendering enabled?


Enabled in Iterm2, whatever the default configuration is for the others.


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.


The hardware should be the exact same between all terminals right? It seems accounting for that would only add noise.


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.


Surely that would affect all the applications being compared equally, though?


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.


So we are unable to differentiate speed of anything appearing on screen of less than about 100ms, making this benchmarking of academic interest only.

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4572953/


Pease test ZOC Terminal: https://www.emtec.com/zoc/.

I use it on Windows, like it very much, and don't notice any lag. I'm wondering how it compares to the rest of these on a Mac.


    # Title     Min     Max     Avg     SD
    1 Zorc      2.9    33.2    12.5    5.6
Quite fast, but feels a bit like it's 1999 again otherwise.


Thanks!


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).


I'm I reading that right that the input lag has increased on average? And while the minimum might have improved by .4 or is within measurement error?


The minimum data point for iTerm 3.2.9 have shifted towards the left. Overall the 3.3 has better average.


It's average is still ~6ms higher though?


The 3.3 average is ~6ms faster...


The columns aren't aligned quite right. That's what I (mis)read too.


Is the average for iTerm 3.2.9 supposed to be 24.5, not 4.5?


The text is shifted. Min starts before its column. 4.5 is the sd.


fixed, sorry


Can you test Kitty as well?


@gnachman Thank you for iTerm! Despite major workflow changes, iTerm has remained my daily driver for years.

If you in a position to support free software, I kindly suggest donating to George's Patreon: https://www.patreon.com/gnachman/


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


Don't see the status bar, or there isn't anything in the status bar :(


You might have to manually enable it for your profile

https://www.iterm2.com/3.3/documentation-status-bar.html


yeah, like nammi said. Basically, go to Profiles > Session > check 'Status Bar Enabled' > Configure Status Bar

If you hit rainbow and hate it, just remove the items and re-add them and they'll go back to normal. :)


thanks - was trying to figure out how to get it to the bottom! IMHO, it should be default bottom!


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.


For sure. iTerm makes tmux feel more native by, for example, giving tmux panes their own native tab: https://www.iterm2.com/documentation-tmux-integration.html


I also see little benefit over Terminal.app. Plus Terminal.app has much better performance with infinite scroll back, especially when dumping large streams


If you like tmux, you should try the tmux integration feature in iTerm. It makes tmux windows native windows, and tmux panes native panes.


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."


And what's the advantage of a native pane over a tmux pane? Could you clarify?


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.


> Native copy–paste

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.


Being able to copy and paste using the OS native cursor over multiple lines, for one.


That's possible in tmux, though


Is it possible to copy and scroll over multiple pages using mouse in tmux?


not on remote sessions with local clipboard


Clipper makes that possible (shameless plug).

https://github.com/wincent/clipper


How much stuff does one need to keep adding just to make it work like iTerm does already?


For me it's the little things like being able to hide all window chrome (and there are a lot of little things...)


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 haven't tried it myself, but there's the new Windows Terminal if you aren't aware of it.

https://github.com/microsoft/terminal


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.


I'm pretty happy with ConEmu [0] and the linux-shell on Windows after years of using OSX.

[0]:https://conemu.github.io/


I use it since I view Cmder - https://cmder.net/

Developer is responsive and it adds enough to the experience to make it worthwhile as a wrapper.


ConEmu is pretty, and I do like it and use it - but it isn't quite the same.


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.


Wsltty is decent enough


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.


Agreed, it's probably something I'm going to keep hunting for... will probably just use Hyper when I switch in a few months, but would love iTerm.



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.



Thank you! Just what I was wishing for.

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.


Not sure if there's extensibility yet but the View > Open Quickly palette is a primitive start.

Do you have specific use cases in mind?


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.


Oh interesting. I didn't realize it had slash commands either.

It's briefly mentioned under "View > Open Quickly" on https://www.iterm2.com/3.3/documentation-menu-items.html:

> 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.


This. After this update, my time spent tweaking my terminal theme is now pointless... Oh well, it was fun.


Happy to see a scripting API but struggling to think what I'd use it for. What are some things y'all are thinking of doing with it?


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.


Nice, good idea. I've tried similar things (saved layouts for a project) using Tmuxinator[1], but since I don't normally use Tmux it didn't stick.

[1] https://github.com/tmuxinator/tmuxinator


I used to use itermocil[1] for this.

[1] https://github.com/TomAnthony/itermocil


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.


Sounds like it would. I'll give that a try, thanks!


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.


There is no reason for me to use Hyper really.

The reason I stick with VSCode even though it's slower than other editors is because of the features.

Hyper has non of those.


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.


I like having options but wouldn’t recommend iTerm.

Apple’s Terminal.app is more performant rendering text and more responsive to input while admittedly having somewhat less unnecessary features.

In fact, iTerm is one of the slowest terminals out there!

See: https://danluu.com/term-latency/

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.


TrueColor is pretty much the only terminal feature I feel the lack of with Terminal.app, and it's a pretty minor complaint.

As for pasting, what shell are you using that doesn't support paste bracketing?


> iTerm2 is worth it just for the "Copy to pasteboard on selection" option,

The only reason I downloaded iterm2 many eons ago but stayed for the rest


Isn't that comparison dated from July of 2017? After iTerm2 added metal rendering it got much more performant.


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.


Still not as fast as Terminal.app


Would you link us to current benchmarks?


There are recent ones posted on this thread: https://news.ycombinator.com/item?id=20587488


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.


Most people do, learn tmux and you have a cross platform asset instead of a throwaway platform specific skill.


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".


I can’t be done.


Cmd + D

Cmd + Shift + D

Or better yet, just use tmux!


That just makes two panes that show the same thing.


only horizontal possible, i think ?


While it is true that iTerm is rather slow, but for me personally, the bottleneck is tmux.. And i haven't been able to wean myself out of tmux..

Ideally, I'd like to be able to have native iterm windows and panes, but with tmux keybindings..


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.


Does Terminal.app allow you to customize it to always dock to the top of your screen?


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.


There is a way, look in Apperance - General - Status bar location.


Thank you so very much, stranger on the net. Was looking for this today.


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!


KDE’s terminal app Konsole is great and really ITerm-like at least with my usage patterns.


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.


iTerm2 is a treasure. Such a great app.

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.


Just switched back to Terminal.app because iTerm is a bit of an energy hog. I run a pretty stock bash shell. Anyone else? Any tips for improving it?


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.

Hopefully this python API fixes the problem.


The API was originally designed for a third-party app to add autocomplete. That never happened, but it should have everything you need.


Looks like exactly my usecase. Thanks to third party for not completing!


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.


"- Add touch bar mitigations: haptic feedback, key click, and blink cursor when touching esc."

Thank you for this! Can't believe how many times per day I accidentally trigger touch bar Esc.


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)


First off, wow love the status bar idea.

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:

https://i.imgur.com/W94XwI3.png

Edit: possible GitLab issue https://gitlab.com/gnachman/iterm2/issues/7988


How did you accomplish the tabs on the left?


iTerm2 > Preferences > Appearance > General > "Tab bar location:" > Set to "Left"

:)


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.


Is anyone else having problems with vim? Specifically, I can't see my cursor since upgrading.

I don't really remember what my cursor looked like before the upgrade; maybe it was a red block? But now you can't see it.

My cursor outside of vim is fine.


imgcat is very useful for me. Glad they are still maintaining it.


Yes! I love imgcat. When working on a project with lots of images, imgcat + mc in iterm2 was a golden combination.

Never use tmux, just tabs in iterm.


I just enabled the status bar (in Session) but it seems to not show up for me. I'm using a custom theme but I've tried the default themes.


Is there any way to disable this scripting API? It seems like an enormous security hole.


This has been considered. See here for details:

https://gitlab.com/gnachman/iterm2/wikis/iTerm2-Version-3.3-...


I don't think it's on by default: I got an alert to enable it and then another warning when trying to load my own script.


Does it have an Undo button? If not, I'm sticking to MacOS Terminal.


Undo what exactly?


My typical typo: rm -rf /


I use the default terminal + fish shell (+some plugins) + fzf + tmux


Minimal Theme and a new Dock Icon, im sold !! Amazing work


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].

[0] https://github.com/ryanoasis/nerd-fonts

[1] https://github.com/ryanoasis/nerd-fonts/tree/master/patched-...

[2] https://github.com/samoshkin/tmux-config


Thanks, that was cool hearing about your use of itermplot :-)

https://github.com/daleroberts/itermplot


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 ^_^


Seems good


> 3.3.0

> Major version

Why do people hate semantic versioning so much? Just call it 4.0.0 if it's a major version, or if it's not, don't call it major.




Applications are open for YC Winter 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: