(PICTURE)(PICTURE) (PICTURE)Europäis hes Patentamt
(1 9) (PICTURE) European patent o_ice
(PICTURE) o__ice europeen des brevets (1 1 ) E P O 5 1 7 486 B 1
(1 2) EU ROPEAN PATENT _PECl FICATlON
(45) Date of publication and mention (51 ) _nt. c_.7_. _O6F 3JO33, _O6 F g/44
of the grant of the patent_.
1 3.O9.2OOO Bulletin 2OOOl3l
(21 ) Application number_. 923O5O5O.4
(22) Date of filing_. O2.O6.1 992
(PICTURE)(54) Global user inte_ace
Globale Benutzerschnittstelle
(PICTURE)(PICTURE)
lnterface d'utilisation globale
__
_
OO
_
h
_uj Note_. Within nine months from the publication of the mention of the grant of the European patent, any person may give
o notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in
a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art.
_w 99(1) European patent convention).
(PICTURE)Prin_ed by XeroK (UK) Business Services
2.16.7 (HRS)_3.6
EP O 51 l 486 B1
Description
Background of the Invention
5 1 . Field of the Invention
_OOO1 _ The techniques disclosed herein concern user interfaces to computers generally and more specifically inter-
active user interfaces which employ windows and pointing devices.
1o 2. Description of the Prior Art
_ooo2_ The prob_em of designing appropriate graphica_ user interfaces to the uN_x_ system is vexing and _arge_y
unsolved, even today, ten years after bitmap displays were first attached to UNIX systems. In those ten years, graphical
applications have become major subsystems that sidestep or even subvert some of the properties of UNIX that helped
15 make it popular, in particular its piece-parts, tool-based approach to programming. Although there have been some
encouraging recent attempts, in particular ConMan, described in Paul Haberli, ''ConMan_. A Visual Programming Lan-
guage for Interactive Graphics'', Comp. Graph., Vol. 22, #4 Aug. 1 988, pp. 1 O3- 1 1 O, and Tcl, described in John Oust-
erhout, ''Tcl_. An Embeddable Command Language'', Proc. USENIX Winter 1 99O Conf., pp. 1 33-1 46, they have taken
the form of providing interprocess communication within existing environments, permitting established programs to talk
_o to one another. None has approached the problem structurally. Moreover, they are minor counterexamples to the major
trend, which is to differentiate among systems by providing ever larger, fancier, and more monolithic graphics subsys-
tems rather than by increasing the functionality or programmability of the overall system. To the software developer, that
trend is problematical; modem user interface tool_ts and window systems are as complex as the systems UNIX dis-
placed with its elegant, simple approach.
_5 _OOO3_ The system of the invention, termed herein Help is an experimental program that combines aspects of win-
dow systems, shells, and editors to provide an improved user interface for textual applications. It is not a 'toolkit'; it is a
self-contained program, more like a shell than a library, that joins users and applications. From the perspective of the
application, it provides a universal communication mechanism, based on familiar UNIX file operations, that permits
small applications - even shell procedures - to exploit the graphical user interface of the system and communicate
3o with each other. For the user, the interface is extremely spare, consisting only of text, scroll bars, one simple _nd of win-
dow, and a unique function for each mouse button - no widgets, no icons, not even pop-up menus. Despite these lim-
itations, help is an effective environment in which to work and, particularly, to program.
_OOO4_ Help's roots lie in Wirth's and Gutknecht's Oberon system, described in N. Wirth and J. Gutknecht, ''The
Oberon System'', Software Practice and Experience, Sept. 1 989, vol 1 9, no. 9, pp 857-894 and in Martin Reiser, The
35 Oberon System, Addison Wesley, New York 1 991 . Oberon is an attempt to extract the salient features of Xerox's Cedar
environment, described in W. Teitelman, ''A Tour through Cedar'', IEEE Software 1 , no. 2, pp. 44-73, and implement
them in a system of manageable size. It is based on a module language, also called Oberon, and integrates an operat-
ing system, editor, window system, and compiler into a uniform environment. Its user interface is especially simple_. by
using the mouse to point at text on the display, one indicates what subroutine in the system to execute next. In a normal
4o UNIX shell, one types the name of a file to execute; instead in Oberon one selects with a particular button of the mouse
a module and subroutine within that module, such as Edit . Open to open a file for editing. Almost the entire interface
follows from this simple idea.
_OOO5_ A major difficulty with the Oberon system is that it has a single process and is language oriented. Modem
computing systems are typically multi-process systems and are file oriented instead of language oriented. It is thus an
45 object of the invention to secure the advantages of Oberon's user interface in such multi-process and file-oriented com-
puting systems. M. Stübs in CHIP Zeitschrift für Mikrocomputer-Technik, no 1 2, 1 December 1989, pages 1 79-1 82,
''Handbuch im Computer, Microsofts Hilfe-System'', discloses an online handbook which is accessed by calling up a
hierarchy of screens of information. Each screen displays text in the form of lists of text strings. Clicking on a text string,
such as a word, causes the next screen to be displayed, giving more information related to the selected word or string.
5o _OOO6_ EP-A-O 393 837 discloses a method of displaying data corresponding to a procedure is provided where all
of the data required to follow the procedure are displayed together with abbreviated text corresponding to the proce-
dure. Text and data corresponding to only a portion of the procedure are displayed at any given time. Additional infor-
mation related to several consecutive steps of the procedure which appear on separate screens is displayed
continuously to one side of the screen. Additional data may be selected to be displayed prior to returning to the original
55 SCreen. 2
(PICTURE)
EP O 51l 486 B1
_OOOl_ A method and a graphical user interface according to the invention are as set out in the independent claims,
preferred forms being set out in the dependent claims.
_ _OOO8_ In one aspect the invention is a method for defining an input to a computer system having at least one win-
dow. The method has steps including associating the window with a context; accepting a string of te_ selected from
anywhere in the window; and providing the string of text together with the context as the input. This and other aspects
and advantages of the invention will be clear to those of ordinary s_ll in the art upon perusal of the Drawing and
Detailed Description, wherein_.
1O Brief Description of the Drawing
_OOO9_
1_ FIG. 1 shows the display provided by the invention;
FIG. 2 shows how a command is input from the display;
FIG. 3 shows how contexts are defined for names;
FIG. 4 shows how the operation of reading mail headers is defined;
FIG. 5 shows how the headers are displayed in a window;
_o FIG. 6 shows how an operation of viewing a process's stack is defined;
FIG. 7 shows how a portion of the stack is displayed and how a portion of the code for a function is selected for
viewing;
FIG. 8 shows how the selected portion of the code is displayed in a window;
FIG. 9 shows how an operation of finding places where a variable is used is defined;
__ FIG. 1 O shows how the places where the variable is used are displayed in a window; and
FIG. 1 1 shows how the code at the places where the variable is used is displayed in windows.
_OO1 O_ Reference numbers employed in the following Detailed Description have two parts. The two rightmost digits
are reference numbers within a figure; the remaining digits to the left are figure numbers; thus a reference number 1 OO3
3o refers to an item which appears for the first time in FIG. 1 O.
Detailed Description
_OO1 1_ In the following, the basics of the user interface provided by Help are first described; thereafter, an example
3_ is given of how the user interface might be used in locating and fixing a bug in a program.
Basic User Interface. FIGs. 1-3
_OO12_ In a presently-preferred embodiment, Help operates only on text which is displayed in a window; in other
4o embodiments, the techniques set forth here may be used with icons or other non-text representations of entities. In the
preferred embodiment, the interface to Help are a three-button mouse and keyboard. In other embodiments, other
pointing devices may be employed, including one and two button mice and pen devices. The fundamental operations
are to type text with the keyboard and to control the screen and execute commands with the mouse buttons. Te_ may
be selected with the left and middle mouse buttons. The middle button selects text defining the action to be executed;
4_ the left selects the object of that action. The right button controls the placement of windows. Note that typing does not
execute commands; newline is just a character.
_OO13_ Several interrelated rules were followed in the design of the interface. These rules are intended to make the
system as efficient and comfortable as possible for its users. First, bre_ity._ there should be no actions in the interface
- button clicks or other gestures - that do not directly affect the system. Thus help is not a 'click-to-type' system
_o because that click is wasted; there are no pop-up menus because the gesture required to make them appear is wasted;
and so on. Second, no retyping._ it should never be necessary or even desirable to retype te_ that is already on the
screen. Many systems allow the user to copythe text on the screen to the input stream, but for small pieces of text such
as file names it often seems easier to retype the text than to use the mouse to pick it up. As a corollary, when not typing
genuinely newte_, such as when browsing source code or debugging, it should be possible to work efficiently and com-
__ fortably without using the keyboard at all. Third, automation._ let the machine fill in the details and make mundane deci-
sions. For example, it should be good enough just to point at a file name, rather than to pass the mouse over the entire
te_ual string. Finally, defaults._ the most common use of a feature should be the default. Similarly, the smallest action
should do the most useful thing. Complex actions should be required only rarely and when the task is unusually difficult.
3
EP O 51l 486 B1
_OO14_ As shown in FIG. 1 , the help screen 1 O1 is tiled with windows 1 O3 of editable text, arranged in (typically) two
side-by-side columns 1 15(a) and (b). In other embodiments there may be only a single column or more than two col-
umns Figure 1 shows help screen 1 O1 in mid-session. Each window 1 O3 has two subwindows, a single tag line 1 O5
across the top and a body of text 1O7. Tag 1 O5 typically contains the name of the file whose text (or a copy thereof)
_ appearS in body 1 O7.
_OO15_ The text in each subwindow (tag 1O5 or body 1 O7) may be edited using a simple cut-and-paste editor inte-
grated into the system. The left mouse button selects te_; the selection is that text between the point where the button
is pressed and where it is released. Each subwindow has its own selection. One subwindow -the one with the most
recent selection or typed te_ - is the location of the current selection 1 O9 and its selection appears in reverse video.
1o The selection in other subwindows appears in outline, as seen at PS 1 1 1 .
_OO16_ Typed text replaces the selection in the subwindow under the mouse. The right mouse button is used to rear-
range windows 1 O3. The user points at tag 1 O5 of a window 1 O3, presses the right button, drags the window to where
it is desired, and releases the button. Help then does whatever local rearrangement is necessary to drop the window to
its new location (the rule of automation). This may involve covering up some windows or adjusting the position of the
1_ moved window or other windows. Help attempts to make at least the tag of a window fully visible; if this is impossible, it
covers the window completely.
_OO1l_ A tower of small black tabs 1 13, one per window, adorns the left edge of each column 1 15. These tabs 1 13
represent the windows in that column 1 15, visible or invisible, in order from top to bottom of the column, and can be
clicked with the left mouse button to make the corresponding window fully visible, from its tag 1 O5 to the bottom of the
_o column it is in. A similar row across the top of the columns allows the columns to expand horizontally. These little tabs
are a solution to the problem of managing many overlapping windows.
_OO18_ Like the left mouse button, the middle button also selects text, but the act of releasing the button does not
Ieave the text selected; rather it executes the command indicated by that text. For example, to cut some text from the
screen, one selects the text with the left button, then selects with the middle button the word Cut 1 19 anywhere it
__ appears on the display. (By convention, capitalized commands represent built-in functions.) As in any cut-and-paste edi-
tor, the cut text is remembered in a buffer and may be pasted into the text elsewhere. If the te_ of the command name
is not on the display, one just types it and then executes it by selecting with the middle button. Note that Cut 1 19 is not
a'button'in the usual window system sense; it is just a word, wherever it appears, that is bound to some action. To make
things easier, help interprets a middle mouse button click (not double click) anywhere in a word as a selection of the
3o whole word (the rule of defaults). Thus one may just select the text normally, then click on Cut with the middle button,
involving less mouse activity than with a typical pop-up menu. As shown at 2O1 in FIG. 2, the text selected for execution
is underlined. Arrow 2O2 indicates the current cursor position. As a strict rule, if the text for selection or execution is the
null string, help invokes automatic actions to expand it to a file name or similar conte_-dependent block of text; if the
te_ is nonnull, it is taken literally.
3_ _OO19_ As an extra acceleration, help has two commands invoked by chorded mouse buttons. While the left button
is still held down after a selection, clicking the middle button executes Cut; clicking the right button executes Paste,
replacing the selected text by the contents of the cut buffer. These are the most common editing commands and it is
convenient not to move the mouse to execute them (the rules of brevity and defaults). One may even click the middle
and then right buttons, while holding the left down, to execute a cut-and-paste, that is, to remember the text in the cut
4o buffer for later pasting.
_OO2O_ More than one word may be selected for execution; executing Open 1usr1rob1lib1profile creates a new window
and puts the contents of the file in it. (lf the file is already open, the command just guarantees that its window is visible.)
Again, by the rule of automation, the new window's location will be chosen by help.
_OO21_ A typical shell window in a traditional window system permits text to be copied from the typescript and pre-
4_ sented as input to the shell to achieve some sort of history function_. the ability to re-execute a previous command. Help
instead tries to predict the future_. to get to the screen commands and text that will be useful later. Every piece of text on
the screen is a potential command or argument for a command. Many of the basic commands pull text to the screen
from the file system with a minimum of fuss. For example, if Open is executed without an argument, it uses the file name
containing the most recent selection (the rule of defaults). Thus one mayjust point with the left button at a file name and
_o then with the middle button at Open to edit a newfile. Using all four of the rules above, if Open is applied to a null selec-
tion in a file name that does not begin with a slash (_, the directory name is extracted from the file name in the tag of
the window and prepended to the selected file name. An elegant use of this is in the handling of directories. When a
directory is Opened, help puts the its name 121 , including a final slash, in the tag and just lists the contents 123 (i.e.,
the names of the files in the directory) in the body. For example, as shown in FIG. 3, by pointing at dat. h 3O1 in the
__ source file 1usr1rob1src1help1help. c and executing Open, a new window 3O5 is created containing the contents of
Iusr1rob1src1help1dat.h_. all it takes is two button clicks. Making any non-null selection disables all such automatic actions_.
the resulting text is then exactly what is selected.
_OO22_ That Open prepends the directory name gives each window a context_. the directory in which the file resides.
4
EP O 51l 486 B1
The various commands, built-in and external, that operate on files derive directory 3O7 in which to execute from tag line
1 O5 of window 3O5. Help has no explicit notion of current wor_ng directory; each command operates in the directory
appropriate to its operands.
_OO23_ The Open command has a further nuance_. if the file name is suffixed by a colon and an integer, for example
_ help.c_.27, the window will be positioned so the indicated line is visible and selected. Help's syntax further permits spec-
ifying general locations, although only line numbers will be specified in the following examples.
_OO24_ It is possible to execute any external operating system command. If a command is not a built-in like Open, it
is assumed to be an executable file and the arguments are passed to the command to be executed. For example, if one
selects with the middle button the text
1O grep '_main' 1sys1src1cmd1help1*.c
the traditional grep command will be executed. Again, some default rules come into play. If the tag line 1 O5 of the win-
dow 1 O3 containing the command has a file name and the command does not begin with a slash, the directory of the
1_ file will be prepended to the command. If that command cannot be found, the command will be searched for in the con-
ventional directory lbin. The standard input of the commands is connected to 1dev1null; the standard and error outputs
are directed to a special window, called Errors, that will be created automatically if needed. The Errors window is also
the destination of any messages printed by the built-in commands.
_o Example of Operation. FIGs. 4-1 1
_OO25_ The interplay and consequences of these rules are easily seen by watching the system in action. In the fol-
Iowing example, the Help system is used tofix a simple bug in a program. The bug has been reported in a mail message
sent by a user named Sean.
__ _OO26_ When help starts it loads a set of'tools'into the right hand column of its initially two-column screen. These
are files with names like 1help1edi_stf (the stuff that the help editor provides), 1help1mail1stf, and so on. Each is a plain
te_ file that lists the names of the commands available as parts of the tool, collected in the appropriate directory. A help
window on such a file behaves much like a menu, but is really just a window on a plain file. The useful properties stem
from the interpretation of the file applied by the rules of help; they are not inherent in the file. Turning to FIG. 4, mail is
3o read by executing the program headers in the mail tool, that is, l clickthe middle mouse button on the word headers 4O3
in window 4O1 containing the file 1help1mail1stf. This executes the program 1help1mail1headers by prefixing the directory
name of the file 1help 1mail1stf, 4O5, collected from tag 4O7, to the executed word, headers. This simple mechanism
makes it easy to manage a collection of programs in a directory.
_OO2l_ As seen in FIG. 5, Headers creates a new window 5O1 containing the headers of the mail messages, and
3_ labels it 1maillbo_rob1mbox. l _ow Sean has sent me mail, so l point at header 5O3 of his mail _ust pointing with the
Ieft button anywhere in the header line will do) and click on messages 5O5. Help responds as shown in FIG. 6. It opens
a new window 6O1 in left-hand column 1 15(a). Message 6O3 is displayed in window 6O1 . Message 6O3 indicates that a
new version of help has crashed and a broken process lies about waiting to be examined. The message includes proc-
ess number 6O3 of the broken process; all that is needed to be done in order to look at the process's stack is to point
4o at process number 6O3 and execute stack 6O7 in the window 6O5 for the debugger tool, 1help1db1stf.
_OO28_ The result of the execution of the stack program is shown in FIG. 7. A new window, 7O1 , has appeared in
column 1 15(a). The contents 7O3 of window 7O1 are a a traceback of the calls made by the process. Notice that this
new window has many file names in it. These are e_racted from the symbol table of the broken program. One can look
at the line (of assembly language) that died by pointing at the entry 1sys1src1libc1mips/strchr.s_.34 7O5 and executing
4_ Open, but the problem probably lies further up the call stack. The deepest routine in help is textinsert 7O7, which calls
strlen on line 32 of the file te_.c. To look at the place where the trouble seems to have occurred, one points at the iden-
tifying te_ in the stackwindow and executes Open to see the source, which appears in window 8O1 of FIG. 8. The prob-
Iem is coming to light_. as indicated at 8O7, s, the argument to strlen, is zero and was passed as an argument to
te_insert bythe routine errs, which apparently also got it as an argument from xdie2. To close the window on te_.c, one
_o hits Close! 8O9 in the tag of window 8O1 . By convention, commands ending in an exclamation marktake no arguments;
they are window operations that apply to the window in which they are executed. The ne_ step is examining the source
of the suspiciously named xdie2 by pointing at stack trace 7O3 and Opening again.
_OO29_ Help responds as shown in FIG. 9. Window 9O1 contains line 252 (indicated by the reverse video) of exec.c.
Now the problem gets harder. The argument passed to errs 9O3 is a variable, n 9O5 that appears to be global. Who set
__ it to zero? The c browser tool 1help1cbr1stf, in window 9O9, lets me find out. The program uses*.c in that window displays
all references in a given file to a given variable. To employ uses*.c to find all references to the variable n in
Iusr1rob1src1help1*.c, one points at the variable in the source te_ and executes uses *.c by sweeping both 'words' with
the middle button in 1help1cbr1stf. As shown in FIG. 1 O, Uses creates a new window 1 OO1 with a list in which the loca-
5
EP O 51l 486 B1
tions of all references to the variable n in the files 1usr1rob1src1help1*.c are indicated by file name and line number. The
implementation of the C browser is described below; in a nutshell, it parses the C source to interpret the symbols
dynamically.
_OO3O_ The first item on the list in window 1 OO1 is clearly the declaration in the header file. It looks like help.c_.35
5 1 OO3 should be an initialization. To find out, one uses Open help.c to examine that line and see that the variable is
indeed initialized. The result of the Open is shown in FIG. 1 1 . Window 1 1 O1 shows line 35 of help.c at 1 1 O3. The line
indi CateS that n 9O5 waS Set_, Some other USe of n mUSt have Cleared it. Line 252 of exeC.C iS the Call_, that'S a read, not
a write, of the variable. The ne_ possibility is exec.c_.213; on pointing to that and again executing Open, window 1 1 O7
appears; as shown there at reverse video line 1 1 O9, n is set to O. Sometime before xdie2 was executed, xdie1 cleared
1o n. The bug isfixed by selecting Cut 1 1 1 1 to remove the offending line, selecting Put!, which appears in the tag of a mod-
ified window, to write the file back out and then selecting mk 1 1 13 in 1help1cbr to compile the program. It is worth noting
that the entire debugging operation of the example was done without touching the keyboard.
_OO31_ This demonstration illustrates several things besides the general flavor of help. It is easy to work with files
and commands in multiple directories. The rules by which help constructs file names from conte_ and, transitively, by
15 which the utilities derive the conte_ in which they execute simplify the management of programs and other systems
constructed from scattered components. Also, the few common rules about text and file names allow a variety of appli-
cations to interact through a single user interface. For example, none of the tool programs has any code to interact
directly with the keyboard or mouse. Instead help passes to an application the file and character offset of the mouse
position. Using the interface described in the next section, the application can then examine the te_ in the window to
_o see what the user is pointing at. These operations are easily encapsulated in simple shell scripts, an example of which
is given in the next section.
The interface seen by programs
_5 _OO32_ help provides its client processes access to its structure by presenting a file service, as described in Rob
Pike, et al., ''Plan 9 from Bell Labs'', Proc. of the Summer 199O UKUUG Conf., London, July, 199O, pp. 1 -9. Each help
window is represented by a set of files stored in numbered directories. The number of each directory is a unique iden-
tifier, similar to UNIX process id's. Each directory contains files such as tag and body, which may be read to recover the
contents of the corresponding subwindow, and ct1 , to which may be written messages to effect changes such as inser-
3o tion and deletion of text in contents of the window. The help directory is conventionally mounted at 1mnt1help, so to copy
the text in the body of window number 7 to a file, one may execute
cp 1mnUhelp17lbody file.
35 To search for a te_ pattern,
grep pattern 1mn_help17lbody
An ASCll file 1mnUhelp_ndex may be examined to connect tag file names to window numbers. Each line of this file is a
4o window number, a tab, and the first line of the tag.
_OO33_ To create a new window, a process just opens 1mnUhelp1new1ct1 , which places the new window automati-
cally on the screen near the current selected text, and may then read from thatfile the name of the window created, e.g.
Imn_help18. The position and size of the new window is, as usual, chosen by help.
45 Implementation of Components of the C Browser
_OO34_ The directory 1help1cbr contains the C browser we used above. One of the programs there is called decl; it
finds the declaration of the viable marked by the selected te_. Thus one points at a variable with the left button and then
executes dec1 in window 9O9 for the file 1help1cbr1stf. Help executes 1help1cbr1decl using the conte_ rules for the
5o e_ecuted text and passes it the context (window number and location) of the selected text through an environment via-
ble, helpsel.
_OO35_ Decl is a shell (rc) script. Here is the complete program_.
55 6
(_
EP O 51l 486 B1
eval ' ( help/parse -c )
5 x_ ' ( cat /_t /help/new/ct l ) .
1O ( echo a
15 echo Sdir/ ' CloSe ! '
) l help/bu_ > /mnt /helP/ Sx/ctl
2O
25 cpp Scpp_ lags S _i le l
help/rcc -w -g - i S id -nS l ine l sed l_
3O ) > /_t /help/ Sx/bodYaPP
35 The first line runs a small program, help Iparse, that examines $helpsel and establishes another set of environment var-
iables, file, id, and line, describing what the user is pointing at. The next creates a new window 1O3 and sets x to its
number. The first blockwrites the directory name to the tag line 1 O5; the second runs the C preprocessor on the original
4o SourCe file and paSSeS the reSulting text to a SpeCial verSion of the Compiler. ThiS Compiler haS no Code generator; it
parses the program and manages the symbol table, and when it sees the declaration for the indicated identifier on the
appropriate line of the file, it prints the file coordinates of that declaration. This appears on standard output, which is
appended to the new window by writing to 1mn_help1$_odyapp. The user can then point at the output to direct Open
to display the appropriate line in the source. (A future change to help will be to close this loop so the Open operation
45 aISo happenS automati Cally.) ThuS with only three button Cli CkS one may fetCh to the SCreen the deClaration, from what-
ever file in which it resides, the declaration of a variable, function, type, or any other C object.
_OO36_ A couple of observations about this example. First, help provided all the user interface. To turn a compiler
into a browser involved spending a few hours stripping the code generator from the compiler and then writing a half
dozen brief shell scripts to connect it up to the user interface for different browsing functions. Given another language,
5o we would need only to modify the compiler to achieve the same result. We would not need to write any user interface
software. Second, the resulting application is not a monolith. It is instead a small suite of tiny shell scripts that may be
tuned or toyed with for other purposes or experiments.
_OO3l_ Other applications are similarly designed. For example, the debugger interface, 1help1db, in window 6O5, is
a directory of ten or so brief shell scripts, about a dozen lines each, that connect adb to help. Adb has a notoriously
55 cryptic input language; the commands in 1help1db package the most important functions of adb as easy-to-use opera-
tions that connect to the rest of the system while hiding the rebarbative syntax. People unfamiliar with adb can easily
use help's interface to it to examine broken processes. Of course, this is hardly a full-featured debugger, but it was writ-
ten in about an hour and illustrates the principle. It is a prototype, and help is an easy-to-program environment in which
l
EP O 51l 486 B1
to build such test programs. A more sophisticated debugger could be assembled in a similar way, perhaps by leaving a
debugging process resident in the background and having the help commands send it requests.
_OO38_ The most important feature of help is that it provides a comfortable, easy-to-program user interface that all
applications may share. It greatly simplifies the job of providing an interactive 'front end' for a new application. Help is
5 able to serve as a prototyping system that provides the user interface for a windowing system, freeing the programmer
to concentrate on the job at hand, the construction of new software tools.
Conclusion
1o _OO39_ The foregoing has disclosed how one may make and use an improved user interface for computer systems
in which users interact with the system by means of a display device with windows and a mouse. In a preferred embod-
iment, a three-button mouse is employed; however, in other embodiments, other pointing devices may be employed.
Similarly, in a preferred embodiment, the windows are tiled onto the displaydevice; in other embodiments they may sim-
ply overlap. Further, while the preferred embodiment deals only with te_ strings displayed in windows, other embodi-
15 ments may deal also with icons and other representations of entities in windows. Finally, the techniques used to
separate tag and body and to indicate active locations may vary in other embodiments.
Claims
_o 1 . In a computing system having one or more windows (3O5), each of which displays text from a file belonging to a file
system in which each file has one of a plurality offile contexts (3O7) which are employed bythefile system to locate
the file, a method for providing an input to the computer system comprising_.
receiving a portion of the text selected by a user from anywhere in any given one of the windows; CHARAC-
_5 TERISED BY
associating each window with the file context for the file whose text is being displayed therein;
and automatically providing as the input the portion together with the file context for the given one of the win-
dows.
3o 2. The method set forth in claim 1 wherein_. the step of receiving a portion further includes the step of receiving an
indication from the user that the portion represents a file to be executed; and when the indication has been
received, the step of providing provides the file conte_ together with the portion as the name of a file to be exe-
cuted.
35 3. The method set forth in claim 1 wherein_. the step of receiving a portion further includes the step of receiving an
indication from the user that the portion represents an argument; and the step of providing provides the file context
together with the portion as the argument when the indication has been received.
4. The method set forth in claim 1 wherein_. the input to the computer system is a command to be executed by the
4o computer system and an argument for the command;
the step of receiving a portion includes the steps of_. receiving a first portion from a first one of the windows with
an indication from the user that the portion is to be used as an argument; receiving a second portion from a
second one of the windows with an indication from the user that the portion is a file to be executed; and
45 the step of providing includes the steps of providing the first portion as the argument and providing the file con-
text for the second one of the windows together with the second portion as the command.
5. The method set forth in claim 4 wherein_. the argument is a name of a file; and the step of providing the first portion
provides the first portion together with the file conte_ for the first one of the windows.
5O 6. The method set forth in any of claims 1 through 5 wherein_. the computing system further includes a shell for exe-
cuting commands; and the step of providing the file conte_ together with the portion as the input provides the input
to the shell as part of a command.
55 l. A graphical user interface for a computer system having a file system in which each file has one of a plurality of file
contexts (3O7) which are employed by the file system to locate the file, the graphical user interface comprising_.
one or more windows (3O5), each window displaying te_ from a file in the file system; and
8
EP O 51 l 486 B1
pointing means for specifying a position in one of the windows and including text selection means for selecting
text at the position and specifying the use of the selected text in the computer system; CHARACTERISED IN
THAT
each said window is associated with the file context for the file whose text is being displayed therein; and
_ said interface includes means responsive to the pointing means for automatically providing the selected text
from any one of the windows together with the file context associated with that window to be employed in the
computer system as specified by the te_ selection means.
8. The graphical user interface set forth in claim 7 wherein_.
1O the text selection means includes first means for specifying that the selected text is an argument and second
means for specifying that the selected text represents an executable file; and the means responsive to the
pointing means responds to the te_ selection means by providing the text and the file context specified by the
second means as the name of an executable file to be executed by the computer system and the text specified
1_ by the first means as an argument to be used in executing the executable file.
9. The graphical user interface set forth in claim 8 wherein_. the means responsive to the pointing means further
responds to the text selection means by providing the text and file context specified by the second means as a file
name argument to be used in executing the executable file.
2O 1 O. The graphical user interface set forth in any of claims 7 through 9 wherein_. the computer system further has a shell
for receiving commands; and the means responsive to the pointing means provides the selected text and the file
context to the shell.
2_ 1 1 . The graphical user interface set forth in claim 1 O wherein_. each of the windows is represented by a set of files in
the file system; and the computer system performs operations on a window by operating on one or more of the files
representing the window.
1 2. The graphical user interface set forth in any of claims 7 through 9 wherein_. each window further displays the file
3o context for the file whose te_ is being displayed therein.
Patentansprüche
1 . Verfahren in einem Computersystem mit einem oder mehreren Fenstern (3O5), die jeweils Text aus einer Datei
3_ anzeigen, die einem Dateisystem angehört, bei dem jede Datei einen einer Vielzahl von Dateikontexten (3O7) auf-
weist, die von dem Dateisystem zum Auffinden der Datei verwendet werden, zur Bereitstellung einer Eingabe für
das Computersystem, mit den folgenden Schritten_.
Empfangen eines Teils des Te_s, der von einem Benutzer aus einer beliebigen Stelle in einem beliebigen
4o gegebenen der Fenster ausgewählt wird; gekennzeichnet durch
Zuordnen jedes Fensters zu dem Dateikontext für die Datei, deren Text in ihm angezeigt wird;
und automatisches Bereitstellen des Teils zusammen mit dem Dateikontext für das gegebene der Fenster als
Eingabe.
4_ 2. Verfahren nach Anspruch 1 , wobei_. der Schritt des Empfangens eines Teils weiterhin den Schritt des Empfangens
einer Anzeige von dem Benutzer, dass der Teil eine auszuführende Datei darstellt; und wenn die Anzeige empfan-
gen wurde, der Schritt des Bereitstellens den Dateikontext zusammen mit dem Teil als den Namen einer auszufüh-
renden Datei bereitstellt, umfasst.
_o 3. Verfahren nach Anspruch 1 , wobei_. der Schritt des Empfangens eines Teils weiterhin den Schritt des Empfangens
einer Anzeige von dem Benutzer, dass der Teil ein Argument darstellt; und der Schritt des Bereitstellens den Datei-
kontext zusammen mit dem Teil als das Argument bereitstellt, wenn die Anzeige empfangen wurde, umfasst.
4. Verfahren nach Anspruch 1 , wobei_. die Eingabe für das Computersystem ein durch das Computersystem auszu-
__ führender Befehl und ein Argument für den Befehl ist;
der Schritt des Empfangens eines Teils die folgenden Schritte umfasst_. Empfangen eines ersten Teils aus
einem ersten der Fenster mit einer Anzeige von dem Benutzer, dass der Teil als ein Argument ve_endet wer-
9
EP O 51 l 486 B1
den soll; Empfangen eines zweiten Teils aus einem zweiten der Fenster mit einer Anzeige von dem Benutzer,
dass der Teil eine auszuführende Datei ist; und
der Schritt des Bereitstellens die Schritte Bereitstellen des ersten Teils als das Argument und Bereitstellen des
Dateikonte_s für das zweite der Fenster zusammen mit dem zweiten Teils als den Befehl umfasst.
5 5. Verfahren nach Anspruch 4, wobei_. das Argument ein Name einer Datei ist; und der Schritt des Bereitstellens des
ersten Teils den ersten Teil zusammen mit dem Dateikontext für das erste der Fenster bereitstellt.
6. Verfahren nach einem der Ansprüche 1 bis 5, wobei_. das Computersystem weiterhin eine Shell zur Ausführung von
1o Befehlen enthält; und der Schritt des Bereitstellens des Dateikontexts zusammen mit dem Teil als die Eingabe die
Eingabe für die Shell als Teil eines Befehls bereitstellt.
l. Graphische Benutzeroberfläche für ein Computersystem mit einem Dateisystem, bei dem jede Datei einen einer
Vielzahl von Dateikonte_en (3O7) aufweist, die von dem Dateisystem zum Auffinden der Datei ve_endet werden,
15 wobei die graphische Benutzeroberfläche folgendes umfasst_.
ein oder mehrere Fenster (3O5), wobei jedes Fenster Te_ aus einer Datei in dem Dateisystem anzeigt; und
ein Zeigemittel zum Angeben einer Position in einem der Fenster einschließlich eines Textauswahlmittels zum
Auswählen von Te_ an der Position und zum Angeben der Verwendung des ausgewählten Texts in dem Com-
2o putersystem; dadurch gekennzeichnet, dass
jedes Fenster dem Dateikontext für die Datei zugeordnet ist, deren Text in ihm angezeigt wird; und
die Oberfläche ein Mittel enthält, das auf das Zeigemittel reagiert, um automatisch den ausgewählten Text aus
einem beliebigen der Fenster zusammen mit dem diesem Fenster zugeordneten Dateikontext zur durch das
Textauswahlmittel angegebenen Benutzung in dem Computersystem bereitzustellen.
25 8. Graphische Benutzeroberfläche nach Anspruch 7, wobei_.
das Textauswahlmittel ein erstes Mittel zum Angeben, dass der ausgewählte Text ein Argument ist, und ein
zweites Mittel zum Angeben, dass der ausgewählte Te_ eine ausführbare Datei darstellt, enthält; und das Mit-
3o tel, das auf das Zeigemittel reagiert, auf das Te_auswahlmittel reagiert, indem es den Te_ und den durch das
zweite Mittel angegebenen Dateikonte_ als den Namen einer durch das Computersystem auszuführenden
ausführbaren Datei und den durch das erste Mittel angegebenen Text als ein bei der Ausführung der ausführ-
baren Datei zu ve_endendes Argument bereitstellt.
35 9. Graphische Benutzeroberfläche nach Anspruch 8, wobei_. das Mittel, das auf das Zeigemittel reagiert, weiterhin auf
das Textauswahlmittel reagiert, indem es den Text und den durch das zweite Mittel angegebenen Dateikontext als
ein bei der Ausführung der ausführbaren Datei zu ve_endendes Dateinamenargument bereitstellt.
1 O. Graphische Benutzeroberfläche nach einem der Ansprüche 7 bis 9, wobei_. das Computersystem weiterhin eine
4o Shell zum Empfangen von Befehlen aufweist; und das Mittel, das auf das Zeigemittel reagiert, den ausgewählten
Te_ und den Dateikontext der Shell bereitstellt.
1 1 . Graphische Benutzeroberfläche nach Anspruch 1 O, wobei_. jedes der Fenster durch eine Menge von Dateien in
dem Dateisystem dargestellt wird; und das Computersystem Operationen an einem Fenster ausführt, indem es an
45 einer oder mehreren der Dateien, die das Fenster darstellen, Operationen ausführt.
1 2. Graphische Benutzeroberfläche nach einem der Ansprüche 7 bis 9, wobei_. jedes Fenster weiterhin den Dateikon-
te_ für die Datei anzeigt, deren Text in ihm angezeigt wird.
5o Revendications
1 . Dans un système d'ordinateur ayant une ou plusieurs fenêtres (3O5), lesquelles affichent chacune un texte prove-
nant d'un fichier appartenant à un système de fichiers dans lequel chaque fichier a l'un d'une pluralité de conte_es
de fichier (3O7) qui sont employés par le système de fichiers en vue de localiser le fichier, procédé pour fournir une
55 entrée au système d'ordinateur comprenant _.
Ia réception d'une partie du texte sélectionné par un utilisateur depuis un endroit quelconque dans n'importe
quelle fenêtre donnée des fenêtres ; CARACTERISE PAR
1 O
EP O 51 l 486 B1
l'association à chaque fenêtre du contexte de fichier du fichier dont le texte est affiché dans la fenêtre ;
et la fourniture automatique comme entrée de la partie ainsi que du contexte de fichier pour la fenêtre donnée
des fenêtres.
5 2. Procédé selon la revendication 1 , dans lequel _. l'étape de réception d'une partie comporte en outre l'étape de
réception d'une indication par l'utilisateur que la partie représente un fichier à exécuter ; et quand l'indication a été
reçue, l'étape de fourniture fournit le conte_e du fichier ainsi que la partie comme nom d'un fichier à exécuter.
3. Procédé selon la revendication 1 , dans lequel _. l'étape de réception d'une partie comporte en outre l'étape de
1o réception d'une indication par l'utilisateur que la partie représente un argument ; et l'étape de fourniture fournit le
contexte de fichier ainsi que la partie comme argument quand l'indication a été reçue.
4. Procédé selon la revendication 1 , dans lequel _. l'entrée dans le système d'ordinateur est une commande devant
être exécutée par le système d'ordinateur et un argument pour la commande ;
15 l'étape de réception d'une partie comporte les étapes de _. réception d'une première partie à partir d'une pre-
mière des fenêtres avec une indication par l'utilisateur que la partie doit être utilisée comme argument ; récep-
tion d'une deuxième partie à partir d'une deuxième des fenêtres avec une indication par l'utilisateur que la
partie est un fichier à exécuter ; et
2o l'étape de fourniture comporte les étapes de fourniture de la première partie comme argument et de fourniture
du contexte de fichier pour la deuxième des fenêtres ainsi que de la deuxième partie comme commande.
5. Procédé selon la revendication 4, dans lequel _. l'argument est un nom d'un fichier ; et l'étape de fourniture de la
première partie fournit la première partie ainsi que le contexte de fichier pour la première des fenêtres.
25 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel _. Ie système d'ordinateur comporte en outre
un interpréteur de commandes pour exécuter des commandes ; et l'étape de fourniture du contexte de fichier ainsi
que de la partie comme entrée fournit l'entrée à l'interpréteur de commandes comme partie d'une commande.
3o l. Interface utilisateur graphique pour un système d'ordinateur ayant un système de fichiers dans lequel chaque
fichier a l'un d'une pluralité de contextes de fichier (3O7) qui sont employés par le système de fichiers en vue de
Iocaliser le fichier, l'interface utilisateur graphique comprenant _.
une ou plusieurs fenêtres (3O5), chaque fenêtre affichant un texte provenant d'un fichier dans le système de
35 fiChierS _, et
un moyen de pointage pour spécifier une position dans l'une des fenêtres et comportant un moyen de sélection
de texte pour sélectionner un texte à cette position et spécifier l'utilisation du texte sélectionné dans le système
d'ordinateur ; CARACTERISEE EN CE QUE
à chaque dite fenêtre est associé le contexte de fichier du fichier dont le texte est affiché dans la fenêtre ; et
4o ladite interface comporte un moyen sensible au moyen de pointage pour fournir automatiquement le texte
sélectionné à partir de l'une quelconque des fenêtres ainsi que le contexte de fichier associé à cette fenêtre
devant être employé dans le système d'ordinateur tel que spécifié par le moyen de sélection de te_e.
8. Interface utilisateur graphique selon la revendication 7, dans laquelle _.
45 le moyen de sélection de texte comporte un premier moyen pour spécifier que le texte sélectionné est un argu-
ment et un deuxième moyen pour spécifier que le texte sélectionné représente un fichier exécutable ; et le
moyen sensible au moyen de pointage répond au moyen de sélection de te_e en fournissant le te_e et le con-
texte de fichier spécifiés par le deuxième moyen comme le nom d'un fichier exécutable devant être exécuté par
5o le système d'ordinateur et le te_e spécifié par le premier moyen comme un argument devant être utilisé dans
l'exécution du fichier exécutable.
9. Interface utilisateur graphique selon la revendication 8, dans laquelle _. Ie moyen sensible au moyen de pointage
répond en outre au moyen de sélection de te_e en fournissant le te_e et le contexte de fichier spécifiés par le
55 deuxième moyen comme un argument de nom de fichier devant être utilisé dans l'exécution du fichier exécutable.
1 O. Interface utilisateur graphique selon l'une quelconque des revendications 7 à 9 dans laquelle _. Ie système d'ordina-
teur comporte en outre un interpréteur de commandes pour recevoir des commandes ; et le moyen sensible au
EP O 51 l 486 B1
moyen de pointage fournit le texte sélectionné et le conte_e de fichier à l'interpréteur de commandes.
1 1 . Interface utilisateur graphique selon la revendication 1 O, dans laquelle _. chacune des fenêtres est représentée par
un ensemble de fichiers dans le système de fichiers ; et le système d'ordinateur effectue des opérations sur une
5 fenêtre en agissant sur un ou plusieurs des fichiers représentant la fenêtre.
1 2. Interface utilisateur graphique selon l'une quelconque des revendications 7 à 9, dans laquelle _. chaque fenêtre affi-
che en outre le contexte de fichier du fichier dont le texte est affiché dans la fenêtre.
1O
15
2O
25
3O
35
4O
45
5O
55 1 2
1
1 (PICTURE)
EP O 51l 486 B1
FIGl 1
(PICTURE)
(PICTURE) 1 1_(a)(PICTURE) _ 1 1_(tt)_)
_ FlGl 2
13
(PICTURE)
(PICTURE)
EP O 51l 486 B1
Fl__ 3
3Ofi
_ F___ 4 _4_O1
14
____(
(PICTURE)(PICTURE)
_ _
_____
EP O 51l 486 B1
Fl__ _ 4_Oj 1
5Oj
t 1
_
Fl__ 6
_
6_
_O' 5
6Oi
1 1 15(a)
_
____(PICTURE)_
(PICTURE)(PICTURE)
_
EP O 51l 486 B1
FIGI 7
_O'I,_ 1 FlG_ 8
8O___
8Oi
1 16
(PICTURE)
(PICTURE)_
EP O 51l 486 B1
Fl__ 9 9__O,. 9
9O(i
1 _l_I 1 O 1 OO' 1
1l
__ (PICTURE)
EP O 51l 486 B1
FIGl 1 1
11_i
7
1 1OI, 1
II,i 18