What is a Desktop Environment?

In  simplest terms a desktop environment is graphical representation(Graphical User Interface) of actions and data supported by the operating system. It 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.

 

Elements of Desktop Environment

A desktop environment feels so intuitive because most applications in system provide similar interface. For achieving this desktop environment provides a window manager and widget toolkit, and has some several other elements some of them are given below. All other applications use this widget toolkit and are decorated with window manager.

Display Manager / Login Manager

A display manager is the “login screen“. LightDM, KDM (KDE display manager), GDM (GNOME Display Manager), etc. are pieces of software that manage the appearance of the login screen. A display manager is the first GUI that is displayed after booting is complete in place of the default shell. When user is authorized with password only then he/she is given access to shell.

There are various implementations of display managers, just as there are various types of window managers and desktop environments. There is usually a certain amount of customization and themeability available with each one.

Login Screen in RHEL

Login Screen in RHEL

Desktop

A desktop is the “invisible window” that allows users to set a wallpaper/background and place “desktop icons”. It is sort of home screen which you see o login. A virtual desktop refers to a desktop that is on the outside of the screen. Think about “workspaces” or “workspace switchers”. You see your desktop, but there is more of it than what you see on the physical screen.

Windows 10 Desktop

Windows 10 Desktop

Application Launcher

An application launcher is a computer program that helps a user to locate and start other computer programs. An application launcher provides shortcuts to computer programs, and stores the shortcuts in one place so they are easier to find.

Unity Launcher

Unity Launcher

Widget Toolkit

A widget toolkit also known as widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements called widgets (like buttons, drop down menus , toolbars, etc ) used to construct the graphical user interface (GUI) of programs. There are lot of widget toolkits

Widget toolkit comparison table
Toolkit nameWindowsMac OS XUnix-likeProgramming languageLicense
QtYesYesYesC++LGPL, commercial
MFCYesNoNoC++Proprietary
OWL (superseded by VCL)YesNoNoC++ (Borland C++)Proprietary
VCL (supersedes OWL)YesNoNoObject Pascal (Delphi)Proprietary
WTLYesNoNoC++Microsoft Public License
LCLYesYesYesObject Pascal (Free Pascal)LGPL
LessTifNoNoYesCLGPL
GTK+YesYesYesCLGPL
FLTKYesYesYesC++LGPL
Fox toolkitYesNoYesC++LGPL
wxWidgetsYesYesYesC++WxWindows license
SmartWin++YesNoNoC++BSD
TnFOXYesYesYesC++LGPL
Ultimate++YesNoYesC++BSD
Rogue Wave ViewsYesNoYesC++proprietary
CEGUIYesYesYesC++MIT
Game-GUIYesNoNoC++MIT
IUPYesYesYesCMIT
Shoes (GUI toolkit)cross-platformRubyMIT
AWTcross-platformJava
Swingcross-platformJava
Pivot (WTK)cross-platformJavaApache License
GNUstepYesYesYesObjective-CLGPL
JuceYesYesYesC++GPL, commercial
CocoaNoYesNoObjective-CProprietary

Some toolkits (like Qt and GTK) are programming frameworks that specify the appearance of a theme. Different themes are basically different sets of code written in GTK, Qt, or some other widget toolkit. When a programmer designs a program, they may add some code that interfaces with a widget library (like GTK or Qt) to hard-code how a window appears. Think about your desktop and notice how you may have a few programs that look like an entirely different theme compared to your other applications. Such “odd” applications may have their appearance hard-coded. Examples of widget toolkits include SDL, Qt, GTK, AWT, and Motif.

Window Manager

The part of the GUI that controls the way windows appear is called the window manager. Window managers manage the size and placement of windows. Window managers also draw and own the close, maximize, minimize, etc. buttons and the scroll bars and menus (like the “File” menu) commonly seen on many windows. In other words, window managers control the frames that surround applications and the placement of these frames. The term “window decoration” refers to the usable part of the window frame like the close, minimize, etc. buttons, scroll bars, etc. However, sometimes the window manager will allow the application to control the appearance of the window. To understand this, think about the “complete themes” in Firefox that change the appearance of the windows and scroll bars.

Window Elements

Window Elements

Desktop Environment in Linux, Windows and OS X

Linux as we know is highly customizable. Every element mentioned above and many other elements of desktop environment can be easily changed in any Linux distro. But same is not true for Windows and OS X users. First reason being, Windows and Apple don’t like their users messing with the “beautiful” UI they have developed, so they provide means do change default desktop elements. And second, both Windows and OS X are closed source so it is hard for developers to provide compatibility.

That being said, it is indeed possible to customize these systems to some extent by some hacking and tweaking. Even for average user there are tools available to customize them.

I will post articles on how to customize Linux, Windows and if possible OS X. So subscribe to our newsletter, like our facebook page and follow us on Google+ and twitter. If you have any queries, let us know in comments below.

You may also like...