Each widget facilitates a specific type of user-computer
interaction, and appears as a visible part of the application's GUI as
defined by the theme and rendered by the rendering engine. The theme
makes all widgets adhere to a unified aesthetic design and creates a
sense of overall cohesion. Some widgets support interaction with the
user, for example labels, buttons, and check boxes. Others act as containers that group the widgets added to them, for example windows, panels, and tabs.
Structuring a user interface with widget toolkits
allows developers to reuse code for similar tasks, and provides users
with a common language for interaction, maintaining consistency
throughout the whole information system.
The toolkit provides a library of user-interface components
("widgets") like text labels, scroll bars, command buttons, and menus;
enables programmers to write new widgets; and provides the glue to
assemble widgets into a complete user interface.
The same year, in the manual X Toolkit Widgets - C Language X Interface by Ralph R. Swick and Terry Weissman, it says:
In the X Toolkit, a widget is the combination of an X window or sub window and its associated input and output semantics.
Finally, still in the same year, Ralph R. Swick and Mark S. Ackerman explain where the term widget came from:
We chose this term since all other common terms were overloaded with
inappropriate connotations. We offer the observation to the skeptical,
however, that the principal realization of a widget is its associated X
window and the common initial letter is not un-useful.
Usage
Any widget displays an information arrangement changeable by the user, such as a window or a text box. The defining characteristic of a widget is to provide a single interaction point for the direct manipulation
of a given kind of data. In other words, widgets are basic visual
building blocks which, combined in an application, hold all the data
processed by the application and the available interactions on this
data.
GUI widgets are graphical elements used to build the human-machine-interface of a program. GUI widgets are implemented like software components. Widget toolkits and software frameworks, like e.g. GTK+ or Qt, contain them in software libraries so that programmers can use them to build GUIs for their programs.
A family of common reusable widgets has evolved for holding general information based on the Palo Alto Research Center Inc. research for the Xerox Alto User Interface. Various implementations of these generic widgets are often packaged together in widget toolkits,
which programmers use to build graphical user interfaces (GUIs). Most
operating systems include a set of ready-to-tailor widgets that a
programmer can incorporate in an application, specifying how it is to
behave. Each type of widget generally is defined as a class by object-oriented programming (OOP). Therefore, many widgets are derived from class inheritance.
In the context of an application, a widget may be enabled or disabled
at a given point in time. An enabled widget has the capacity to
respond to events, such as keystrokes or mouse actions. A widget that
cannot respond to such events is considered disabled. The appearance of
a widget typically differs depending on whether it is enabled or
disabled; when disabled, a widget may be drawn in a lighter color ("grayed out") or be obscured visually in some way. See the adjacent image for an example.
The benefit of disabling unavailable controls rather than hiding
them entirely is that users are shown that the control exists but is
currently unavailable (with the implication that changing some other
control may make it available), instead of possibly leaving the user
uncertain about where to find the control at all. On pop-up dialogues,
buttons might appear greyed out shortly after appearance to prevent
accidental clicking or inadvertent double-tapping.
Widgets are sometimes qualified as virtual to distinguish them from their physical counterparts, e.g. virtual buttons that can be clicked with a pointer, vs. physical buttons that can be pressed with a finger (such as those on a computer mouse).
A related (but different) concept is the desktop widget,
a small specialized GUI application that provides some visual
information and/or easy access to frequently used functions such as
clocks, calendars, news aggregators, calculators and desktop notes.
These kinds of widgets are hosted by a widget engine.
Button – control which can be clicked upon to perform an action. An equivalent to a push-button as found on mechanical or electronic instruments.
Radio button
– control which can be clicked upon to select one option from a
selection of options, similar to selecting a radio station from a group
of buttons dedicated to radio tuning. Radio buttons always appear in
pairs or larger groups, and only one option in the group can be selected
at a time; selecting a new item from the group's buttons also
de-selects the previously selected button.
Check box
– control which can be clicked upon to enable or disable an option.
Also called a tick box. The box indicates an "on" or "off" state via a check mark/tick ☑ or a cross ☒. Can be shown in an intermediate state (shaded or with a dash) to indicate that various objects in a multiple selection
have different values for the property represented by the check box.
Multiple check boxes in a group may be selected, in contrast with radio
buttons.
Toggle switch
- Functionally similar to a check box. Can be toggled on and off, but
unlike check boxes, this typically has an immediate effect.
Toggle Button - Functionally similar to a check box, works as a switch, though appears as a button. Can be toggled on and off.
Split button – control combining a button (typically invoking some
default action) and a drop-down list with related, secondary actions
Cycle button - a button that cycles its content through two or more values, thus enabling selection of one from a group of items.
Slider
– control with a handle that can be moved up and down (vertical slider)
or right and left (horizontal slider) on a bar to select a value (or a
range if two handles are present). The bar allows users to make
adjustments to a value or process throughout a range of allowed values.
List box
– a graphical control element that allows the user to select one or
more items from a list contained within a static, multiple line text
box.
Spinner – value input control which has small up and down buttons to step through a range of values
Drop-down list – A list of items from which to select. The list normally only displays items when a special button or indicator is clicked.
Menu – control with multiple actions which can be clicked upon to choose a selection to activate
Context menu – a type of menu whose contents depend on the context or state in effect when the menu is invoked
Pie menu – a circular context menu where selection depends on direction
Menu bar – a graphical control element which contains drop down menus
Toolbar – a graphical control element on which on-screen buttons, icons, menus, or other input or output elements are placed
Ribbon – a hybrid of menu and toolbar, displaying a large collection of commands in a visual layout through a tabbed interface.
Combo box (text box with attached menu or List box) – A combination of a single-line text box and a drop-down list or list box, allowing the user to either type a value directly into the control or choose from the list of existing options.
Icon – a quickly comprehensible symbol of a software tool, function, or a data file.
Tree view – a graphical control element that presents a hierarchical view of information
Link
– Text with some kind of indicator (usually underlining and/or color)
that indicates that clicking it will take one to another screen or page.
Tab – a graphical control element that allows multiple documents or panels to be contained within a single window
Scrollbar
– a graphical control element by which continuous text, pictures, or
any other content can be scrolled in a predetermined direction (up,
down, left, or right)
Text/value input
Text box – (edit field) - a graphical control element intended to enable the user to input text
Status bar – a graphical control element which poses an information area typically found at the window's bottom
Progress bar
– a graphical control element used to visualize the progression of an
extended computer operation, such as a download, file transfer, or
installation
Infobar – a graphical control element used by many programs to display non-critical information to a user
Container
Window
– a graphical control element consisting of a visual area containing
some of the graphical user interface elements of the program it belongs
to
Collapsible panel – a panel that can compactly store content which is hidden or revealed by clicking the tab of the widget.
Drawer:
Side sheets or surfaces containing supplementary content that may be
anchored to, pulled out from, or pushed away beyond the left or right
edge of the screen.
Accordion
– a vertically stacked list of items, such as labels or thumbnails
where each item can be "expanded" to reveal the associated content
Modal window
– a graphical control element subordinate to an application's main
window which creates a mode where the main window can not be used.
Dialog box – a small window that communicates information to the user and prompts for a response
Palette window
– also known as "Utility window" - a graphical control element which
floats on top of all regular windows and offers ready access tools,
commands or information for the current application
Inspector window
– a type of dialog window that shows a list of the current attributes
of a selected object and allows these parameters to be changed on the
fly
Frame – a type of box within which a collection of graphical control elements can be grouped as a way to show relationships visually
Canvas – generic drawing element for representing graphical information
Cover Flow
– an animated, three-dimensional element to visually flipping through
snapshots of documents, website bookmarks, album artwork, or
photographs.
Bubble Flow – an animated, two-dimensional element that allows users to browse and interact the entire tree view of a discussion thread.
Carousel (computing)
– a graphical widget used to display visual cards in a way that's quick
for users to browse, both on websites and on mobile apps
Graphical user interface elements are those elements used by graphical user interfaces (GUIs) to offer a consistent visual language
to represent information stored in computers. These make it easier for
people with few computer skills to work with and use computer software.
This article explains the most common elements of visual language interfaces found in the WIMP ("window, icon, menu, pointer") paradigm, although many are also used at other graphical post-WIMP interfaces. These elements are usually embodied in an interface using a widget toolkit or desktop environment.
Structural elements
Graphical
user interfaces use visual conventions to represent the generic
information shown. Some conventions are used to build the structure of
the static elements on which the user can interact, and define the
appearance of the interface.
A window is an area on the screen that displays information, with its
contents being displayed independently from the rest of the screen. An
example of a window is what appears on the screen when the "My
Documents" icon is clicked in Microsoft Windows. It is easy for a user to manipulate a window: it can be shown and hidden by clicking on an icon or application,
and it can be moved to any area by dragging it (that is, by clicking in
a certain area of the window – usually the title bar along the top –
and keeping the pointing device's button pressed, then moving the
pointing device). A window can be placed in front or behind another
window, its size can be adjusted, and scrollbars can be used to navigate
the sections within it. Multiple windows can also be open at one time,
in which case each window can display a different application or file –
this is very useful when working in a multitasking environment. The
system memory is the only limitation to the number of windows that can
be open at once. There are also many types of specialized windows.
A container window encloses other windows or controls.
When it is moved or resized, the enclosed items move, resize, reorient,
or are clipped by the container window.
A browser window allows the user to view and navigate through a collection of items, such as files or web pages. Web browsers are an example of these types of windows.
Text terminal windows present a character-based, command-driven text user interfaces within the overall graphical interface. MS-DOS and Unix
consoles are examples of these types of windows. Terminal windows often
conform to the hotkey and display conventions of CRT-based terminals
that predate GUIs, such as the VT-100.
A child window opens automatically or as a result of a user activity in a parent window. Pop-up windows on the Internet can be child windows.
A message window, or dialog box,
is a type of child window. These are usually small and basic windows
that are opened by a program to display information to the user and/or
get information from the user. They almost always have one or more
buttons, which allow the user to dismiss the dialog with an affirmative,
negative, or neutral response.
Menu
Menus allow
the user to execute commands by selecting from a list of choices.
Options are selected with a mouse or other pointing device within a GUI.
A keyboard may also be used. Menus are convenient because they show
what commands are available within the software. This limits the amount of documentation the user reads to understand the software.
A menu bar
is displayed horizontally across the top of the screen and/or along the
tops of some or all windows. A pull-down menu is commonly associated
with this menu type. When a user clicks on a menu option the pull-down
menu will appear.
A menu
has a visible title within the menu bar. Its contents are only revealed
when the user selects it with a pointer. The user is then able to
select the items within the pull-down menu. When the user clicks
elsewhere the content of the menu will disappear.
A context menu
is invisible until the user performs a specific mouse action, like
pressing the right mouse button. When the software-specific mouse action
occurs the menu will appear under the cursor.
Menu extras are individual items within or at the side of a menu.
Icons
An icon
is a small picture that represents objects such as a file, program, web
page, or command. They are a quick way to execute commands, open
documents, and run programs. Icons are also very useful when searching
for an object in a browser list, because in many operating systems all
documents using the same extension will have the same icon.
Interface elements known as graphical control elements, controls or widgets are software components that a computer user interacts with through direct manipulation
to read or edit information about an application. Each widget
facilitates a specific user-computer interaction. Structuring a user
interface with Widget toolkits
allow developers to reuse code for similar tasks, and provides users
with a common language for interaction, maintaining consistency
throughout the whole information system.
A tab
is typically a rectangular small box which usually contains a text
label or graphical icon associated with a view pane. When activated the
view pane, or window, displays widgets associated with that tab; groups
of tabs allow the user to switch quickly between different widgets. This
is used in all modern web browsers. With these browsers, you can have multiple web pages open at once in
one window, and quickly navigate between them by clicking on the tabs
associated with the pages. Tabs are usually placed in groups at the top
of a window, but may also be grouped on the side or bottom of a window.
Tabs are also present in the settings panes of many applications.
Microsoft Windows, for example, uses tabs in most of its control panel
dialogues.
Interaction elements
Some common idioms
for interaction have evolved in the visual language used in GUIs.
Interaction elements are interface objects that represent the state of
an ongoing operation or transformation, either as visual remainders of
the user intent (such as the pointer), or as affordances showing places where the user may interact.
A cursor is an indicator used to show the position on a computer
monitor or other display device that will respond to input from a text
input or pointing device.
The caret, text cursor or insertion point represents the point of the user interface where the focus is located. It represents the object that will be used as the default subject of user-initiated commands such as writing text, starting a selection or a copy-paste operation through the keyboard.
Selection
A selection
is a list of items on which user operations will take place. The user
typically adds items to the list manually, although the computer may
create a selection automatically.
Adjustment handle
A handle is an indicator of a starting point for a drag and drop
operation. Usually the pointer shape changes when placed on the handle,
showing an icon that represents the supported drag operation.
In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphical shell. The desktop environment was seen mostly on personal computers until the rise of mobile computing.
Desktop GUIs help the user to easily access and edit files, while they
usually do not provide access to all of the features found in the
underlying operating system. Instead, the traditional command-line interface (CLI) is still used when full control over the operating system is required.
A desktop environment typically consists of icons, windows, toolbars, folders, wallpapers and desktop widgets (see Elements of graphical user interfaces and WIMP). A GUI might also provide drag and drop functionality and other features that make the desktop metaphor
more complete. A desktop environment aims to be an intuitive way for
the user to interact with the computer using concepts which are similar
to those used when interacting with the physical world, such as buttons
and windows.
While the term desktop environment originally described a
style of user interfaces following the desktop metaphor, it has also
come to describe the programs that realize the metaphor itself. This usage has been popularized by projects such as the Common Desktop Environment, KDE, and
GNOME.
Implementation
On a system that offers a desktop environment, a window manager in conjunction with applications written using a widget toolkit are generally responsible for most of what the user sees. The window manager supports the user interactions with the environment, while the toolkit provides developers a software library for applications with a unified look and behavior.
A windowing system of some sort generally interfaces directly with the underlying operating system
and libraries. This provides support for graphical hardware, pointing
devices, and keyboards. The window manager generally runs on top of this
windowing system. While the windowing system may provide some window
management functionality, this functionality is still considered to be
part of the window manager, which simply happens to have been provided
by the windowing system.
Applications that are created with a particular window manager in mind usually make use of a windowing toolkit, generally provided with the operating system or window manager. A windowing toolkit gives applications access to widgets that allow the user to interact graphically with the application in a consistent way.
The first desktop environment was created by Xerox and was sold with the Xerox Alto
in the 1970s. The Alto was generally considered by Xerox to be a
personal office computer; it failed in the marketplace because of poor
marketing and a very high price tag. With the Lisa, Apple introduced a desktop environment on an affordable personal computer, which also failed in the market.
The desktop metaphor was popularized on commercial personal computers by the original Macintosh from Apple in 1984, and was popularized further by Windows from Microsoft since the 1990s. As of 2014, the most popular desktop environments are descendants of these earlier environments, including the Windows shell used in Microsoft Windows, and the Aqua environment used in macOS. When compared with the X-based desktop environments available for Unix-like operating systems such as Linux and BSD, the proprietary
desktop environments included with Windows and macOS have relatively
fixed layouts and static features, with highly integrated "seamless"
designs that aim to provide mostly consistent customer experiences
across installations.
Microsoft Windows dominates in marketshare among personal
computers with a desktop environment. Computers using Unix-like
operating systems such as macOS, ChromeOS, Linux, BSD or Solaris are
much less common; however, as of 2015 there is a growing market for low-cost Linux PCs using the X Window System or Wayland with a broad choice of desktop environments. Among the more popular of these are Google's Chromebooks and Chromeboxes, Intel's NUC, the Raspberry Pi, etc.
On tablets and smartphones, the situation is the opposite, with
Unix-like operating systems dominating the market, including the iOS (BSD-derived), Android, Tizen, Sailfish and Ubuntu (all Linux-derived). Microsoft's Windows phone, Windows RT and Windows 10
are used on a much smaller number of tablets and smartphones. However,
the majority of Unix-like operating systems dominant on handheld devices
do not use the X11 desktop environments used by other Unix-like
operating systems, relying instead on interfaces based on other
technologies.
On systems running the X Window System (typically Unix-family systems such as Linux, the BSDs, and formal UNIX
distributions), desktop environments are much more dynamic and
customizable to meet user needs. In this context, a desktop environment
typically consists of several separate components, including a window manager (such as Mutter or KWin), a file manager (such as Files or Dolphin), a set of graphical themes, together with toolkits (such as GTK+ and Qt) and libraries
for managing the desktop. All these individual modules can be exchanged
and independently configured to suit users, but most desktop
environments provide a default configuration that works with minimal
user setup.
Some window managers—such as IceWM, Fluxbox, Openbox, ROX Desktop and Window Maker—contain relatively sparse desktop environment elements, such as an integrated spatial file manager, while others like evilwm and wmii
do not provide such elements. Not all of the program code that is part
of a desktop environment has effects which are directly visible to the
user. Some of it may be low-level code. KDE, for example, provides so-called KIO
slaves which give the user access to a wide range of virtual devices.
These I/O slaves are not available outside the KDE environment.
In 1996 the KDE was announced, followed in 1997 by the announcement of GNOME. Xfce is a smaller project that was also founded in 1996, and focuses on speed and modularity, just like LXDE which was started in 2006. A comparison of X Window System desktop environments demonstrates the differences between environments. GNOME and KDE were usually seen as dominant solutions, and these are still often installed by default on Linux systems. Each of them offers:
To translators, a collaboration infrastructure. KDE and GNOME are available in many languages.
To artists, a workspace to share their talents.
To ergonomics specialists, the chance to help simplify the working environment.
To developers of third-party applications, a reference environment for integration. OpenOffice.org is one such application.
To users, a complete desktop environment and a suite of essential
applications. These include a file manager, web browser, multimedia
player, email client, address book, PDF reader, photo manager, and
system preferences application.
In the early 2000s, KDE reached maturity. The Appeal and ToPaZ
projects focused on bringing new advances to the next major releases of
both KDE and GNOME respectively. Although striving for broadly similar
goals, GNOME and KDE do differ in their approach to user ergonomics. KDE
encourages applications to integrate and interoperate, is highly
customizable, and contains many complex features, all whilst trying to
establish sensible defaults. GNOME on the other hand is more
prescriptive, and focuses on the finer details of essential tasks and
overall simplification. Accordingly, each one attracts a different user
and developer community. Technically, there are numerous technologies
common to all Unix-like desktop environments, most obviously the X Window System. Accordingly, the freedesktop.org project was established as an informal collaboration zone with the goal being to reduce duplication of effort.
As GNOME and KDE focus on high-performance computers, users of
less powerful or older computers often prefer alternative desktop
environments specifically created for low-performance systems. Most
commonly used lightweight desktop environments include LXDE and Xfce; they both use GTK+, which is the same underlying toolkit GNOME uses. The MATE
desktop environment, a fork of GNOME 2, is comparable to Xfce in its
use of RAM and processor cycles, but is often considered more as an
alternative to other lightweight desktop environments.
For a while, GNOME and KDE enjoyed the status of the most popular
Linux desktop environments; later, other desktop environments grew in
popularity. In April 2011, GNOME introduced a new interface concept with
its version 3, while a popular Linux distribution Ubuntu introduced its own new desktop environment, Unity. Some users preferred to keep the traditional interface concept of GNOME 2, resulting in the creation of MATE as a GNOME 2 fork.
Many mainstream desktop environments for Unix-like operating systems, including KDE, GNOME, Xfce, and LXDE, use the X Window System or Wayland,
any of which may be selected by users, and are not tied exclusively to
the operating system in use. The desktop environment for macOS, which is also a Unix-like system, is Aqua, which uses the Quartz graphics layer, rather than using X or Wayland.
A number of other desktop environments also exist, including (but not limited to) CDE, EDE, GEM, IRIX Interactive Desktop, Sun's Java Desktop System, Jesktop, Mezzo, Project Looking Glass, ROX Desktop, UDE, Xito, XFast. Moreover, there exists FVWM-Crystal, which consists of a powerful configuration for the FVWM window manager, a theme and further adds, altogether forming a "construction kit" for building up a desktop environment.
X window managers
that are meant to be usable stand-alone — without another desktop
environment — also include elements reminiscent of those found in
typical desktop environments, most prominently Enlightenment. Other examples include OpenBox, Fluxbox, WindowLab, Fvwm, as well as Window Maker and AfterStep, which both feature the NeXTSTEPGUI look and feel. However newer versions of some operating systems make self configure.
The Amiga approach to desktop environment was noteworthy: the original Workbench desktop environment in AmigaOS
evolved through time to originate an entire family of descendants and
alternative desktop solutions. Some of those descendants are the Scalos, the Ambient desktop of MorphOS, and the Wanderer desktop of the AROS open source OS. WindowLab also contains features reminiscent of the Amiga UI. Third-party Directory Opus software, which was originally just a navigational file manager program, evolved to become a complete Amiga desktop replacement called Directory Opus Magellan.
The BumpTop
project was an experimental desktop environment. Its main objective is
to replace the 2D paradigm with a "real-world" 3D implementation, where
documents can be freely manipulated across a virtual table.
Each currently running application
is assigned a usually resizable and usually rectangular surface of the
display to present its GUI to the user; these windows may overlap each
other, as opposed to a tiling interface where they are not allowed to overlap. Usually a window decoration is drawn around each window. The programming of both the window decoration and of available widgets inside of the window, which are graphical elements for direct user interaction, such as sliders, buttons, etc., is eased and simplified through the use of widget toolkits.
Technical details
The main component of any windowing system is usually called the display server,
although alternative denominations such as window server or compositor
are also in use. Any application that runs and presents its GUI in a
window, is a client of the display server. The display server and its
clients communicate with each other over an application programming interface (API) or a communications protocol,
which is usually called display server protocol, the display server
being the mediator between the clients and the user. It receives all the
input from the kernel, that the kernel receives from all attached input devices, such as keyboard, pointing devices, or touchscreen and transmits it to the correct client. The display server is also responsible for the output of the clients to the computer monitor.
The output of sound is usually not managed by the display server, but
the sound volume is usually handled through GUI applets and it is the
display server who decides which applications are on top. A windowing
system enables the computer user to work with several programs at the
same time. Each program presents its GUI in its own window, which is
generally a rectangular area of the screen.
From a programmer's point of view, a windowing system implements graphical primitives. For example: rendering fonts
or drawing a line on the screen. It provides an abstraction of the
graphics hardware for use by higher-level elements of the graphical
interface such as a window manager.
A display server protocol can be network capable or even network transparent, facilitating the implementation of thin clients.
Display server
A display server or window server is a program whose
primary task is to coordinate the input and output of its clients to and
from the rest of the operating system, the hardware, and each other.
The display server communicates with its clients over the display server
protocol, a communications protocol, which can be network-transparent or simply network-capable.
The display server is a key component in any graphical user interface, specifically the windowing system.
The server/client relationship of a standalone display server is
somewhat counterintuitive in that a "server" is usually thought of as a
large, remote machine, whereas a standalone "display server" is a small
local system, with most clients being executed on a larger central
machine. The explanation is that a display server provides the services of a display and input devices.
One example of a display server is the X.Org Server, which runs on top of the kernel (usually a Unix-like kernel, such as Linux or BSD). It receives user input data (e.g. from evdev
on Linux) and passes it to one of its clients. The display server also
receives data from its clients; it processes the data, it does the
compositing and on Linux it passes the data to one of three kernel
components – DRM, gem or KMS driver. The component writes the data into the framebuffer and content of the framebuffer is transmitted to the connected screen and displayed. X relies on GLX.
One of the implementations of display server concept is X Window System, in particular its actually used version – X.Org Server and Xlib and XCB client libraries. The X.Org Server is a display server, but in its current implementation it relies on a second program, the compositing window manager, to do the compositing. Examples are Mutter or KWin.
Notable examples of display servers implementing the X11 display server protocol are X.Org Server, XFree86, XQuartz and Cygwin/X, while client libraries implementing the X11 display server protocol are Xlib and XCB.
Display servers that implement the Wayland display server protocol are called Wayland compositors.
Like any display server, a Wayland compositor is responsible for
handling input and output for its clients and, in contrast to X11, the compositing as well. Examples are Weston, Mutter, KWin or Enlightenment.
Wayland compositors communicate with Wayland clients over the Wayland display server protocol. This protocol defines that clients can directly write data into the framebuffer using the EGLrendering API.
The display server still gets to decide which window is on top and thus
visible to the user and also still is responsible for passing data
regarding to input devices from evdev to its clients.
Wayland is used to a certain degree in some Linux desktop distributions, such as Fedora. It is also well suited for mobile computing and has been adopted, for example, by the smartphone- and tablet-focused projects Tizen, Sailfish OS and AsteroidOS.
An implementation of Wayland is available under the MIT License, the libwayland-client and libwayland-server libraries.
There is an ongoing effort to add Wayland support to ChromeOS.
The Mir display server
comes with its own Mir display server protocol which is different from
those used by X11 and Wayland. Mir additionally supports the X11
protocol. It was developed by Canonical and was intended to be the display server of choice for Ubuntu. As of 2017, it has been replaced with the Wayland display server for desktop editions of Ubuntu.
There are implementations of the Mir display server, the libmir-server and the libmir-client libraries available under the GPLv3.
Windowing systems with APIs
SurfaceFlinger
Google developed a display server called SurfaceFlinger for Android (another Linux kernel-based operating system primarily for mobile devices):
Everything in Android is rendered to a "surface"; "surfaces" are
produced by applications and placed into a queue that is managed by
SurfaceFlinger.
Yet another Android-specific solution is "Gralloc". Gralloc
handles device memory i.e. it does allocation, arbitration, it handles
synchronization via Android/Linux fence file descriptors. Gralloc
competes with other solutions like e.g. Mesa's Generic Buffer Management (GBM) or Nvidia's EGLStreams. The Gralloc hardware abstraction layer (HAL) is used to allocate the buffers that underlie "surfaces".
For compositing in Android, Surfaces are sent to SurfaceFlinger, which uses OpenGL ES to do the compositing.
Hardware Composer HAL (HWC) was introduced in Android 3.0 and has
evolved steadily over the years. Its primary purpose is to determine
the most efficient way to composite buffers with the available hardware.
As a HAL, its implementation is device-specific and usually done by the
display hardware OEM.
Quartz Compositor
For Apple's macOS family of operating systems, Quartz Compositor fulfils the tasks of a display server and of a window manager in the windowing system.
Desktop Window Manager
For Microsoft Windows, from Windows Vista onward, Desktop Window Manager
enables the use of hardware acceleration to render the graphical user
interface. It was originally created to enable portions of the new
"Windows Aero" user experience, which allowed for effects such as
transparency, 3D window switching and more. It is also included with
Windows Server 2008, but requires the "Desktop Experience" feature and
compatible graphics drivers to be installed. From Windows 8 onwards DWM
can't be disabled and is software rendered if no suitable graphics card is installed.
The history of the graphical user interface, understood as the use of graphic icons and a pointing device to control a computer,
covers a five-decade span of incremental refinements, built on some
constant core principles. Several vendors have created their own
windowing systems based on independent code, but with basic elements in
common that define the WIMP "window, icon, menu and pointing device" paradigm.
There have been important technological achievements, and
enhancements to the general interaction in small steps over previous
systems. There have been a few significant breakthroughs in terms of
use, but the same organizational metaphors and interaction idioms are still in use. Desktop computers are often controlled by computer mice and/or keyboards while laptops often have a pointing stick or touchpad, and smartphones and tablet computers have a touchscreen. The influence of game computers and joystick operation has been omitted.
Early research and developments
Early dynamic information devices such as radar
displays, where input devices were used for direct control of
computer-created data, set the basis for later improvements of graphical
interfaces. Some early cathode-ray-tube (CRT) screens used a light pen, rather than a mouse, as the pointing device.
The concept of a multi-panel windowing system was introduced by the first real-time graphic display systems for computers: the SAGE Project and Ivan Sutherland's Sketchpad.
Much of the early research was based on how young children learn. So, the design was based on the childlike characteristics of hand–eye coordination, rather than use of command languages, user-defined macro procedures, or automated transformation of data as later used by adult professionals.
Engelbart's work directly led to the advances at Xerox PARC. Several people went from SRI to Xerox PARC in the early 1970s.
In 1973, Xerox PARC developed the Alto personal computer. It had a bitmapped screen, and was the first computer to demonstrate the desktop metaphor and graphical user interface
(GUI). It was not a commercial product, but several thousand units were
built and were heavily used at PARC, as well as other XEROX offices,
and at several universities for many years. The Alto greatly influenced
the design of personal computers during the late 1970s and early 1980s,
notably the Three Rivers PERQ, the Apple Lisa and Macintosh, and the first Sun workstations.
The modern WIMP GUI was first developed at Xerox PARC by Alan Kay, Larry Tesler, Dan Ingalls, David Smith, Clarence Ellis and a number of other researchers. This was introduced in the Smalltalk programming environment. It used windows, icons, and menus
(including the first fixed drop-down menu) to support commands such as
opening files, deleting files, moving files, etc. In 1974, work began at
PARC on Gypsy, the first bitmap What-You-See-Is-What-You-Get (WYSIWYG)
cut and paste editor. In 1975, Xerox engineers demonstrated a Graphical
User Interface "including icons and the first use of pop-up menus".
In 1981 Xerox introduced a pioneering product, Star, a workstation
incorporating many of PARC's innovations. Although not commercially
successful, Star greatly influenced future developments, for example at Apple, Microsoft and Sun Microsystems.
Quantel Paintbox
Released by digital imaging company Quantel in 1981, the Paintbox was a color graphical workstation with supporting of mouse input, but more oriented for graphics tablets; this model also was notable as one of the first systems with implementation of pop-up menus.
Blit
The Blit, a graphics terminal, was developed at Bell Labs in 1982.
Lisp machines, Symbolics
Lisp machines originally developed at MIT and later commercialized by Symbolics
and other manufacturers, were early high-end single user computer
workstations with advanced graphical user interfaces, windowing, and
mouse as an input device. First workstations from Symbolics came to
market in 1981, with more advanced designs in the subsequent years.
Apple Lisa and Macintosh (and later, the Apple IIGS)
Beginning in 1979, started by Steve Jobs and led by Jef Raskin, the Apple Lisa and Macintosh teams at Apple Computer
(which included former members of the Xerox PARC group) continued to
develop such ideas. The Lisa, released in 1983, featured a
high-resolution stationery-based (document-centric) graphical interface
atop an advanced hard disk based OS that featured such things as preemptive multitasking and graphically orientedinter-process communication.
The comparatively simplified Macintosh, released in 1984 and designed
to be lower in cost, was the first commercially successful product to
use a multi-panel window interface. A desktop metaphor was used, in which files looked like pieces of paper, file directories looked like file folders, there were a set of desk accessories
like a calculator, notepad, and alarm clock that the user could place
around the screen as desired, and the user could delete files and
folders by dragging them to a trash-can
icon on the screen. The Macintosh, in contrast to the Lisa, used a
program-centric rather than document-centric design. Apple revisited the
document-centric design, in a limited manner, much later with OpenDoc.
There is still some controversy over the amount of influence that Xerox's PARC work, as opposed to previous academic research, had on the GUIs of the Apple Lisa and Macintosh, but it is clear that the influence was extensive, because first versions of Lisa GUIs even lacked icons. These prototype GUIs are at least mouse-driven, but completely ignored the WIMP
( "window, icon, menu, pointing device") concept. Screenshots of first
GUIs of Apple Lisa prototypes show the early designs. Apple engineers
visited the PARC facilities (Apple secured the rights for the visit by
compensating Xerox with a pre-IPO purchase of Apple stock) and a number
of PARC employees subsequently moved to Apple to work on the Lisa and
Macintosh GUI. However, the Apple work extended PARC's considerably,
adding manipulatable icons, and drag and drop manipulation of objects in the file system (see Macintosh Finder) for example. A list of the improvements made by Apple, beyond the PARC interface, can be read at Folklore.org.
Jef Raskin warns that many of the reported facts in the history of the
PARC and Macintosh development are inaccurate, distorted or even
fabricated, due to the lack of usage by historians of direct primary
sources.
In 1984, Apple released a television commercial which introduced the Apple Macintosh during the telecast of Super Bowl XVIII by CBS, with allusions to George Orwell's noted novel, Nineteen Eighty-Four.
The commercial was aimed at making people think about computers,
identifying the user-friendly interface as a personal computer which
departed from previous business-oriented systems, and becoming a signature representation of Apple products.
In 1986, the Apple IIGS was launched. The IIGS was a very advanced model of the successful Apple II series, based on 16-bit technology (in fact, virtually two machines into one). It came with a new operating system, the Apple GS/OS, which features a Finder-like
GUI, very similar to that of the Macintosh series, able to deal with
the advanced graphic abilities of its Video Graphics Chip (VGC).
Agat
The Soviet Union Agat PC featured a graphical interface and a mouse device and was released in 1983.
SGI 1000 series and MEX
Founded 1982, SGI introduced the IRIS 1000 Series in 1983.
The first graphical terminals (IRIS 1000) shipped in late 1983, and the
corresponding workstation model (IRIS 1400) was released in mid-1984.
The machines used an early version of the MEX windowing system on top of the GL2 Release 1 operating environment. Examples of the MEX user interface can be seen in a 1988 article in the journal "Computer Graphics",
while earlier screenshots can not be found. The first commercial
GUI-based systems, these did not find widespread use as to their
(discounted) academic list price of $22,500 and $35,700 for the IRIS
1000 and IRIS 1400, respectively.
However, these systems were commercially successful enough to start
SGI's business as one of the main graphical workstation vendors. In
later revisions of graphical workstations, SGI switched to the X window system, which had been developed starting at MIT since 1984 and which became the standard for UNIX workstations.
Visi On
VisiCorp's Visi On
was a GUI designed to run on DOS for IBM PCs. It was released in
December 1983. Visi On had many features of a modern GUI, and included a
few that did not become common until many years later. It was fully
mouse-driven, used a bit-mapped display for both text and graphics,
included on-line help, and allowed the user to open a number of programs
at once, each in its own window, and switch between them to multitask.
Visi On did not, however, include a graphical file manager. Visi On
also demanded a hard drive in order to implement its virtual memory
system used for "fast switching", at a time when hard drives were very
expensive.
Digital Research (DRI) created GEM as an add-on program for personal computers. GEM was developed to work with existing CP/M and MS-DOS compatible operating systems on business computers such as IBM PC compatibles. It was developed from DRI software, known as GSX, designed by a former PARC employee. Its similarity to the Macintosh desktop led to a copyright lawsuit from Apple Computer, and a settlement which involved some changes to GEM. This was to be the first of a series of "look and feel" lawsuits related to GUI design in the 1980s.
GEM received widespread use in the consumer market from 1985, when it was made the default user interface built into the Atari TOS operating system of the Atari ST line of personal computers. It was also bundled by other computer manufacturers and distributors, such as Amstrad. Later, it was distributed with the best-sold Digital Research version of DOS for IBM PC compatibles, the DR-DOS 6.0. The GEM desktop faded from the market with the withdrawal of the Atari ST line in 1992 and with the popularity of the MicrosoftWindows 3.0 in the PC front around the same period of time. The Falcon030, released in 1993 was the last computer from Atari to use GEM.
Tandy's DeskMate appeared in the early 1980s on its TRS-80 machines and was ported to its Tandy 1000 range in 1984. Like most PC GUIs of the time, it depended on a disk operating system such as TRSDOS or MS-DOS.
The application was popular at the time and included a number of
programs like Draw, Text and Calendar, as well as attracting outside
investment such as Lotus 1-2-3 for DeskMate.
MSX-View
MSX-View was developed for MSX computers by ASCII Corporation and HAL Laboratory.
MSX-View contains software such as Page Edit, Page View, Page Link,
VShell, VTed, VPaint and VDraw. An external version of the built-in MSX
View of the Panasonic FS-A1GT was released as an add-on for the
Panasonic FS-A1ST on disk instead of 512 KB ROM DISK.
Amiga Intuition and the Workbench
The Amiga computer was launched by Commodore in 1985 with a GUI called Workbench. Workbench was based on an internal engine developed mostly by RJ Mical, called Intuition,
which drove all the input events. The first versions used a
blue/orange/white/black default palette, which was selected for high
contrast on televisions and composite monitors. Workbench presented directories as drawers to fit in with the "workbench" theme. Intuition was the widget and graphics library that made the GUI work. It was driven by user events through the mouse, keyboard, and other input devices.
Due to a mistake made by the Commodore sales department, the first floppies of AmigaOS
(released with the Amiga1000) named the whole OS "Workbench". Since
then, users and CBM itself referred to "Workbench" as the nickname for
the whole AmigaOS (including Amiga DOS, Extras, etc.). This common consent ended with release of version 2.0 of AmigaOS, which re-introduced proper names to the installation floppies of AmigaDOS, Workbench, Extras, etc.
Starting with Workbench 1.0, AmigaOS treated the Workbench as a backdrop, borderless window sitting atop a blank screen. With the introduction of AmigaOS
2.0, however, the user was free to select whether the main Workbench
window appeared as a normally layered window, complete with a border and
scrollbars, through a menu item.
Amiga users were able to boot their computer into a command-line interface
(also known as the CLI or Amiga Shell). This was a keyboard-based
environment without the Workbench GUI. Later they could invoke it with
the CLI/SHELL command "LoadWB" which loaded Workbench GUI.
One major difference between other OS's of the time (and for some time after) was the Amiga's fully multi-tasking operating system, a powerful built-in animation system using a hardware blitter and copper and four channels of 26 kHz 8-bit sampled sound. This made the Amiga the first multi-media computer years before other OS's.
Like most GUIs of the day, Amiga's Intuition followed Xerox's, and sometimes Apple's, lead. But a CLI
was included which dramatically extended the functionality of the
platform. However, the CLI/Shell of Amiga is not just a simple text-based interface like in MS-DOS,
but another graphic process driven by Intuition, and with the same
gadgets included in Amiga's graphics.library. The CLI/Shell interface
integrates itself with the Workbench, sharing privileges with the GUI.
The Amiga Workbench evolved over the 1990s, even after Commodore's 1994 bankruptcy.
Acorn's 8-bit BBC Master Compact shipped with Acorn's first public GUI interface in 1986.
Little commercial software, beyond that included on the Welcome disk,
was ever made available for the system, despite the claim by Acorn at
the time that "the major software houses have worked with Acorn to make
over 100 titles available on compilation discs at launch". The most avid supporter of the Master Compact appeared to be Superior Software, who produced and specifically labelled their games as 'Master Compact' compatible.
Originally branded as the Arthur 1.20 the subsequent Arthur 2 release was shipped under the name RISC OS 2.
Desktop
The WIMP interface incorporates three mouse buttons (named Select, Menu and Adjust), context-sensitive menus, window stack control (i.e. send to back) and dynamic window focus (a window can have input focus at any position on the stack). The Icon bar (Dock)
holds icons which represent mounted disc drives, RAM discs, network
directories, running applications, system utilities and docked: Files,
Directories or inactive Applications. These icons and open windows have
context-sensitive menus and support drag-and-drop behaviour. They represent the running application as a whole, irrespective of whether it has open windows.
The application has control of the context-sensitive menus,
inapplicable menu choices can be 'greyed out' to make them unavailable.
Menus have their own titles and may be moved around the desktop by the
user. Any menu can have further sub-menus or a new window for
complicated choices.
The GUI is centered around the concept of files. The Filer
displays the contents of a disc. Applications are run from the Filer
view and files can be dragged to the Filer view from applications to
perform saves. The opposite can perform a load. With their co-operation
data can be copied or moved directly between applications by saving
(dragging) to another application.
Application directories are used to store applications. The OS differentiates them from normal directories through the use of a pling
(exclamation mark, also called shriek) prefix. Double-clicking on such a
directory launches the application rather than opening the directory.
The application's executable files and resources are contained within
the directory, but normally they remain hidden from the user. Because
applications are self-contained, this allows drag-and-drop installation
and removal.
Files are normally typed. RISC OS has some predefined types.
Applications can supplement the set of known types. Double-clicking a
file with a known type will launch the appropriate application to load
the file.
The RISC OSStyle Guide encourages a consistent look and feel across applications. This was introduced in RISC OS 3 and specifies application appearance and behaviour. Acorn's own main bundled applications were not updated to comply with the guide until RISCOS Ltd's Select release in 2001.
Font manager
The outline fonts manager provides spatial anti-aliasing of fonts, the OS being the first operating system to include such a feature, having included it since before January 1989.
Since 1994, in RISC OS 3.5, it has been possible to use an outline
anti-aliased font in the WindowManager for UI elements, rather than the bitmap system font from previous versions.
MS-DOS file managers and utility suites
Because most of the very early IBM PC and compatibles lacked any common true graphical capability (they used the 80-column basic text mode compatible with the original MDA display adapter), a series of file managers arose, including Microsoft's DOS Shell, which features typical GUI elements as menus, push buttons, lists with scrollbars and mouse pointer. The name text-based user interface
was later invented to name this kind of interface. Many MS-DOS text
mode applications, like the default text editor for MS-DOS 5.0 (and
related tools, like QBasic),
also used the same philosophy. The IBM DOS Shell included with IBM DOS
5.0 (circa 1992) supported both text display modes and actual graphics
display modes, making it both a TUI and a GUI, depending on the chosen
mode.
Advanced file managers for MS-DOS were able to redefine character shapes with EGA
and better display adapters, giving some basic low resolution icons and
graphical interface elements, including an arrow (instead of a coloured
cell block) for the mouse pointer. When the display adapter lacks the
ability to change the character's shapes, they default to the CP437 character set found in the adapter's ROM. Some popular utility suites for MS-DOS, as Norton Utilities (pictured) and PC Tools used these techniques as well.
DESQview was a text mode multitasking program introduced in July 1985. Running on top of MS-DOS,
it allowed users to run multiple DOS programs concurrently in windows.
It was the first program to bring multitasking and windowing
capabilities to a DOS environment in which existing DOS programs could
be used. DESQview was not a true GUI but offered certain components of
one, such as resizable, overlapping windows and mouse pointing.
Applications under MS-DOS with proprietary GUIs
Before the MS-Windows age, and with the lack of a true common GUI under MS-DOS, most graphical applications which worked with EGA, VGA and better graphic cards had proprietary built-in GUIs. One of the best known such graphical applications was Deluxe Paint, a popular painting software with a typical WIMP interface.
The original Adobe Acrobat
Reader executable file for MS-DOS was able to run on both the standard
Windows 3.x GUI and the standard DOS command prompt. When it was
launched from the command prompt, on a machine with a VGA graphics card, it provided its own GUI.
The main window of a given application can occupy the full screen in maximized
status. The users must then to switch between maximized applications
using the Alt+Tab keyboard shortcut; no alternative with the mouse
except for de-maximize. When none of the running application windows
are maximized, switching can be done by clicking on a partially visible
window, as is the common way in other GUIs.
In 1988, Apple sued Microsoft for copyright infringement of the Lisa and Apple Macintosh
GUI. The court case lasted 4 years before almost all of Apple's claims
were denied on a contractual technicality. Subsequent appeals by Apple
were also denied. Microsoft and Apple apparently entered a final,
private settlement of the matter in 1997.
GEOS was launched in 1986, originally written for the 8-bit home computer Commodore 64, and shortly after, the Apple II
series. The name was later used by the company as PC/Geos for IBM PC
systems, then Geoworks Ensemble. It came with several application
programs like a calendar and word processor. A cut-down version served
as the basis for America Online's
DOS client. Compared to the competing Windows 3.0 GUI, it could run
reasonably well on simpler hardware, but its developer had a restrictive
policy towards third-party developers that prevented it from becoming a
serious competitor. Additionally, it was targeted at 8-bit machines, whilst the 16-bit computer age was dawning.
The standard windowing system in the Unix world is the X Window System (commonly X11 or X), first released in the mid-1980s. The W Window System (1983) was the precursor to X; X was developed at MIT as Project Athena. Its original purpose was to allow users of the newly emerging graphic terminals to access remote graphics workstations
without regard to the workstation's operating system or the hardware.
Due largely to the availability of the source code used to write X, it
has become the standard layer for management of graphical and
input/output devices and for the building of both local and remote
graphical interfaces on virtually all Unix, Linux and other Unix-like operating systems, with the notable exceptions of macOS and Android.
X allows a graphical terminal user to make use of remote
resources on the network as if they were all located locally to the user
by running a single module of software called the X server. The
software running on the remote machine is called the client application.
X's network transparency protocols allow the display and input portions
of any application to be separated from the remainder of the
application and 'served up' to any of a large number of remote users. X
is available today as free software.
The PostScript-based NeWS (Network extensible Window System) was developed by Sun Microsystems in the mid-1980s. For several years SunOS included a window system combining NeWS and the X Window System.
Although NeWS was considered technically elegant by some commentators,
Sun eventually dropped the product. Unlike X, NeWS was always proprietary software.
The 1990s: Mainstream usage of the desktop
The
widespread adoption of the PC platform in homes and small businesses
popularized computers among people with no formal training. This created
a fast-growing market, opening an opportunity for commercial
exploitation and of easy-to-use interfaces and making economically
viable the incremental refinement of the existing GUIs for home systems.
After Windows 3.11, Microsoft started development on a new
consumer-oriented version of the operating system. Windows 95 was
intended to integrate Microsoft's formerly separate MS-DOS and Windows
products and included an enhanced version of DOS, often referred to as
MS-DOS 7.0. It also featured a significant redesign of the GUI, dubbed
"Cairo". While Cairo never really materialized, parts of Cairo found
their way into subsequent versions of the operating system starting with
Windows 95. Both Win95 and WinNT could run 32-bit applications, and
could exploit the abilities of the Intel 80386CPU, as the preemptivemultitasking and up to 4 GiB of linear address memory space.
Windows 95 was touted as a 32-bit based operating system but it was
actually based on a hybrid kernel (VWIN32.VXD) with the 16-bit user
interface (USER.EXE) and graphic device interface (GDI.EXE) of Windows
for Workgroups (3.11), which had 16-bit kernel components with a 32-bit
subsystem (USER32.DLL and GDI32.DLL) that allowed it to run native
16-bit applications as well as 32-bit applications. In the marketplace,
Windows 95 was an unqualified success, promoting a general upgrade to
32-bit technology, and within a year or two of its release had become
the most successful operating system ever produced.
Accompanied by an extensive marketing campaign, Windows 95 was a major success in the marketplace at launch and shortly became the most popular desktop operating system.
Windows 95 saw the beginning of the browser wars,
when the World Wide Web began receiving a great deal of attention in
popular culture and mass media. Microsoft at first did not see potential
in the Web, and Windows 95 was shipped with Microsoft's own online
service called The Microsoft Network, which was dial-up only and was used primarily for its own content, not internet access. As versions of Netscape Navigator and Internet Explorer
were released at a rapid pace over the following few years, Microsoft
used its desktop dominance to push its browser and shape the ecology of
the web mainly as a monoculture.
Windows 95 evolved through the years into Windows 98 and Windows ME.
Windows ME was the last in the line of the Windows 3.x-based operating
systems from Microsoft. Windows underwent a parallel 32-bit
evolutionary path, where Windows NT 3.1 was released in 1993. Windows NT
(for New Technology)
was a native 32-bit operating system with a new driver model, was
unicode-based, and provided for true separation between applications.
Windows NT also supported 16-bit applications in an NTVDM, but it did
not support VxD based drivers. Windows 95 was supposed to be released
before 1993 as the predecessor to Windows NT. The idea was to promote
the development of 32-bit applications with backward compatibility –
leading the way for more successful NT release. After multiple delays,
Windows 95 was released without unicode and used the VxD driver model.
Windows NT 3.1 evolved to Windows NT 3.5, 3.51 and then 4.0 when it
finally shared a similar interface with its Windows 9x desktop
counterpart and included a Start button. The evolution continued with
Windows 2000, Windows XP, Windows Vista, then Windows 7. Windows XP and
higher were also made available in 64-bit modes. Windows server products
branched off with the introduction of Windows Server 2003 (available in
32-bit and 64-bit IA64 or x64), then Windows Server 2008 and then
Windows Server 2008 R2. Windows 2000 and XP shared the same basic GUI
although XP introduced Visual Styles. With Windows 98, the Active Desktop theme was introduced, allowing an HTML
approach for the desktop, but this feature was coldly received by
customers, who frequently disabled it. At the end, Windows Vista
definitively discontinued it, but put a new SideBar on the desktop.
Mac OS
The Macintosh's GUI has been revised multiple times since 1984, with major updates including System 7 and Mac OS 8. It underwent its largest revision to date with the introduction of the "Aqua" interface in 2001's Mac OS X. It was a new operating system built primarily on technology from NeXTSTEP with UI elements of the original Mac OS grafted on. macOS uses a technology known as Quartz, for graphics rendering and drawing on-screen. Some interface features of macOS are inherited from NeXTSTEP (such as the Dock,
the automatic wait cursor, or double-buffered windows giving a solid
appearance and flicker-free window redraws), while others are inherited
from the old Mac OS operating system (the single system-wide menu-bar). Mac OS X 10.3 introduced features to improve usability including Exposé, which is designed to make finding open windows easier.
With Mac OS X 10.4 released in April 2005, new features were added, including Dashboard (a virtual alternate desktop for mini specific-purpose applications) and a search tool called Spotlight, which provides users with an option for searching through files instead of browsing through folders.
With Mac OS X 10.7 released in July 2011, included support for full screen apps and Mac OS X 10.11
(El Capitan) released in September 2015 support creating a full screen
split view by pressing the green button on left upper corner of the
window or Control+Cmd+F keyboard shortcut.
GUIs built on the X Window System
In the early days of X Window development, Sun Microsystems and AT&T attempted to push for a GUI standard called OPEN LOOK in competition with Motif. OPEN LOOK was developed from scratch in conjunction with Xerox, while Motif was a collective effort. Motif eventually gained prominence and became the basis for Hewlett-Packard's Visual User Environment (VUE), which later became the Common Desktop Environment (CDE).
In the late 1990s, there was significant growth in the Unix world, especially among the free software community.
New graphical desktop movements grew up around Linux and similar
operating systems, based on the X Window System. A new emphasis on
providing an integrated and uniform interface to the user brought about
new desktop environments, such as KDE Plasma 5, GNOME and Xfce
which have supplanted CDE in popularity on both Unix and Unix-like
operating systems. The Xfce, KDE and GNOME look and feel each tend to
undergo more rapid change and less codification than the earlier OPEN
LOOK and Motif environments.
Amiga
Later
releases added improvements over the original Workbench, like support
for high-color Workbench screens, context menus, and embossed 2D icons
with pseudo-3D aspect. Some Amiga users preferred alternative interfaces
to standard Workbench, such as Directory Opus Magellan.
The use of improved, third-party GUI engines became common amongst users who preferred more attractive interfaces – such as Magic User Interface (MUI), and ReAction.
These object-oriented graphic engines driven by user interface classes
and methods were then standardized into the Amiga environment and
changed Amiga Workbench to a complete and modern guided interface, with
new standard gadgets, animated buttons, true 24-bit-color icons,
increased use of wallpapers for screens and windows, alpha channel,
transparencies and shadows as any modern GUI provides.
Use of object oriented graphic engines dramatically changes the look and feel of a GUI to match actual styleguides.
OS/2
Originally collaboratively developed by Microsoft and IBM to replace DOS, OS/2
version 1.0 (released in 1987) had no GUI at all. Version 1.1 (released
1988) included Presentation Manager (PM), an implementation of IBM Common User Access, which looked a lot like the later Windows 3.1 UI. After the split with Microsoft, IBM developed the Workplace Shell
(WPS) for version 2.0 (released in 1992), a quite radical,
object-oriented approach to GUIs. Microsoft later imitated much of this
look in Windows 95.
NeXTSTEP
The NeXTSTEP user interface was used in the NeXT line of computers. NeXTSTEP's first major version was released in 1989. It used Display PostScript for its graphical underpinning. The NeXTSTEP interface's most significant feature was the Dock, carried with some modification into Mac OS X,
and had other minor interface details that some found made it easier
and more intuitive to use than previous GUIs. NeXTSTEP's GUI was the
first to feature opaque dragging of windows in its user interface, on a
comparatively weak machine by today's standards, ideally aided by high performance graphics hardware.
BeOS
BeOS was developed on custom AT&T Hobbit-based computers before switching to PowerPC hardware by a team led by former Apple executive Jean-Louis Gassée
as an alternative to Mac OS. BeOS was later ported to Intel hardware.
It used an object-oriented kernel written by Be, and did not use the X Window System, but a different GUI
written from scratch. Much effort was spent by the developers to make
it an efficient platform for multimedia applications. Be Inc. was acquired by PalmSource, Inc. (Palm Inc. at the time) in 2001. The BeOS GUI still lives in Haiku, an open-source software reimplementation of the BeOS.
Current trends
Mobile devices
General Magic is the apparent parent of all modern smartphone GUI, i.e. touch-screen based including the iPhone et al. In 2007, with the iPhone and later in 2010 with the introduction of the iPad, Apple popularized the post-WIMP style of interaction for multi-touch screens, with those devices considered to be milestones in the development of mobile devices.
Other portable devices such as MP3 players and cell phones
have been a burgeoning area of deployment for GUIs in recent years.
Since the mid-2000s, a vast majority of portable devices have advanced
to having high-screen resolutions and sizes. (The Galaxy Note 4's 2,560 × 1,440 pixel display is an example). Because of this, these devices have their own famed user interfaces and operating systems that have large homebrew
communities dedicated to creating their own visual elements, such as
icons, menus, wallpapers, and more. Post-WIMP interfaces are often used
in these mobile devices, where the traditional pointing devices required
by the desktop metaphor are not practical.
As high-powered graphics hardware draws considerable power and
generates significant heat, many of the 3D effects developed between
2000 and 2010 are not practical on this class of device. This has led to
the development of simpler interfaces making a design feature of two dimensionality such as exhibited by the Metro (Modern) UI first used in Windows 8 and the 2012 Gmail redesign.
In the first decade of the 21st century, the rapid development of GPUs led to a trend for the inclusion of 3D effects in window management. It is based in experimental research in user interface design trying to expand the expressive power of the existing toolkits in order to enhance the physical cues that allow for direct manipulation.
New effects common to several projects are scale resizing and zooming,
several windows transformations and animations (wobbly windows, smooth
minimization to system tray...), composition of images (used for window
drop shadows and transparency) and enhancing the global organization of
open windows (zooming to virtual desktops, desktop cube, Exposé, etc.) The proof-of-concept BumpTop desktop combines a physical representation of documents with tools for document classification possible only in the simulated environment, like instant reordering and automated grouping of related documents.
These effects are popularized thanks to the widespread use of 3D
video cards (mainly due to gaming) which allow for complex visual
processing with low CPU use, using the 3D acceleration in most modern
graphics cards to render the application clients in a 3D scene. The
application window is drawn off-screen in a pixel buffer, and the
graphics card renders it into the 3D scene.
This can have the advantage of moving some of the window rendering to the GPU on the graphics card and thus reducing the load on the main CPU, but the facilities that allow this must be available on the graphics card to be able to take advantage of this.
The notebook interface is widely used in data science
and other areas of research. Notebooks allow users to mix text,
calculations, and graphs in the same interface which was previously
impossible with a command-line interface.
Virtual reality devices such as the Oculus Rift and Sony's PlayStation VR (formerly Project Morpheus) aim to provide users with presence, a perception of full immersion into a virtual environment.