kerravonsen: animated sequence of geeks with the word "geek" around them (geek-anim)
Kathryn A. ([personal profile] kerravonsen) wrote in [community profile] linux4all2009-05-19 08:51 pm

Terminal Emulators Comparison

I recently checked out a number of different terminal emulators, with the intent of changing my default terminal emulator. I thought folks here might find my results mildly interesting.

I use Ubuntu (Intrepid and Jaunty) and I am using a tiling window manager (XMonad) rather than the more usual Gnome or KDE or even other non-tiling window managers. This is on multiple systems (one desktop, one laptop, one sub-notebook). I would like to use the same terminal emulator on all three, it makes things simpler.

Below are the criteria I was looking at; other people would probably have other requirements for a terminal emulator.

1) supports pseudo-transparency (or transparency) This is vital, because since I use a tiling window manager, the only way I can see the desktop background is having a transparent terminal (or hopping over to a workspace that has no applications on it, which kind of misses the point)
2) (MEM) not too memory-intensive; one of my machines doesn't have much memory
3) (FONT) supports bitmap fonts; I prefer these for terminals because they are crisper and clearer.
4) (FILE) can be configured from a file; I find GUI configuration irritating.
5) (SPACE) doesn't take up too much screen real-estate: (a) if it has a menu, the menu can be turned off (b) if it has tabs, the tabs can be turned off when not in use. This is important because my subnotebook has very little screen real-estate (800x480)
6) (TAB) I don't really mind whether it is tabbing or not. This is because I can do tabbing in my window manager. It's probably simpler to have a terminal which doesn't do tabbing, as that cuts down on the number of key-combinations I have to memorize.

I arranged my results into those which have transparency and those which don't, since the ones that don't are ones I am not interested in. Also, there were some that simply didn't work for me.

Note that the figures for memory are Virtual/Resident, and I found out the information by running
ps -eo 'pid,user,vsz,rsz,args' | grep program name

The terminals with transparency:

mrxvt
MEM: (5556/2548) yes and no; it has a low footprint, but unfortunately it has been leaving zsh processes lying around when X exits. I thought I'd fixed this, but it started happening again, hence my search for a replacement.
FONT: yes
FILE: yes (.mrxvtrc)
SPACE: yes
TAB: yes

wterm
MEM: yes (3676/1924) less than mrxvt
FONT: yes
FILE: yes (.Xdefaults)
SPACE: yes
TAB: no

This has an ugly scrollbar background, though the scrollbar itself is nice. Ah, but one can disable the scrollbar background with the "scrollBar_floating" setting.
Unfortunately, the transparency is clunky; the pure transparency is okay, but the shaded transparency tends to dither the background (ugly!). And if the terminal has been resized, it doesn't always redraw the background correctly.
Also, the documentation leaves somewhat to be desired.

aterm
MEM: maybe (11800/3528) more than mrxvt
FONT: yes
FILE: yes (.Xdefaults)
SPACE: yes
TAB: no

This leaves odd sort of gaps at the bottom where the transparency doesn't match the background, probably due to the lines not fitting evenly into the tiled area that the window manager allocates for the window. However, it's only a minor irritation, and the tinted transparency looks good, and does redraw okay on resize.

rxvt-unicode
MEM: no (16060/6176) more than aterm
FONT: yes
FILE: yes (.Xdefaults)
SPACE: yes
TAB: no

terminator
MEM: no (50076/25204) more than all of them!
FONT: no; only uses TTF fonts
FILE: yes (.config/terminator/config)
SPACE: maybe (the tabs are rather large, but don't show when no tabs)
TAB: yes, with bells on

This is a cool application if you like tiling your terminals but don't necessarily want to run a tiling window manager. It's a memory hog, but presumably that's because it's sort of a mini window manager in itself. One can split and tab the area with multiple sub-terminals. The tabbing model takes a bit getting used to, though, because rather than tabbing inside splits (like one does with most of the tabbing window managers I am familiar with) one splits inside tabs.

However, as I said, it's a memory hog, and if I want to tile inside a terminal, I've found I prefer dvtm, which has the advantage of running on the Linux console as well as inside terminal emulators.


The terminals without transparency:

I didn't check everything with these ones, because they were already out of the running once I found that they didn't support transparency.

xterm
MEM: maybe (6436/3312) more than mrxvt, less than aterm
FONT: yes
FILE: yes (.Xdefaults)
SPACE: yes
TAB: no

roxterm
PT: no
MEM: ?
FONT:?
FILE: yes
SPACE: no (doesn't seem to be an option to disable the menu)
TAB: yes

Xfce4-terminal
PT: no - this surprised me, because I thought it was supposed to support transparency, but I couldn't find any way of configuring it. I guess it's because Xfce4 runs its own compositing manager, and the transparency is done with that.
MEM: ?
FONT: no; only uses TTF fonts
FILE: ?
SPACE: maybe (the tabs are rather large, but don't show when no tabs) And the menu-bar can be disabled.
TAB: yes

Konsole
PT: sometimes; the unfriendly thing deliberately disabled transparency because it declared that I was using a window manager that didn't support transparency. So I guess this is one for the KDE users only.
MEM: ?
FONT: no; only uses TTF fonts
FILE: ?
SPACE: yes (menu bar can be hidden)
TAB: yes

This has an intriguing feature that a window can be split into different views of the same terminal session. A bit like one can have multiple views into the same editing buffer in vim.


The terminals which wouldn't run for me:
*lxterminal
*Gnome-terminal
*evilvte (binary)
*evilvte (compiled from source)

Note that all of these were vte-based so there may be something odd with my setup, or that they were expecting to run in a Gnome environment, or I didn't give them the right options or something. While terminator is also vte-based, it has a --no-gconf option which seems to help in running it in a non-Gnome environment.


Verdict: I went with aterm.