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.


  1. Stan says:

    Very cool – it looks way better than windows new “metro” interface. Microsoft are you listening?

  2. Jaysen says:

    This would be super fast on an Arm M4 :D

  3. Ben says:

    Very nice. Even using a controller running that much off an ATmega is impressive and is a sign of good programming.

  4. Andrew says:

    Thanks for the feature!

  5. bluelip says:

    Headline is click bait. Great job by the developer. Shame on HaD.

  6. yeahright says:

    I didn’t catch which “serial to VGA module” he was using..

  7. boz says:

    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.

  8. Dave says:

    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.


    • Trav says:

      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.

    • Ziggy says:

      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.

    • kitsune361 says:

      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”. =^.^=

  9. zuul says:

    pretty cool

  10. great looking mate nice work.

  11. Gnarp says:

    heavy! shit! creeds 4 youhacka:) thats´s some heavy shit!!!

  12. marcus says:

    uVGA like it !!
    where to buy ??

    great port!!

    • Greenaum says:

      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.

  13. Fabien T says:

    “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.

  14. wardy says:

    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?

  15. biozz says:

    oh it used a 4D systems chip … well duh you can give nice i nterfaces with one of those XD … hell you can remove the AVR completely from this and just use the uvga!

  16. 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

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 96,401 other followers