Matt Gemmell

TOLL is available now!

An action-thriller novel — book 2 in the KESTREL series.

★★★★★ — Amazon

Pie Menus on Mac OS X

pie menus 4 min read

Some of you may remember that during the summer I was experimenting with a pie menus implementation on Mac OS X. Once I obtained my studentship to work in the Department over the summer, the pie menus fell by the wayside, and I haven’t worked on them very much since. Today, however, was the deadline for submission of our choice of project to carry out during our 4th year, and you’ll never guess what project I decided to undertake.

It’s relatively uncommon for students to propose their own project, but it’s encouraged by the department, and with this in mind I decided to forego the 113 existing project choices and instead I wrote a proposal to create a pie menus implementation on Mac OS X:

Project Proposal: Pie (radial) Menus on Mac OS X

Pie menus are menus which are circular in shape, presenting menu options as pie-wedge slices which the user can select directionally. This type of menu interface has been growing in popularity in recent years, and can be commonly seen in games (including Maxis' The Sims), 3D modelling applications (Alias Wavefront's Maya), academic applications, and so on.

Pie menus offer several usability advantages over conventional (linear) menus:

  • The target-acquisition area is much larger compared to linear menus, since a slice can be selected purely by angle, with distance from the center being (optionally) irrelevant. Thus, acquisition area is potentially limited only by screen space.
  • Studies have shown that human beings are quicker to develop angular memory (i.e. that "Save" is at position South-West on a pie menu) than distance memory (i.e. that "Save" is 5 options down in a linear menu).
  • Pie menus allow the use of gestural shortcuts as well as keyboard shortcuts: if a pie menu has an "Edit" submenu option at position East, then in that sub-piemenu the option "Copy" is at position North, the user can simply remember East-North corresponds to Edit > Copy. The key point is that using the pie menu system physically teaches the user the gestural shortcut for the options, thus muscle memory is immediately trained, hastening the progress from novice to advanced user. Pie menus can even be implemented to accept quick gestural shortcuts without even displaying the pie itself; such pie menus are known as "marking menus".

However, pie menus also bring several challenges for the implementor and UI designer:

  • Pie menus typically consume significant screen space.
  • Pie menus can become unusable if many options are present, and indeed research shows that after more than about 8 options, usability gains compared to linear menus start to drop. The issue is that, if all options are simply drawn within the pie, each slice becomes too narrow for accurate target acquisition.
  • There are many implementation and usability questions regarding how to present sub-menus, and so forth.

Past uses of pie menus have been rather contrived in that they have been used in very controlled, limited contexts; i.e. games or applications where it can be ensured that no menu has more than 8 options, or other such artificial constraints. I propose to develop a robust pie menu implementation which will actually provide pie-menu equivalents of the normal linear menus in arbitrary existing applications.

The Mac OS X operating system is a modern OS with a BSD Unix core, and several application environments running on top of it. The primary native application environment is Cocoa, whose applications are typically developed in Objective-C, an object-oriented superset of ANSI C whose syntax and messaging behaviour are inspired by Smalltalk.

Mac OS X allows the creation of so-called Input Managers, which allow code to be injected into existing applications. For example, the ability to externally edit the text in all Cocoa text fields, system-wide, could be implemented on OS X in this way. I propose to create a robust pie-menu implementation as an Input Manger, which will thus create pie-menu equivalents of the main menubar of arbitrary existing applications.

In this way, the flexibility and intuitiveness of my pie menu implementation would be put to a genuine test by having to "pie-ify" existing linear menu systems, rather than simply contrived example menus.

I already have all necessary hardware and software for Mac OS X development, and have several years' experience in such development; I can happily provide example work on request.

In a nutshell, I propose to design and implement a robust pie-menu system on Mac OS X, for use system-wide, and to investigate answers to the key design and usability problems which arise when moving from a linear to a radial menu paradigm.

It’s almost unheard-of to have a project based on Mac OS X (a grand total of one of the 113 prewritten projects is a Cocoa one, but it’s a port), so I was very pleasantly surprised when my proposal was accepted by the academic I approached as a potential supervisor (Phil Gray). Thus, for the next 6 months or so, I’ll be working on pie menus for OS X as part of my honours CS work. I’m very excited by the opportunity, and I plan to use this new category of the blog as a sort of informal development log and a place to discuss the work as I move forward with it.

For now, though, time for some rest. I’ve had a 20-hour day so far and I’m beyond exhausted, but also now very energised about the year ahead; I guess the lesson is that, if you have something you’re really passionate about working on, it’s always worth at least asking if you can do so officially. I really needed a piece of news like this to get me back into the proper mindset for another year of study, and indeed spending the last 8 hours or so in the pub with my colleagues helped a fair bit too!

More as it happens.