Terminal emulators

Date:2008-10-10
../_images/logo2.png

Terminal Scrolling performance

If you’ve code compiling and spitting out thousand of lines, you certainly don’t want your terminal to slow down the process. But some are pretty slow...

Test procedure

time for i in $(seq 9000); do echo $i hello world hello world hello world; done

3 run each, same machine, same terminal size, same conditions. Every terminal emulator uses Monospace 10pt or MiscFixed 10pt (if monospace is unavailable) as font.

Aterm 1.00.01

real    0m0.701s user    0m0.348s sys     0m0.048s

RXVT-unicode 9.05 2008-06-15

real    0m0.630s user   0m0.320s sys    0m0.068s

xterm (xorg 7.4)

real    0m28.216s user    0m0.372s sys     0m0.012s

Note

No double buffering. Maybe its time to add that to xterm ;)

konsole 2.1 kde-4.1.2

real    0m1.006s user    0m0.348s sys     0m0.032s

gnome-terminal 2.24.0

real    0m2.074s user   0m0.424s sys    0m0.040s

xfce4-terminal 0.2.8

real    0m2.640s user   0m0.352s sys    0m0.028s

Eterm 0.9.5

real  0m2.229s user   0m0.404s sys   0m0.016s

Basically, xterm sucks, gnome-terminal, Eterm and xfce4-terminal aren’t very good but they’re quite ok. Konsole, Aterm and rxvt are very fast, rxvt being the fastest.

Usability

xterm

I must say that I like xterm pretty much. It’s recovery from garbled terminals is better than others, and its very customizable. Too bad default sucks. For example, if you didn’t know, you can use ctrl or middle mouse, or alt + right click to bring up xterm menus. I advise you to also replace the Xaw scrollbar settings by something that make it look like a regular scrollbar.

#xterm "real" scrollbar emulation
#Put that in ~/.Xdefaults or Xresources and run xrdb ~/.Xdefaults
*Scrollbar.background:          grey
*Scrollbar.foreground:          grey
*Scrollbar.borderWidth:         0
*Scrollbar.shadowWidth:         0
*Scrollbar.thickness:           14
*Scrollbar.minimumThumb:        20
*Scrollbar.backgroundPixmap: gradient:horizontal?dimension=14&start=gray90&end=white
*Scrollbar.borderPixmap: gradient:horizontal?dimension=14&start=white&end=grey90

*Scrollbar.translations: #override\
     <Btn2Down>:   StartScroll(Forward) \n\
     <Btn1Down>:   StartScroll(Continuous) MoveThumb() NotifyThumb() \n\
     <Btn3Down>:   StartScroll(Backward) \n\
     <Btn1Motion>: MoveThumb() NotifyThumb() \n\
     <BtnUp>:      NotifyScroll(Proportional) EndScroll()

Gnome-terminal, xfce4-terminal

It integrates well in GNOME, has nice shortcuts, and tabs. Gnome one supports various profiles which are mostly about setting font and background colors.

Aterm, rxvt

Nothing special really, much like xterm minus the menus, but has a real scrollbar (yay!) rxvt handle especially well all kinds of terminal issues. It’s never failing on me where every other does. (eg at terminal width detection)

Eterm

Nice backgrounds, well, it used to be “the” terminal a few years ago.. like.. 5. or 8 :) Now its pretty slow, the copy pasting is annoying. Note that it has menus, also.

Konsole

The king, I suppose. Supports profiles, including the default startup command, startup path, etc. Pretty handy to have a profile that SSH directly somewhere for example. Or one with logs. Or one with htop. Etc. Also supports bookmarks (it simply records a “cd <location>” - simple but efficient) Supports also window splitting, and probably other things I never used yet.

All considered, I really like Konsole. But when it fails, or I need something fast, or just dont have KDE, rxvt is always there to do the trick :) Most of them have proper UTF-8 support, which is a must nowadays.

I didn’t bother mesuring memory usage, because it doesn’t matter to me as long as it’s not using 50megs. Small emulators (xterm, rxvt, aterm, eterm) use a few megs, and bigger ones (konsole, gnome-terminal, xfce4-terminal) are using around 10-20 megs. Give or take a few instances/tabs running, of course.