by Miguel de Icaza

Gnome 2

I always have enjoyed comments and criticisms from Jamie Zawinski. His insight into this industry, and the communities of this industry are unique, and combined with his sense of humor, it makes for some of the best comments you are likely to read.

Recently Jamie wrote some comments about how those of us in the open source world, and in particular gnome likes to rewrite software gratuitously. I happen to agree with him

Today I upgraded my gnome installation to gnome 2.2. The application I use the most is the terminal. For a long time I had been using happily gnome-terminal which used Michael Zucchi's fast Zvt widget. The UI code was written mostly by me. This terminal had the advantage of being easy to customize and was fast (both at input and output. Keep this in mind). It supported dingus clicking, as well as mouse input, was an international terminal and I was happy.

With Gnome 2, an effort was made to improve the user interface. The "terminal class" concept from gnome-terminal 1.0 was considered too complicated, so a new effort to rebuild gnome terminal from scratch was started and completed by Havoc. This terminal became the new gnome-terminal for gnome 2.0. During the rewriting process a number of features that people had requested were dropped (flags to control the behavior of "logging" the presence of the user: update utmp, wtmp, lastlog) so I promptly filed bug reports for it. Those bug reports were promptly closed, and marked as duplicate because more information was needed (the xterm man page had this). Eventually all this information got logged into another bug and I guess someday it will be implemented.

Anyways, am a grown up man, and I can live with the defaults. If I need to tweak something, I figured `I have the source code'

Today I upgraded to Gnome 2.2. This new version of Gnome includes a new gnome-terminal that drops support for Zvt and instead uses a new terminal widget called Vte. Vte is different from Zvt in that it uses more of the traditional Gimp/Gtk coding style and apparently will be easier to maintain. But the main difference is that Vte is not an xterm emulator, instead it is a terminal emulator that will emulate any terminal, given a terminfo definition for it. This is an interesting academic excercise, no doubt about this. I had my reservations about whether Vte's academic background was good enough as a terminal solution. As I still depend heavily on my terminal, and I still use Midnight Commander as my file manager a good terminal is important.

You could arge argue that terminfo is not a complete definition of a terminal, but only the subset that was used for terminfo/curses, but lets not get these facts get in the way of innovation.

Anyways, my first attempt at using vte with the mouse failed. Apparently events are sent for up to some number of columns, but not all. So it is useless if you want to click on the right pane of mc.

To be fair, Vte lets you use any font on the system, and not only those that were monospaced fonts, which is nice.

Later, I was faced with the slowness of the terminal. I have a P4 running at 1.8ghz. I turned off anti-aliasing (everyone told me to). But it still was slow, for instance if you have a window on top of it, and you drag it around, the widget takes a *long time* to repaint. I mean, significantly longer than OpenOffice or Mozilla take to repaint.

Haven given up on coffee and Sawfish I figured I could also give up dragging windows around. There is really no need to drag windows around see note [1]. But it was still slow, very slow. Someone reported:

fejj: lets put it this way
fejj: nautilus 1.0 can render my home directory faster than vte can 
      render the output from `ls`
fejj: in my home directory

For those of you non-Gnomites, Nautilus is the Gnome File Manager, and a few years ago, it had a reputation for being slow.

It is also annoying that a compile will take 50% of the time on gcc, and the other 50% by your terminal process as it scrolls the window.

I did not want to spend all day fixing gnome-terminal, so I ran `xterm'. There is enough a man can do and still get something done in the day.

Well, turns out that the default xterm colors are the most annoying ever put together for an application. They hurt my aged eyes.

Next stop: Konsole. As much as it pained me, I installed KDE to run Konsole. I just wanted to get my work done, and I had heard good things about it. Konsole has a complex configuration menu, a lot harder to use than the clean gnome-terminal, but nothing that would require a PhD, as I figured it out in the time it took for the menu to popup. Ugly, crowded, but functional.

I was partially happy. Konsole performed decently speed wise, but it consumed too much memory. I guess it is designed to run on rendering farms. I have enough memory, so I did not particularly care about the 12 megs used at startup. But unlike gnome-terminal which uses a single process to render multiple windows (a nice memory saver), every time you start konsole, a whole process is launched. I could survive, thanks to my loyal 512 meg on-board simm chip. But when I was editing a file, and holding the cursor key down, I noticed an unbearable lag. Konsole was good for text output, and re-rendering of its window, but it is just unbearable for text input.

Me, being the savvy `configure; make; make install' kind of user, decided to build my own gnome-terminal with Zvt. Well, surprise. There is no more support for Zvt in gnome-terminal in the main branch on CVS. Time to use my cvs skills to check out a version of Gnome Terminal that used Zvt. I did so, but the new Zvt has been hacked to use Pango, and it is just as slow as Zvt. I can understand why they dropped support for Zvt: it is now as slow as Vte and I guess if you want to emulate a Wyse-66 it will do it.

I rapidly added to my to-do list `Get an old Zvt, get an old gnome-terminal package', but for now, I wanted to get some work done.

I tried rxvt. That terminal emulator is still as bad as it was five years ago. Next.

Am back at using xterm. The UI leaves a lot to be desired, but it took me only 5 minutes to find the decent colors from gnome-terminal and paste them into the .Xdefaults file, load the resources database into the server, and another 5 minutes to add that to my session startup. I look forward to reincarnate Zvt and Gnome Terminal from its ashes one day.

Five years after Gnome, and am back with the hated xterm. Jamie's post on the `cascade of attention-deficit teenagers' development model resonated in my head.

Update: I got Zvt 2.0 and GnomeTerminal 2.0 packages running on my machine (thanks to Duncan). This is very good news. Xterm was driving me crazy (it is actually *slower* than Zvt) and I had forgotten how to set a massive scrollback. Happiness in MiggyLand.

[1] Btw, there is a fabulous demo about a window manager that tries to always give the best space for a window in a multi-window desktop. Sadly, I lack any interest on it, as I like to run all my apps full-screen, and just keep an app per-desktop.

The World

Do not forget to call your senator today: Move On's Virtual March on Washington

Blair faces a revolt, not everyone on the parliment believes a case for war has been made.

Australian legal experts warn that Attack on Iraq could end in International Court.

Posted on 26 Feb 2003