If u happen to be a Linux user, you might, at the very least be familiar with the Desktop environments: GNOME, KDE, LXDE or XFCE. _Also, _you might have come across the names _OpenBox, X Window System _and _Window Maker, _and perhaps an implementation of more than one of these _together, _e.g. ‘Gnome/OpenBOX.’
Now the Question is, If they are all UIs, what exactly is the difference? And how can they all be working together at the same time? Because despite how similar they seem, each serves a totally different purpose.
To explain this, I’d take the example of layers. Imagine a stack of, let’s say, papers. The _Stack _represents a GUI Linux OS, and every individual sheet of paper represents a different component. Now assuming that the bottom section is dedicated to the GUI Components, the layer at the very bottom of this section would represent the X-Window System. It like forms the _base _of the GUI, and displays the information in a graphical way. Above the X, is a Window Manager, i.e. _assuming, _OpenBox. This Window Manager, as it’s name states, helps you _manage _them open windows. Menus, Taskbars, managing the look and feel, e.t.c. could be examples of what it might offer. Now a Window System, the X, may offer some of the functionality of a Window Manager, but still, they are two different things. In Simple words, a Window manager only enhances the Windows System.
Now the Desktop Environments are a bundle of Applications and tools, with their own UI, and built on some Window Manager, that provide the user with the essentials like a File Manager, Text editor, Browser, e.t.c.
Now to sum it all up, take the example of UbuntuGnome. The Ubuntu Gnome uses the X Windows System as the display server, but on top of it is the Openbox, and the Desktop environment is Gnome, which comes with its own set of Applications like the Nautilus File Manager, Gedit(text-editor), Rhythmbox Music Player, e.t.c.