Check out the new USENIX Web site.

Acme: A User Interface for Programmers

Rob Pike
AT&T Bell Laboratories
Murray Hill, New Jersey 07974


A hybrid of window system, shell, and editor, Acme gives text-oriented applications a clean, expressive, and consistent style of interaction. Traditional window systems support interactive client programs and offer libraries of pre-defined operations such as popup menus and buttons to promote a consistent user interface among the clients. Acme instead provides its clients with a fixed user interface and simple conventions to encourage its uniform use. Clients access the facilities of Acme through a file system interface; Acme is in part a file server that exports device-like files that may be manipulated to access and control the contents of its windows. Written in a concurrent programming language, Acme is structured as a set of communicating processes that neatly subdivide the various aspects of its tasks: display management, input, file server, and so on.

Acme attaches distinct functions to the three mouse buttons: the left selects text; the middle executes textual commands; and the right combines context search and file opening functions to integrate the various applications and files in the system.

Acme works well enough to have developed a community that uses it exclusively. Although Acme discourages the traditional style of interaction based on typescript windows-teletypes-its users find Acme's other services render typescripts obsolete.

Download the full text of this paper in ASCII (53,035 bytes) and PDF (149,475 bytes) form.

To Become a USENIX Member, please see our Membership Information.