Terminal emulators
Posted on October 10th, 2008
You can follow any responses to this entry through the RSS 2.0 feed.![]()
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 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.