What is Ice-9?

A mouse is not the most efficient way to control a computer. Dragging a cursor back and forth accross a screen, aiming your mouse at small targets, and navigating tiny popup menus is slow, bad for the wrists, and difficult for some disabled users. The common way to get around this, of course, is to set up key-combos on the keyboard to launch frequently used applications, change focus, or arrange windows. However, memorizing lots of key combos can be a hastle and there are some tasks which are just awkward to control with simple keyboard shortcuts.

Ice-9 is a project exploring a new and innovative spatially-oriented system for launching programs, switching applications, and arranging windows without ever needing the mouse. Tiny popup menus are replaced with very large or full-screen menus where content is divided into nine segments, a three-by-three grid. I like to call this arrangment a "menu of nine". Choosing which segment you're interested is as easy as pointing, but there's no need to point! Use your keyboard's number pad to choose the area you're interested in without ever touching the mouse. This way you can see what you're doing and navigate spatially, like with a mouse, but your hands never leave the keyboard.

A Plee to Developers

Ice-9 is still in the very early stages development, and I would very greatly appreciate any thoughts, suggestions, or other assistance. If anyone is interested in helping with the actual coding, advertising to get more attention (and maybe potential developers ;) ), or even just testing, please let me know! I can develop Ice-9 on my own, but being a busy college student, I know that my pace will be glacial without a little friendly assistance. Even just encouragement goes a long way! You can reach me at wren42@users.sourceforge.net

Goals

I'm designing Ice-9 as an extension to the popular keyboard-oriented window manager for X11 called IceWM, since I'm a big fan and I feel the philosophy of Ice-9 complements that of IceWM nicely. Ice-9 will be light-weight, written in C++, and developed with an emphasis on efficiency and ease of use. The key features which I hope to include in Ice-9 are as follows:

Challenges

Progress

July 31, 2006

At this point, I have implemented a demo of the menu system in Qt, currently listed as a separate project on Source Forge. It can be found at menoku.sourceforget.net. This was mainly just to test how well the concept worked and as a demonstration to spread the idea.

I have also started development of the window switching tool. So far, I have worked out the algorithm for optimally choosing where to place up to nine windows in a menu of nine so as to best match their actual positions on the screen. I have a working demo in Qt that uses this algorithm successfully on real window data fetched from XLib.

The next step for me will be coming up with a system for displaying windows divided into menus of nine, like the menoku window, using XLib and/or function calls from the IceWM source. I plan to make it nice and abstract so it can support being any size and can handle menus with 9 or 81 items to choose from (or, more specifically, each of the nine screen segments must support holding a single item or a small menu of nine). From there I can start including code from my window switcher demo and dealing with user input.