Until recently I have been using xterm and twm. Call me a stone-age
throw-back if you like, but those two are fast and lean.
But I am giving gnome-terminal and metacity a spin now. Metacity
suffers somewhat from click-to-focus, even if you set
it to focus-follows-mouse, but that is a story for another day.
Today it is gnome-terminal gripe time. Ok, so it is actually not
too bad, but it feels slow. Starting the first terminal window,
for example, takes a few seconds. Seconds! I want my window to
show up in less than .2 seconds.
A bit of stracing reveals the cause. It is dlopen-ing a zillion modules related to character support.
That is used to populate a, I estimate, rarely used menu. In my humble opinion, the penalty for this kind of thing should not be taken on startup, but when the rarely-used feature is activated. Or in the background while I type away happily. Luckily this does not seem
too hard to fix.
On top of this, Fontconfig is doing a whole lot of work on startup.
It does that for other GTK+ based programs too, so I doubt the
applications are to blame. So what does it do?
- Stats ~200 directories all over the place.
- Feels the need to do things three times:
access("/etc/fonts/suse-hinting.conf", R_OK) = 0
stat64("/etc/fonts/suse-hinting.conf", {st_mode=S_IFREG|0644, st_size=6575, ...}) = 0
open("/etc/fonts/suse-hinting.conf", O_RDONLY) = 18
Are you there? Are you there? Please open! This kind of behaviour
is fairly cheap on a local file system, but not necessarily so on
a remote one. And it is wrong: the file could have changed twice between the three calls.
- Zig-zag reading files:
read(17, " fd9 78563412 1 4 4"..., 255) = 255
lseek(17, -136, SEEK_CUR) = 158
read(17, "/usr/X11R6/lib/X11/fonts/CID/us"..., 4109) = 3938
lseek(17, -3909, SEEK_CUR) = 187
read(17, "/usr/X11R6/lib/X11/fonts/URW/us"..., 4109) = 3909
lseek(17, -3880, SEEK_CUR) = 216
read(17, "/usr/X11R6/lib/X11/fonts/uni/us"..., 4109) = 3880
lseek(17, -3851, SEEK_CUR) = 245
Back-and-forth over the same area again and again. Short of timing
system call overhead I do not see what it is doing.
I am also having problems with focus in the terminal. I am not entirely sure how I manage, but
somehow the focus ends up on one of the tabs where it has no business being.