Here are some references to things I've written about pie menus:
-
Pie Menu Video.
Instructional demo of ActiveX pie menus, and demos of
many different pie menus developed over 12 years.
-
The Design and Implementation of Pie Menus.
By Don Hopkins. Dr. Dobb's Journal, Dec. 1991.
Lead article, user interface issue.
-
The Shape of PSIBER Space: PostScript Interactive Bug Eradication Routines.
By Don Hopkins. Proc. 1989 Usenix Graphics Conference,
Monterey California.
-
A Comparative Analysis of Pie Menu Performance.
By Jack Callahan, Don Hopkins, Mark Weiser, and Ben
Shneiderman. Proc. CHI'88 conference, Washington D.C.
-
Designing to Facilitate Browsing: a Look Back at the
HyperTIES Workstation Browser.
By Ben Shneiderman, Catherine Plaisant, Rodrigo Botafogo,
Don Hopkins, and William Weiland. Hypermedia, V3 #2, 1991
-
Directional Selection is Easy as Pie Menus!
By Don Hopkins. ;login: The Usenix Association
Newsletter, V12 #5, Sept. 1987
I've implemented pie menus several times,
for various window systems, projects, and products:
-
The first X10 pie menu proof of concept prototype,
written in C on a Sun 3/160. Convinced Professor Mark
Weiser that I should divert my time from system
administration to researching user interfaces. Convinced
Jack Callahan, who was taking Ben Shneiderman's human
factors class, to do a project comparing pie menus and
linear menus, which I helped him implement.
-
Pie menu extension to X10 uwm "ultrix window
manager". There was no toolkit for X10 at the time,
so I extended the X10 "uwm" window manager to
implement pie menus as well as its normal pop up linear
menus. You could define your own trees of nested menus,
and bind them to window management commands, run
programs, etc. You could specify that any menu was linear
or pie, and it supported nested menus, mouse ahead,
display supression, and carefully addressed the screen
edge boundary condition and mouse warping problems (which
is tricky with an asynchronous protocol like X).
-
Forth
programmable pie menu
window manager.
I integrated the pie-menuified
"uwm" into Mitch Bradley's Sun Forth, to
perform the experiment for Jack Callahan's SIGCHI paper.
The paper's available here:
callahan.ps.
-
I made my first multithreaded programmable pie menu
window manager, by breaking open the inner loop of the C
window manager, linking it into Mitch Bradley's great
68000 Sun Forth, and writing code in Forth that could
create and pop up menus, track the mouse, and call into
and delegate events to the uwm code.
-
We used it to administer, time, and record statistics for
the experiment we did, comparing pie menus and linear
menus. At one point, I wrote code that would let you
throw a window and it would bounce around the screen, by
starting a Forth thread that pushed it around. You could
have a whole bunch of windows boucing around the screen
and frantically repainting at once! I can't believe how
well it performed on a little Sun 3/160, compared to how
slow and bloated computers are today.
-
This multitasking
Forth
programmable window manager forshadowed my work with
NeWS,
a window manager programmable in multithreaded PostScript,
another stack based language.
Mike Gallaher and I went to visit Sun,
and I read the Red PostScript book on the plane. I met
the likes of Gilmore, Gosling, Rosenthal, Densmore, and
Bradley (who later hired me as a summer intern), and
finally saw and promptly crashed my first NeWS server
(then called SunDew).
-
PostScript code to print pie menus on an Apple
LaserWriter. After implementing ugly pie menus in X10, I
experimented with many different graphical styles, using
PostScript. But all I had was the Apple LaserWriter in
the terminal room. I wrote my own object oriented system
using nested dictionaries to represent nested two
dimensional pie menus, with multiple rings of graphical
items. This foreshadowed my work programming
NeWS,
with Owen Densmore's object oriented PostScript system.
By the time I read Owen's Usenet Graphics Conference paper,
with its one page listing of class.ps,
I had already been working on the same problem myself
on the LaserWriter to print nested graphics with
inherited characteristics, so I was quite excited
to get NeWS and make interactive pie menus
on the screen instead of drawing them on paper.
-
NeWS
pie menus, written in object oriented PostScript,
with the Lite toolkit. I designed, implemented,
used, and re-implemented many classes and subclasses
of pie menus for NeWS 1.0, 1.1, SGI's 4Sight, and
Grasshopper's MacNeWS. I developed a nice efficient
pie menu based window manager, as well as
"tab windows", windows with tabs sticking out
of them, that you could use to easily pop up pie menus
and move and organize the windows. I worked on UniPress
Emacs, rewriting the NeWS display driver, and integrating
pie menus and tab windows into it, including an automatic
menu compiler that translated "hypertext" Info
trees into corresponding trees of pie menus bound to
emacs commands. This was the first version of emacs to
support multiple windows, so the convenient tab windows
and pie menus helped a lot when you had lots of windows
opened.
-
I wrote a special subclass of pie menus for the SGI
4Sight version of NeWS, since 4Sight did not support
popup windows with "SaveBehind", because it
couldn't read pixels back from the screen efficiently.
Instead, its own special SGI style NeWS menus popped up
in the hardware overlay plane! So I put the necessary
hooks into the core pie menu class, so I could write a
subclass for the SGI that popped them up in the overlay
plane. The only problem was with the rainbow color wheel
pie menu, because you could only have black, white, and
one other color in the overlay. So I made a special
instance variable just to override the overlay behavior,
which the color wheel menu set, so it could pop up in the
color framebuffer, but still know enough about the
overlay plane to punch a hole in the overlay so the other
menus did not appear to overlap it!
-
Pie menus and tab windows for the
NeWS
Development Environment (NDE 1.0), on OpenWindows 1.0.
I wrote pie menus and tab windows from scratch on
top of an early version of this big, new, complex,
object oriented PostScript toolkit for NeWS, written by Sun.
It was actually possible to manage
X11
windows with NeWS tab windows and pie menus, because the
X11 window manager
was written in NeWS, and used the default NDE
window frame, which I could customize and override. NeWS
Development Environment (NDE 1.0) was eventually
completely rewritten and renamed "The NeWS
Toolkit".
-
Pie menus and tab windows for The
NeWS
Toolkit. When I graduated, I went to work for Sun on TNT,
The NeWS Toolkit, for OpenWindows 2.0. TNT was loosely
based on NDE, also written in object oriented PostScript,
but it was twice the speed and half the size.
Of course, I wrote pie menus and tab windows from scratch
again for TNT, and continued to improve on the user interface,
this time adding spinning pop-up animation, and air-tight
synchronous mouse tracking (which is possible to do with
NeWS but not with
X11).
The source code is available somewhere. [NOTE: make a
link here]
-
Talking pie menus in
SimCity
for
HyperLook.
I ported SimCity to
Unix,
reimplementing the user interface using the HyperLook
environment on
NeWS,
a product that I was concurrently developing at
the Turing Institute in Glasgow with
Arthur van Hoff.
SimCity for HyperLook was a really fun project to work
on, but it's hard to describe in words, and you really
have to
see it to believe it.
I used the TNT pie menus for
selecting city editing tools,
a task that you do all the time when editing the map.
They spoke the name of the selected tool,
so you knew you had the right tool
even if you flicked the mouse
so fast that the pie menu wasn't displayed.
-
The "piewm"
X11 window manager
with pie menus. When I was a research programmer at CMU,
faced with using
X11,
I realized that I needed pie menus to help me move my
windows around, so I went shopping around for a
reasonable window manager, and since there weren't any,
I choose the least unreasonable one at the time,
"tvtwm", and hacked it up with an updated
version of the old X10 "uwm" pie menus,
and called it "piewm".
The source code is available here:
piewm.tar.Z.
-
The TCL/Tk pie menu widget. I
accidentally ported
the HyperLook version of
SimCity
to
X11,
making it multi player in the process, using the TCL/Tk
toolkit, which was the only X11 toolkit that didn't suck.
I needed some fancy looking graphical pie menus, so I
made a TCL/Tk pie menu widget, whose window shape could
be shrink-wrapped around iconic labels. The source code
is available here:
tkpie.tar.gz.
I recorded an
X11 SimCity demo,
showing pie menus in action.
SimCity for X11 won a "best product of 1992"
award from Unix World!
-
The
ScriptX
pie menu. I worked at Kaleida and wrote all kinds of
stuff in ScriptX, so of course one of those things was a
pie menu. I used it in a couple obscure places in the
DreamScape
demo.
-
ActiveX pie menu component. I wrote a pie menu OLE
component, now known as ActiveX. With Internet Explorer,
you can put it on a web page, and program it in
JavaScript or Visual Basic Script. Wheeee. It has a
property sheet that lets you type an indented outline of
menu items into a multi line text editor. It's much
simpler to configure a nested tree of menus this way than
trying to use some fancy tree editor with lots of buttons
and scroll bars and text fields.
Other stuff I should mention some time:
-
The intense discussions and
bong hits
with Mike Gallaher that inspired my research.
-
Mark Weiser's pie menu in his "SDI" game for SunView.
-
The pie versus linear menu experiment and SIGCHI paper
that Jack Callahan, Ben Shneiderman and I wrote.
-
A description of the
Forth
window manager that I developed to perform the experiment.
-
The story of giving Steve Jobs a pie menu demo.
"That sucks! That sucks! That sucks! Wow, that's
neat! That sucks!"
-
My
pseudoscientific psiber
pie menu performance at
Empowered,
CHI '90.
-
The Momenta(ry) pen computer, with its patented 5-item
"command compass". (Doh!)
-
Return to Zork has animated graphical drag and drop pie menus.
-
Alias, the high end SGI 3D tool, has user definable
"marking menus".
-
The Japanese version of Habitat had pie menus to trigger
actions of your avitar like wave, bow, jump, etc.