Blatent self promotion. Pie Menus. OpenLaszlo. Sims. Content. User Interface. Software.

HyperTIES Hypermedia Browser and Emacs Authoring Tool for NeWS

HyperTIES is an early hypermedia browser developed under the direction of Dr. Ben Shneiderman at the University of Maryland Human Computer Interaction Lab.

HyperTIES Browser (right) and UniPress Emacs Multi Window Text Editor Authoring Tool (left), tab windows and pie menus, running under the NeWS Window System.

HyperTIES Browser NeWS Client/Server Software Architecture.

An Empirical Comparison of Pie vs. Linear Menus

An Empirical Comparison of Pie vs. Linear Menus

Jack Callahan, Don Hopkins, Mark Weiser (*) and Ben Shneiderman.
Computer Science Department University of Maryland College Park, Maryland 20742
(*) Computer Science Laboratory, Xerox PARC, Palo Alto, Calif. 94303.
Presented at ACM CHI'88 Conference, Washington DC, 1988.


Pie Menu -vs- Linear Menu Experiment

This is a re-creation in OpenLaszlo of the experiment comparing pie menus and linear menus, described in the paper "A Comparative Analysis of Pie Menu Performance", by Jack Callahan, Don Hopkins, Mark Weiser and Ben Shneiderman. It administers and times the same sequences of pie menus and linear menus as the experiment.

This version measures the selection time and error rate, but doesn't collect or display the information. If I can find the time, I'll extend this to consentually collect usage statistics on the server, and plot graphs of selection time and error rate, as shown in the paper.

The Design and Implementation of Pie Menus -- Dr. Dobb's Journal, Dec. 1991

The Design and Implementation of Pie Menus

There're Fast, Easy, and Self-Revealing.

Copyright (C) 1991 by Don Hopkins.
Originally published in Dr. Dobb's Journal, Dec. 1991, lead cover story, user interface issue.


Although the computer screen is two-dimensional, today most users of windowing environments control their systems with a one-dimensional list of choices -- the standard pull-down or drop-down menus such as those found on Microsoft Windows, Presentation Manager, or the Macintosh.

This article describes an alternative user-interface technique I call "pie" menus, which is two-dimensional, circular, and in many ways easier to use and faster than conventional linear menus. Pie menus also work well with alternative pointing devices such as those found in stylus or pen-based systems. I developed pie menus at the University of Maryland in 1986 and have been studying and improving them over the last five years.

During that time, pie menus have been implemented by myself and my colleagues on four different platforms: X10 with the uwm window manager, SunView, NeWS with the Lite Toolkit, and OpenWindows with the NeWS Toolkit. Fellow researchers have conducted both comparison tests between pie menus and linear menus, and also tests with different kinds of pointing devices, including mice, pens, and trackballs.

Included with this article are relevant code excerpts from the most recent NeWS implementation, written in Sun's object-oriented PostScript dialect.

The Shape of PSIBER Space - October 1989

The Shape of PSIBER Space:
PostScript Interactive Bug Eradication Routines

Written by Don Hopkins, October 1989.
University of Maryland
Human-Computer Interaction Lab
Computer Science Department
College Park, Maryland 20742

[Source code]


The PSIBER Space Deck is an interactive visual user interface to a graphical programming environment, the NeWS window system. It lets you display, manipulate, and navigate the data structures, programs, and processes living in the virtual memory space of NeWS. It is useful as a debugging tool, and as a hands on way to learn about programming in PostScript and NeWS.


Cyberspace. A consensual hallucination experienced daily by billions of legitimate operators, in every nation, by children being taught mathematical concepts ... A graphic representation of data abstracted from the banks of every computer in the human system. Unthinkable complexity. Lines of light ranged in the nonspace of the mind, clusters and constellations of data. Like city lights, receding ....

Visual Programming Interface Ideas - March 1988

Notes on visual programming interface design, written by Don Hopkins on March 10, 1988.

Use buttons, menus, etc to indicate nouns and to activate verbs.

When you indicate a noun, (send it an "indicate" message) it's pushed onto the noun stack.

When you activate a verb, (send it an "activate" message) it tries to collect its arguments, if any, from the stack.

If it can get all of its arguments, then it is enabled, (sent an "enable message") and can be applied to them.

Otherwise, it blocks until all the right arguments are there, possibly prompting for them to be pushed onto the stack or indicated somehow.

Instructions for Using Pie Menus - March 1988

How to Choose with Pie Menus
English 393, Technical Writing Assignment #1
Instructions for Performing a Process
Don Hopkins
March 10, 1988

Q: What is the process?
A: The process is selecting from pie menus.

Q: Whis is the audience?
A: The audience is users of the pie menu software for the NeWS window system.

Q: Where would the document be found?
A: It would be part of the documentation that goes along with the software.


Selecting commands from menus is an easy, straightforward way to operate a computer. You can use a pointing device called a "mouse" to indicate the selection you desire, from a list of choices show on the screen. Pie menus (Figure 1) differ from traditional "linear" menus (Figure 2) in the way that their choices are laid out, and the shape of their selection target areas on the screen.

These instructions will describe how to select a choice from a pie menu, cancel a menu without making a selection, and make selections quickly and efficiently.

Pie Menu Cookbook - October 1987

A Pie Menu Cookbook
Techniques for the Design of Circular Menus
By Don Hopkins, October, 1987


Pie menus are used for making selections from items displayed on the computer screen, by pointing and clicking at the desired one with a mouse. The regions of the menu are shaped like the slices of a pie, laid out in a circle around the menu center.

The click of a mouse button invokes a menu, which pops up on the screen positioned so that the cursor is centered in the small inactive region in the menu center. The active target regions are all adjacent to the cursor, but in different directions. Pie menus are fast, because it only takes a small amount of cursor movement to point at one of the regions, and they are accurate, because the wedge shaped regions all have large areas.

The circular layout of pie menus makes them very appropriate for certain tasks. Complementary items can be placed in opposite directions, and spatially oriented items can be put in their appropriate directions. Experienced users can select from familiar pie menus without looking at the menu, and can even mouse ahead into menus faster than the computer can update the screen. When the user selects by mousing ahead into a menu, suppressing the menu display can speed up interaction considerably.

The cursor distance from the menu center can be increased to get more angular precision, for accurate directional selection. It can also be used as an argument to the selection, as a continuous analog value, or a discrete sub-selection.

Users can benefit from commonly used pie menus if they are designed to be easy to learn and use. A window management pie menu with its spatially oriented items in appropriate directions is an example of such a menu. A font selection menu using direction to select font style, and distance to select point size, is an example of how the two-dimensional aspect of pie menus can be exploited.

A user should be able to discern the function of a pie menu by looking at it. A simple, intuitive, consistent look for visually representing the meaning and function of a pie menu can help to create an easy to use user interface. Pie menus can also be designed so that they have a good kinesthetic feel to them, they do not require a lot of wasted mouse movement, and the directions are easier to select, and well matched with the input device.

NeatWindow Pie Menu Window Manager for NeWS - May 1988

I released the source code for a NeWS window manager based on pie menus, called NeatWindow (source).

Date: Wed, 11 May 88 02:31:51 EDT
Subject: class NeatWindow From: Don Hopkins <>

Here is a window class with window managment menus designed to work well with pie menus. You should of course have loaded up before running this. Just psh it into your environment, and the DefaultWindow will be set up so that the next window you get will be a NeatWindow! Fire up a clock or something, pop up the frame menu, and play around! I am not including any instructions right now, because I would like to hear what you think of it after trying to figure out what the menus do on your own. (heh heh heh -- the code is free but you gotta be a guinea pig!) This is experimental, so I'll be coming out with a more refined version later. If you'd care to answer the following questions after playing around with the NeatWindow menus, I'd really appreciate it!

- Which functions were obvious by their direction, or their labeling?

- How would you change the labels to make their meanings clearer?

- Why do you think the selections are arranged the way they are?

- What mnemonic tricks can you think of to remember the selection directions?

- After using them for a while, which selections do you find yourself mousing into without looking at the menu?



Pie Menus for NeWS 1.1 - March 1988

I release the first version of pie menus for NeWS 1.1 on March 30, 1988. Here is the source code written in NeWS's dialect of PostScript with Owen Densmore's object oriented extensions, using the "Lite" user interface toolkit.

Date: Wed, 30 Mar 88 08:02:23 EST
From: Don Hopkins <>
Subject: Pie Menus for NeWS 1.1

Here's the latest, for NeWS 1.1! You can psh it into your NeWS server, or load it from your Note that because of a problem with /flipstyle, you should load after customizing the NeWS rootmenu and its submenus. This is because flipstyle changes the submenu objects under rootmenu, but not the variables in systemdict that refer to them. The function /setdefaultmenu, defined and invoked in, sends a /flipstyle to roomenu and redefines the rootmenu in systemdict. If you want to change the menus after running, one fix for this problem is to use /searchkey in your, after running, to redefine the variables in systemdict to refer to the new submenus. Then you can send /insertitem and /deleteitem messages to terminalmenu, etc. (Otherwise you'd be changing the old submenus, and see no effect on the pie submenus.)

Syndicate content