Contents |
A graphical user interface or GUI is a type of user interface which allows people to interact with a computer and computer controlled devices which employ graphical icons, visual indicators or special graphical elements called “widgetsâ€, along with text, labels or text navigation to represent the information and actions available to a user. The actions are usually performed through direct manipulation of the graphical elements.
The term GUI is historically restricted to the scope of flat screens with high resolution graphics capable of describing generic information, in the tradition of the research at Palo Alto Research Centre (PARC). The term does not apply to other high resolution types of interfaces that are non generic, such as videogames, or not restricted to flat screens, like volumetric displays.
The precursor to GUI’s was invented by researchers at the Stanford Research Institute, led by Douglas Engelbart. They developed the use of text based hyperlinks manipulated with a mouse for the On Line System. The concept of hyperlinks was further refined and extended to graphics by researchers at Xerox PARC, who went beyond text based hyperlinks and used a GUI as the primary interface for the Xerox Alto computer. Most modern general purpose GUI’s are derived from this system. As a result, some people call this class of interface PARC User Interface.
The PARC User Interface consists of graphical widgets such as windows, menus, radio buttons, check boxes and icons. The PARC User Interface employs a pointing device in addition to a keyboard. These aspects can be emphasized by using the alternative acronym.
Following PARC the first commercially successful GUI centric computer operating models were those of the Apple Lisa but more successfully that of Macintosh System graphical environment. The GUI’s familiar to most people today are Microsoft Windows, Mac OS X, and the X Window System interfaces. IBM and Microsoft used many Apple’s ideas to develop the Common User Access specifications that formed the basis of the user interface found in Microsoft Windows, IBM OS/2 Presentation Manager, and the Unix Motif toolkit and window manager. These ideas evolved to create the interface found in current versions of the Windows operating system, as well as in Mac OS X and various desktop environments for Unix like systems. Thus the most current GUI’s have largely common idioms.
GUI design is an important part of application programming. Its goal is to enhance the efficiency and ease of use for the underlying logical design of a stored program, a design discipline known as usability. The visible graphical interface features of an application are sometimes referred to as “chromeâ€. They include graphical elements (widgets) that may be used to interact with the program. Common widgets are: windows, buttons, menus, and scroll bars. Larger widgets, such as windows, usually provide a frame or container for the main presentation content such as a web page, email message or drawing. Smaller ones usually act as a user input tool.
The widgets of a well designed system are functionally independent from and indirectly linked to program functionality, so the GUI can be easily customized, allowing the user to select or design a different skin at will.
GUI’s were introduced in reaction to the steep learning curve of command line interfaces (CLI), which require commands to be typed on the keyboard. Since the commands available in command line interfaces can be numerous, complicated operations can be completed using a short sequence of words and symbols. This allows for greater efficiency and productivity once many commands are learned, but reaching this level takes some time because the command words are not easily discoverable. WIMP’s (“window, icon, menu, pointing deviceâ€), on the other hand, present the user with numerous widgets that represent and can trigger some of the system’s available commands.
WIMP’s extensively use modes as the meaning of all keys and all clicks on specific positions on the screen are redefined all the time. CLI’s use modes only in limited forms, such as the current directory and environment variables.
Most modern operating systems provide both a GUI and some level of a CLI, although the GUI’s usually receive more attention. The GUI is usually WIMP based, although occasionally other metaphors surface, such as those used in Microsoft Bob, 3dwm or File System Visualizer (FSV).