GUI Window Manager On An AVR Chip


This project is reminiscent of the old days when window managers were an amazing new idea. The difference is that this window-based GUI is running on an ATmega1284 microcontroller. But the behavior and speed of the interface is pretty much exactly what you’d expect if working on an early 90’s home computer. It even uses a mouse as input.

So how is this even possible? The key to the project is a serial to VGA module which handles the heavy lifting involved with generating a VGA signal. We featured one of [Andrew’s] past projects which used an AVR chip to generate the VGA signal. But that doesn’t leave nearly enough cycles to implement something like a window manager, not to mention the fact that it got nowhere near the resolution shown here.

He uses a serial mouse with an RS-232 converter chip to interact with the windows. This is best shown in his video after the break. He’s able to generate and interact with new windows. He even implemented a set of rudimentary controls which allow him to adjust the theme of the windows and drive the audio playback feature included on that VGA controller he’s using.

31 thoughts on “GUI Window Manager On An AVR Chip

      1. Qt, if doable, would slow it down like molasses. The Motif look is due to the simple drawing of beveled boxes to simulate a 3D surface. Ugly if you ask me, but effective.

  1. Nice project, and awesome what a bit more googling can get you, the uVGA controller is from a company called 4D systems which I’m ashamed to say I’ve never heard of until now and which makes some pretty impressive stuff.

  2. Guys,
    Interesting article, but “GUI window manager” sounds like a statement from the department of redundancy department. Are you suggesting there are CLI window managers? I love hardcore geeks, but their misuse and over-use of the term “GUI” drives me nuts.


    1. I find it fairly descriptive. On this site if it said “Window Manager” I would have thought of something that open and closed my bedroom windows. And it is basically a Graphical user interface that uses windows. there are GUI’s that don’t.

      Great job Andrew.

    2. You’re clearly not over 50 and did not cut your computing teeth in a world before graphics terminals :) Yes, there have been ‘CLI’ or more correctly, character based windowing systems. Most common are/were based on something called ‘curses’, which can be had on most any unix like OS.There was also a crossover point (mostly in the 80s I think) where terminals got smarter and had embedded support for bitmap graphics and could do boxes, lines, polygons, circles, etc. on their own.

    3. Ever heard of DESQView? Text mode, CLIs running apps in ANSI text bordered windows. I think there is something in the *NIX world that does the “text-based CLI’s window manager”.

      That said, a Windows Manager typically manages the windows for other apps, I don’t know how much more horsepower an AVR would have for apps. Still a very neat exercise in “because I can”. =^.^=

    1. Have a Google. 4Dsystems, as Boz mentioned. They’re not cheap, but it’s a complete VGA display with primitives like lines and polygons, that’s controlled by a serial port. I think it’s probably some sort of FPGA.

  3. “interface is pretty much exactly what you’d expect if working on an early 90′s home computer. It even uses a mouse as input.”

    Did you mean early 80’s ?

    Atari ST and Amiga are from 85 IIRC and you can expect really more than that from them. Archimedes in 87.

  4. I once did a similar project for my Palm IIIx hand-held (written in PocketC no less!). I was inspired by the Atari 520 GEM environment. This also reminds me of GEM somewhat. Nicely done Andrew.

    Hmm, anyone remember PocketC?

  5. This is an absolutely strong start at a codified (u)WindowingToolkit for the AVR. I’ve been playing around with the same idea for my μnix (pronounced “myoo-nix”) 8-bit workstation project. I enjoyed your previous post re: getting the VGA designed and this video re: the dWidget toolkit was fantastic. Thanks, will look for more in the future!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.