Graphical User Interface

Graphical User Interface (GUI) allows users to interact with electronic devices with the help of images, icons and indicators along with text. It has played a great role in making it easier for people with non-technical background to learn how to use electronic devices like a computer. Its predecessor, Command Line Interface (CLI) requires a user to type in commands instead of using the now popular graphical interface. CLI is still popular among people with good technical background because it often works faster using much less resources than GUI. GUI continues to become more and more intuitive to use.

History of GUI

The history of GUI coincides with the history of personal computers. The first ever personal computer Xerox Alto is the first ever computer to use a graphical interface instead of command line. It was used extensively at PARC (then Xerox PARC) where it was developed. Even 41 years ago - a long time in the world of computers, Xerox Alto used mouse as a pointing device and had most of the features of a modern GUI. The PARC interface is now popular as WIMP which stands for Windows, Icons, Menus and Pointing device. It is very obvious that GUIs followed the WIMP paradigm for several years without significant improvements. This led to the emergence of post-WIMP interfaces like the now hugely popular touch interface.

Widgets

Widgets are the elements of a GUI. They vary in size and shape which is decided by a GUI designer so that they suit an application. Nowadays there are several toolkits and GUI designer software to assist designers which themselves have graphical interfaces. A WIMP interface is considered here because most of the post-WIMP interfaces use elements of the WIMP interface too.

Window

A window is the largest widget in a WIMP interface. It acts as a frame to contain other smaller widgets. Most modern GUIs allow Windows to be resized to allow maximum utilization of available screen size. Windows can be hidden and made visible, actions popularly known as minimizing and maximizing.

Icons

An icon is a small image that represents objects, applications or functions. For example, an icon that looks like a musical note may represent a music file.

Menus

Menus may be represented by icons or simply by their names on which when clicked reveals a list of commands that can be executed. It is common to use a 'menu bar' from which menus can be accessed but it is becoming less popular.

Pointing device

A pointing device is generally a mouse. A mouse can change the position of mouse pointer visible on the screen and perform some action on the click of buttons. Modern GUIs enable muse to be used in many other ways. The pointing device need not be a mouse. Other examples are touch pads, joy sticks and the stylus.

Widget Toolkits

Widget Toolkits help in creating a GUI by offering a range of widgets to be used. A few examples of toolkits are the GIMP toolkit (GTK+), Qt and Quartz. Most of them work with a window manager and an operating system for which they are designed but many are cross-platform.

Desktop Environments

Graphical User Interfaces often have desktop environments. A desktop environment offers programs that share a common graphical interface. This improves the user friendliness of an interface. Some operating systems, mostly proprietary come with a default desktop environment designed to fit perfectly with them that a user cannot change. Free distributions generally offer the user the freedom to choose an environment of his/her liking. Although the term desktop environment is associated with GUIs for a desktop PC smaller mobile devices also comes with uniform interfaces. To understand desktop environments we will consider the example of Gnome Desktop Environment popular in many UNIX based operating systems of the BSD and Gnu\Linux family. The Gnome desktop is free ('libre' not 'gratis') software developed by the community of Gnome Project.

Gnome Desktop

Window Managers

While a desktop environment can ensure a uniform interface it is necessary that the windows and the widgets contained within it are placed appropriately. This function is performed by a windows manager. The Gnome Desktop Environment uses 'mutter' for window managing. It previously used 'metacity' for the same. Over a hundred window managers are available for UNIX systems. 'KWin', 'Xfwm', 'Fluxbox', 'awesome' and 'IceWM' are a few of them.

'Mutter' and 'KWin' are compositing window managers. They can apply various effects like blurring transparent regions, fade while closing, expanding the virtual screen size of computers using virtual desktops and more. They can also offer 3D effects by drawing a shadow around the window decoration and using transparency. IceWM and Fluxbox are stacking window managers. Awesome is a tiling window manager. Xfwm is the window manager used in the XFCE desktop environment.

Windows manager

Windowing systems

Multiple windows are often opened by a user. A windowing system allows users to overlap a window over the other, tile windows, resize them and move them within the screen. Gnome desktop or the Gnome Shell runs on an X Window System and Wayland. The X Window System has been the most popular among UNIX systems since the 1980s. Focus is now shifting to Wayland so that a much simpler windowing system can be in offer.

Post-WIMP interfaces

Post-WIMP interfaces became popular when smartphones became popular with the adoption of multi-touch in smartphones and other small mobile personal devices. The WIMP paradigm which was consistent with large screen devices could not solely serve the needs of widely popular smartphones. Since touch screens allowed better utilisation of screen space largely due to the fact that they use on-screen keyboards and they offered new techniques to interact with the devices post-WIMP interfaces received wide reception. Post-WIMP interfaces are not restricted to touch devices. There are other techniques like gesture recognition, voice recognition, zooming interfaces and more that are employed in other post-WIMP using devices. Post-WIMP interfaces though, may not always be the right choice over WIMP interfaces just as CLI is better suited for many applications than GUI. Complex tasks often become difficult to perform with a post-WIMP interface.