Hypercube is my experiment in a true 3D user interface (UI). I am attempting to write a fully functional, robust user interface to take advantage of 3D.

My current plan is to make this more an experiment involving programming to answer some questions:

A more complete list of what I would like to see in a 3D UI is available.

Currently I am still in the early stages of writing code. I am doing very little (essentially no) design or overall planning. I have lots of ideas, and I want to experiment with this. It is not expected that the first version will be a general-use program; possibly no one besides myself will ever use it. There are some screenshots available, though; and a more detailed explanation of my progress.

I have a few related resources, too. I occasionally write down some thoughts on UI design. There is also a page of papers related to Hypercube, and 3D UI.

Hypercube will be released under the GPL, but at the moment there's not all that much code to show off, plus it's mostly uncommented, and a bit unorganized. When I've got something decent which other people might actually want to see, I'll post a tar.gz file of the code. If you're really interested, feel free to mail me and ask for a copy of the code. I'll be glad to give you a dump of what I have.

If you have suggestions, comments, flames, etc, go ahead and send them to me; I'd like to hear what other people think about this. Statements such as "You're insane!" or "This will never work!" will probably be ignored; I realize how incredibly ambitious this is. If I accomplish even half of this, it won't be for years. Some things which would speed up development, such as using a pre-made 3D engine or joining the 3Dwm team I've considered. However, this is an experiment for me, and a learning experience. I also don't want to spend all my time learning how to use another engine or getting up to speed on someone else's code only to run out of time before school and end up abandoning it. I also want as much control as possible over the code, so I can design it how I want, and add the features I need in the best way possible.