Terminal Emulation on the Mac
by brian hefele

First, an introduction to a series. I have realized that when I want to find the best piece of software for a given category, I read some reviews, I check out screenshots, but mainly I install every player in the category and put them all through their paces. This should be evident from my roundup of Mac text editors. In my head, I rate them for many things, and figure out which suits me best. But aside from just writing rambling reviews, I figure I should make these raw evaluations more readily available. So I would like to regularly review a pile of apps in a given category, and accompany them with comma- and/or tab-delimited tables. In the future I will also compile these tables into a regularly-updated SQLite database. Today is terminal emulators, of which there are apparently more than just Terminal.app and iTerm.

/images/terminals I have six terminal emulators that I would like to cover here. These aren't your only options - xterm comes with X11, and other X11 terminals (mrxvt) build fine on OS X. But I'm not going to discuss those, mostly because I can't get X11 to load the font that I use. There's also DataComet, which works, but looks and feels as ancient as it is. The only reason I can see to use it, honestly, is if you're a long-time user riding on an affordable upgrade path. If that's the case, I still suggest you think long and hard about your decision. So, without further ado, I introduce the players: Terminal.app, iTerm, ZOC, Terminator, MacTelnet, and SigmaTerm.

Terminal.app

This is the terminal we all have, the only terminal that casual typers-in of commands posted to macosxhints.com know. To be fair, we all have xterm as well, but I'm not discussing that, remember? Terminal.app is a great emulator for most people. It's quite fast, it supports highly customizable bookmarks, it's stable and it has a clean, native UI. I should touch on point three briefly - the stability of Terminal.app. While it is the terminal emulator that I have spent the most time in, I'm not sure I would trust others to be quite so on-call as Terminal.app. Far too many times, my system has been driven to a halt, and I've thwarted a crash simply because Terminal.app will keep running when much of the system is near death.


The old standby…

So what's not to love, then? Well, quite a bit actually. If you're just going to be using your terminal for pure CLI interaction, you're probably fine. But once you start getting into pretty TUI applications, you pick up on a couple of things. First, a rather glaring omission is that of 256-color support1. Every other terminal emulator in this article supports 256 color mode. Xterm and its ilk also support (and in fact originated) 256 colors. To be stuck with the traditional 16 ANSI colors feels horribly outdated, and becomes increasingly frustrating in, say, vim, where the increased range of colors allows for a distraction-free subtlety.

The other notable omission is mouse reporting2. Many TUI/curses-based applications (vim, elinks, mc…) respond to xterm-style mouse reporting. If you're a CLI purist, you might not care about this. But, while I definitely see the efficiency of working from the CLI, certain tasks are better suited to a mouse-driven, visual approach. Being able to stay within your environment to do such tasks instead of skipping out to a full-blown GUI. The lack of mouse reporting in Terminal.app is thus quite limiting, in my opinion.

Final thoughts: Terminal.app is pretty basic. It's best compared to Terminator, which will give you a speed bonus as well as 256 color support. Terminal.app has its own advantages over Terminator however: quicker start time, support for bookmarks, and a possible edge in stability. If your needs are light, and you don't feel like experimenting, stick with what you have. Else, read on…

iTerm

If you only know one terminal emulator on the Mac, it's Terminal.app. If you only know two terminal emulators on the Mac, the second one is bound to be iTerm. iTerm is pretty powerful, supporting emulation of a handful of terminals, the most complete mouse reporting of any program on this list (the only one to report middle-clicks - crucial for a TUI web browser), and a handy full-screen mode. It's open-source (GPL), and development seems active although slow. As far as TUI programs are concerned, it's your best bet (for the aforementioned mouse-reporting). But unless middle-clicks are your highest priority, iTerm is a pretty weak choice.

Why is this? Speed. The iTerm website claims that the software should be at least as fast as Terminal.app. There is no way that this is true. Timing some basic operations with the default settings against Terminal.app consistently shows iTerm to run at about half the speed of Terminal.app on my machine. These default settings are fairly miserable - scrollback is limited and the refresh rate is set somewhere in the middle of its slider. This default refresh rate is also quite laggy compared to Terminal.app. With the refresh rate set all the way up, iTerm runs about ten times slower than Terminal.app for me, and the refresh is still not as responsive. With it set all the way down, iTerm is still slower, but it is far more usable if you can handle the display lag. Additionally, they recommend cutting the scrollback buffer down (which, even if it worked, would invalidate the comparison to Terminal.app, which runs quickly even with a heavy scrollback buffer), this provides marginal improvement, but still nothing approaching Terminal.app.


iTerm developers have their priorities wrong…

Final thoughts: The maintainers of the iTerm project need to stop focusing on stupid things, and more time improving the speed. What stupid things? The choice of four different tab styles, and the ability to load up my terminal with graphical nonsense like transparency, blurring, and allowing me to set my background to a photo of a bingle3. That's all just unnecessary, script-kiddie level stuff, the energy of which could have clearly been better-spent. Still, iTerm also offers the best mouse reporting on the Mac, so if you're going to be spending a lot of time in TUIs, you might want to rely on a multiplexer for scrollback, set your refresh rate all the way down, and enjoy the lag.

ZOC

ZOC is an amazing terminal emulator, with a high price tag - $80. This is likely enough for most people to skip this write-up entirely, but it's worth reading on to see what your $80 gets you. ZOC is more than a mere connection to your local machine - it also supports a variety of serial connections, and has an inbuilt ssh interface. I don't use these things, and my aim is to review each of these based on their performance as local terminal emulators. Still, it's worth noting. ZOC is quick - comparable to Terminal.app, and leaning toward being slightly quicker. ZOC is powerful and highly customizable. Its UI is not native, but it is well-thought out and pleasant to use, even offering a handy thumbnail view of tabs. Everything about ZOC feels well-designed and luxurious.


ASCII art never looked so good

ZOC does have its issues (aside from the aforementioned price tag). Mouse reporting is there, but only for left-click. Middle- and right-click can only be assigned to actions such as pasting, and cannot be passed through to programs. This is a bit of a problem for hardcore users of TUIs. Additionally, I question ZOC's stability - when I would run commands resulting in large amounts of data going to stdout (time find ~/., &c.), ZOC would reliably crash. Using a pager or a multiplexer for scrollback solves this, at the expense of convenience.

Final thoughts: I genuinely think that ZOC is my favorite of the bunch. I wish emtec would scale their pricing - release a slimmed down version for hobbyists rather than professionals. I also wish it reported middle- and right-click, likely my largest complaint. Bookmark support is quite usable as well. As for a cheaper alternative…

Terminator

I never thought I'd say this about an application written in Java4, but Terminator is fast. It takes a few moments to start up, but once it's running, its raw speed blows everything else on this list out of the water. It passes the 256 color test without issue, but it doesn't handle mouse reporting. Also, as mentioned in the Terminal.app write-up, Terminator has no concept of bookmarking. Terminator's UI is also not quite up to par with some. It has tab support, but honestly the tabs looks like awkward Java tabs. There's anti-aliasing, but it's so weak that things just look kind of fuzzy, and you'll likely want to leave it off. The preferences are a little sluggish at times, and there's no way to change the way ANSI colors display.


Odd tabs, ugly antialiasing (which can thankfully be disabled).

Terminator has one other little oddity up it sleeve. While a line extending beyond the edge of one's terminal emulator would ordinarily truncate or wrap, Terminator instead opts for a horizontal scrollbar. At first, I thought this was ridiculous. Soon after, I realized how wrong I was. Horizontal scrolling gives all the tidiness of truncation while still preserving the information. It's not something I want for, say, vim, but in the occasions that a terminal is given more columns than it can chew (the size of the window is accurately reported), it's pretty convenient.

Final thoughts: Terminator is pretty comparable to Terminal.app, each having a few pros and cons. Honestly, as long as you can put up with some UI quibbles and don't need bookmarks, the speed and 256 color support gives me every reason in the world to recommend Terminator over Apple's offering. If the Terminator devs added full mouse-reporting, I would likely never use another terminal emulator again. Oh, Terminator is free/open source as well, and its Java base means that it's available on a wide selection of platforms.

MacTelnet

MacTelnet is another free/open source terminal emulator. It's also a heap of garbage. It has an ugly, thrown-together UI, with fake tabs that are really separate windows, sloppily glued to their 'parent' windows. It's not terribly fast, not iTerm slow. It does have 256 colors, but I got some strange results when running my color test. Also, I saw no sign of Unicode support. But the worst problems come when you attempt to run anything curses-based:


Tip of the damn iceberg.

…and it all goes to hell. Something like naim falls apart even worse. No more space wasted on this one, final thoughts: don't use MacTelnet unless you need 256 colors, and nothing else on this list works.

SigmaTerm

SigmaTerm needs a new icon. That's my initial reaction - this is not the sort of thing I want sitting in my dock. Especially not for $50. Fortunately, it seems to be in active development, with a recent update forcing me to rewrite this entirely. Originally, SigmaTerm was the slowest of the bunch, by far. It made iTerm look good, to be honest. It also gave some weird results when running the 256 color test (although all 256 colors rendered properly). Yet a recent upgrade has fixed both of these issues, making SigmaTerm's speed quite comparable to Terminal.app. Much like ZOC, SigmaTerm has support for serial connections, and SSH - even including a GUI manager for SSH keys.


Weird font spacing is the big issue here.

SigmaTerm is, of course, not without issues though. Something really weird is going on with its font spacing - nonadjustable, and quite wide. Antialiasing can't be disabled, as far as I've found. Mouse reporting works, except for the middle button (again, quite useful for web browsing). SigmaTerm has no tabs, and no bookmarks.

Final thoughts: If the developers of SigmaTerm fix the weird font rendering issue, I might be willing to plunk down $50 for it. Middle-click would be nice as well, but at least right-click works. Oh yeah, and a new icon would be awesome. All in all, SigmaTerm is a decent, capable terminal emulator with some UI snags, a decent choice for a power-user looking to spend less than ZOC's $80.

Final, final thoughts

ZOC is definitely my favorite of the bunch, but it's hard to justify the $80 price tag with some stability issues and incomplete mouse reporting. On the cheap and reliable side, I'd probably run iTerm for TUI software and Terminator for speedy CLI action. This is not even remotely ideal, especially when using a terminal multiplexer to multitask in one (GUI) window. Unfortunately, none of the OS X offerings are quite 100% yet, but with so much development work going on, perhaps near-perfection is still coming.

Download the CSV review table here.

*1: 256 color testing done with 256colors2.pl - this and other color tests available at http://frexx.de/xterm-256-notes/.

*2: A SIMBL hack known as MouseTerm is available to add mouse reporting to Terminal.app. It is alpha software, it is incomplete (not all buttons supported), and it is a straight-up hack. But the option is there.

*3: This is important - I did NOT have any superfluous graphical nonsense set while I was running speed tests. I can only imagine how the results would have been while I was drooling over that bingle.

*4: I haven't run into any traditional Java garbage-collection issues yet in my testing. If it ever decides to start hogging my RAM, I'll have to reconsider the viability of this program.

categories: CSVreview, review, nix, software, mac
date: 2010-05-24 12:01:54
blog comments powered by Disqus