aalib-based X server

How?

First of all, I compiled aalib, which seemed a good start.

Then I found GGI, which acts as an abstraction layer. It provides a standard interface, and will render (among others) as X, svgalib or (conveniently enough) aalib.

XGGI is a patched XFree 3 server, which as you can guess, uses GGI for its display. It'll quite happily render X using aalib.

Last stage was to tweak the text mode. 80x25 was far too small. Each character on-screen represents a 2x2 pixel block, so my X server was running at 160x50. Booting linux with 'vga=ask' wasn't very productive -- it only seemed to report standard VGA text modes (eg, 80x43, 80x50).

Poking around, I discovered SVGATextMode, which will tweak VGA text modes using modelines similar to XF86Config's. Fiddling with its config file somehwat I managed to get 100x60 running, which with an 8x8 font gives me 800x480, the limit of this laptop's LCD. My X server was now running at 200x120.

Almost useable. Time to try some apps :-)

Enlightment, KDE, RealPlayer 8, Netscape Navigator (among others) all seemed fairly happy running at such a low resolution. Some are nicer than others about how they handle it, though -- eg, wrapping menus when they become too large. There are quirks -- the server doesn't seem to recognise ctrl, alt or even shift being pressed, and I can't have a large virtual desktop to scroll around in -- but on the whole it's not too bad.

Why?

It struck me as a nice idea to be able to play DVDs without having the bottleneck of a fairly poor graphics card. aalib seemed like a natural alternative... No luck yet, but I'm still trying :-)

Actually, that's a lie. It just seemed like a cool thing to do.

Screenshots

Photographs

Screendumps

Animations

click here for some of my other pet projects

Featured on Slashdot in 2003