In computing, a virtual desktop is a term used with respect to user interfaces, usually within the WIMP paradigm, to describe ways in which the virtual space of a computer's desktop environment is expanded beyond the physical limits of the screen's display area through the use of software. This compensates for a limited desktop area and can also be helpful in reducing clutter. There are two major approaches to expanding the virtual area of the screen. Switchable virtual desktops allow the user to make virtual copies of their desktop view-port and switch between them, with open windows existing on single virtual desktops. Another approach is to expand the size of a single virtual screen beyond the size of the physical viewing device. Typically, scrolling/panning a subsection of the virtual desktop into view is used to navigate an oversized virtual desktop.
Switchable desktops were designed and implemented at Xerox PARC as "Rooms" by D.A. Henderson and Stuart Card in 1986 based upon work by Patrick P. Chan in 1984. This work was covered by a US patent.
Switchable desktops were introduced to a much larger audience by Tom LaStrange in swm (the Solbourne Window Manager, for the X Window System) in 1989. ("Virtual Desktop" was originally a trademark of Solbourne Computer.) Rather than simply being placed at an x, y position on the computer's display, windows of running applications are then placed at x, y positions on a given virtual desktop “context”. They are then only accessible to the user if that particular context is enabled. A switching desktop provides a way for the user to switch between "contexts", or pages of screen space, only one of which can be displayed on the computer's display at any given time. Several X window managers provide switching desktops.
Other kinds of virtual desktop environments do not offer discrete virtual screens, but instead make it possible to pan around a desktop that is larger than the available hardware is capable of displaying. This facility is sometimes referred to as panning, scrolling desktops or viewport. For example, if a graphics card has a maximum resolution that is higher than the monitor's display resolution, the virtual desktop manager may allow windows to be placed "off the edge" of the screen. The user can then scroll to them by moving the mouse pointer to the edge of the display. The visible part of the larger virtual screen is called a viewport.
Virtual desktop managers are available for most graphical user interface operating systems and offer various features, such as placing different wallpapers for each virtual desktop and use of hotkeys or other convenient methods to allow the user to switch amongst the different screens.
The first platform to implement multiple desktop display as a hardware feature was Amiga 1000, released in 1985. The Amiga moved on to succeed in the consumer and video production market. All Amigas supported multiple in-memory screens displayed concurrently via the use of the graphics co-processor, AKA the "Copper". The Copper was a simple processor who could wait for a screen position and write to hardware registers. Using the GUI implemented in system ROM API's, programs could transparently display multiple independent screens, from non-consecutive memory, without moving the memory. This hardware-based scrolling does not use blitting, but something more like what is sometimes called hardware panning. The video output is simply told (once, or many times) where to display (scanline) and from what screen memory address. A screen can move to any position, or display any portion, by modifying the wait, or fetch position. Typically a single byte value. The Copperlist did need to be sorted in vertical and horizontal wait position in order to function. Note: See http://www.faqs.org/faqs/amiga/books/ for a list of reference material.
Each desktop or 'screen' could have its own colour depth (number of available colours) and resolution, including use of interlacing. The display chipset ('graphics card' on a PC) could switch between these desktop modes on the fly, and during the drawing of a single screen, usually with three pixel deep line between each desktop shown on the screen. However, if one interlaced (flickering) desktop was displayed, all desktops onscreen would be similarly affected.
This also allowed the OS to seamlessly mix "Full Screen" and Windowed "desktop"-style applications in a single environment.
Some programs, VWorlds (an astronomy simulator) being an example, used the multiple desktops feature to overlay a set of controls over the main display screen. The controls could then be dragged up and down in order to show more or less of the main display.
X Window System (Unix and Linux)
The X Window System is unique in that the decoration, placement, and management of windows are handled by a separate, replaceable program known as a window manager. This separation allowed third-party developers to introduce a host of different window manager features, resulting in the early development of virtual desktop capabilities in X. Many of today's X window managers now include virtual desktop capabilities.
Configurations range from as few as two virtual desktops to several hundred. The most popular desktop environments, GNOME and KDE, use multiple virtual desktops (two or four by default) called workspaces. Some window managers, like FVWM, offer separate "desks" that allow the user to organize applications even further. For example, a user may have separate desks labeled "Work" and "Home", with the same programs running on both desks, but fulfilling different functions. Some window managers such as dwm support "tagging" where applications can be configured to always launch on a particular, named desktop, supporting automatic organization and easy navigation.
IBM's personal computer OS/2 operating system included multiple desktops (up to 4 natively) in the OS/2 Warp 4 release in 1996. This functionality has also been provided by the open source XWorkplace project, with support for up to 100 virtual desktops. (A somewhat limited functionality version of XWorkplace is bundled with eComStation as eWorkplace, which includes this same functionality.)
Microsoft Windows does not implement virtual desktops natively in a user-accessible way. There are objects in the architecture of Windows known as "desktop objects" that are used to implement separate screens for logon and the secure desktop sequence (Ctrl+Alt+Delete). There is no native and easy way for users to create their own desktops or populate them with programs. However, there are many third-party and some partially supported Microsoft products that implement virtual desktops to varying degrees of completeness.
Currently, Microsoft offers a utility called Desktops which allows users running Windows XP or Windows Server 2003 or later operating systems to run applications on up to 4 virtual desktops. Unlike nearly all other virtual desktop solutions for Windows, this utility actually uses native "desktop objects," as discussed above. Because of this, it does not offer the ability to move programs between desktops, or in fact to stop using virtual desktops at all, short of logging off, and Windows Aero only works on the primary desktop object.
Microsoft had previously provided a Virtual Desktop PowerToy for Windows XP, which simulates many desktops with the more common method of hiding and showing windows in groups, each group being a different desktop. However, the functionality provided is less comprehensive than that of many other virtual desktop solutions (e. g. maintain a window in a given desktop even when its application bar button flashes, etc.). As with all virtual desktop utilities that work by hiding and showing windows, application compatibility problems are common, because application developers do not expect virtual desktops to be in use on the Windows platform.
Historically, software packaged with some video card drivers provided virtual desktop functionality, such as in Nvidia's nView product (this product has been discontinued for GeForce card owners since Vista). Some of these programs provide eye-candy features similar to those available on Compiz.
Beginning with version 10.5 "Leopard" in late 2007, Mac OS X has shipped with native virtual desktop support, called Spaces, which allows up to 16 virtual desktops. It allows the user to associate applications with a particular "Space". As of Mac OS X 10.7 "Lion", this functionality has been moved into Mission Control.
Scrolling desktops were made available to Macintosh users by a 3rd party extension called Stepping Out created by Wes Boyd (the future founder of Berkeley Systems) in 1986. The code for this extension was integrated by Apple into a later version of the Mac OS, although the ability to create virtual desktops larger than the screen was removed. The code was used instead as an assist for visually impaired users to zoom into portions of the desktop and view them as larger, more easily discerned images.
Be Incorporated's discontinued BeOS includes an implementation of virtual desktops called "Workspaces". Up to 32 different Workspaces are supported.
Application frameworks that support virtual desktop SaaS: One primary application framework that supports virtual desktops is Software-as-a-Service (SaaS). In this setup, the application is hosted remotely; a virtual desktop that might be running on a desktop, laptop, notebook, PDA or smart phone accesses the application. This is a form of application outsourcing, because the "service" accesses an application.
Cloud computing: The second framework for virtual desktops is much newer and, for many organizations, more exciting. Cloud computing is a form of IT resource hosting in which the computing platform (hardware, storage, OS) is hosted. In cloud computing applications, the company committing to cloud computing supplies applications that "run in the cloud."
The resources of a cloud network form a pool that's available (based on policies) to any user or application. This not only generates the best possible economy of scale, it also increases reliability and availability, accommodates shifts in demand that come with time zone changes, etc. A cloud computing environment is to an enterprise data center what the Internet is to a leased line.
The largest benefit of cloud computing, in supporting the notion of a virtual desktop, is that cloud computing has no specific limitations on applications, number of users, traffic volumes, etc. The resources in the cloud are elastic, so demands can be expanded and reduced as business activity dictates. Applications could, in theory, run in a variety of places worldwide -- with computing power migrating around the cloud to support all of the business' needs. However, this is only in theory because there is no determined standard for what constitutes cloud computing, not even to the point of defining its necessary properties. There are no set methods to interface with applications in the cloud, no rules on storing data or adding or removing processing capacity. Each cloud computing framework has its own rules and procedures for controlling resources, and each will have its own structure of charges as well. Fortunately, there are some factors that emerge as common capabilities -- and issues -- as you leave the cloud and approach the virtual desktop.
The SOA approach to virtual desktops
Effective desktop virtualization demands that applications interface with users in some technology-neutral way so that differences in the GUI won't compromise the application's interface through the GUI to the user. The most popular approach to this is a form of service-oriented architecture (SOA), also sometimes referred to as the use of "Web services" in the interface. The basic notion of SOA/Web services is to divide applications into logical components that have their own limited data interface. Those pieces can then be "composed" into a display based on the information needs of the user and limitations of the device through which the user is gaining access to the network.
SOA is an implementation standard with a variety of implementation choices. Some choices are very "loose" SOA applications like Google Apps, where the virtual desktop is little more than a browser. These resemble thin-client applications of the past. Others are tighter applications that encompass Oasis Web Services and SOAP (Simple Object Access Protocol) standards, which may permit more computing and storage functions to be distributed to the virtual desktop. IBM, Microsoft, Oracle, SAP and other enterprise software vendors often support the second approach; many also support the loose or thin-client approach.
SOA is a general trend in software development. Because of this, most enterprise application software also supports SOA. The same is true for SaaS offerings. This convergence of SOA allows virtual desktops to draw application resources from data centers, software providers and the cloud, and creates the most flexible framework for matching IT resources to business needs.
- D. Austin Henderson, Jr., Stuart Card (1986) Rooms: the use of multiple virtual workspaces to reduce space contention in a window-based graphical user interface ACM Transactions on Graphics (TOG)
- User interface with multiple workspaces for sharing display system objects, US Patent 5,533,183
- Thomas E. LaStrange (1990) swm: An X window manager shell. USENIX Summer.
- "Desktops." Windows Dev Center. 27 Mar 2012 21:35 EST. http://msdn.microsoft.com/en-us/library/windows/desktop/ms682573.aspx
- "Desktops." Windows Sysinternals, Microsoft TechNet. 17 Oct 2010 11:07 AM EDT. http://technet.microsoft.com/en-us/sysinternals/cc817881.aspx
- Ars Technica: "The Micro-AmigaOne and Amiga OS4 Developer Prerelease" (Update 1), By Jeremy Reimer, Monday January 17, 2005 ("Desktop and drawers" section).