(I am looking into the relation of GNOME and X. I'd like to share some of my understandings. I will present it in a logical way as much as I can. And I try to make the wording precise.)
1. What is GUI composed of?
I guess everyone knows what GUI is.
Below is an illustration of the basic components of a GUI.
Windowing system is just a type of GUI that implements WIMP (windows, icons, menus, pointer) paradigm for a user interface.
Here is a list of major windowing systems for both Linux and Windows systems.
The key component of a windowing system is the display server (or window server, compositor). Any application that presents its GUI in a window is a client of the display server.
Since client and server are involved, communication protocol is necessary, which is called display server protocol of course.
A display 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. It provides an abstraction of the graphics hardware for use by higher-level (no surprise that a GUI system has a hierarchical design) elements of the graphical interface such as a window manager.
There are several display servers available. Such as:
- X.Org server (mostly for *nix)
- Wayland (mostly for *nix)
- Mir (mostly for *nix)
- SurfaceFlinger (This is for Google Android.)
- Quartz Compositor (This is what Apple MacOS uses.)
- Desktop Window Manager (This is what Microsoft Windows uses.)
2. What does X mean exactly?
X, X11 and X Window System are synonyms. They all stand for a windowing system.
As said above, the key component, the display server, of the X windowing system is the X.Org Server.
Sometimes, X.Org server is also called X server for short.
Any application that runs and presents its GUI is a client of the display server. The display server and its clients communicate with each other over a communications protocol, which is usually called display server protocol, the display server being the mediator between the clients and the user. The display server 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. A display server protocol can be network capable or even network transparent. (so you can see, it is essentially just about data flow and routing, visual data is still data.)
And according to here:
An X.Org Server is a program that provides display and user input services to other programs. In comparison, a file server provides other programs with access to file storage devices. File servers are typically located in a remote location and you use the services of a file server from the machine that you are located at. In contrast, an X Server is typically running on the machine that you are located at; display and user input services may be requested by programs running on your machine, as well as by programs running on remote machines.
So X windowing system is composed of:
- display server
- display server protocol
- some libs for development
- and other things
According to here:
X (the windowing system I think) provides the basic framework for a GUI environment: drawing and
moving windows on the display device and interacting with a mouse and
keyboard. X does not mandate the user interface – this is handled by
individual programs. As such, the visual styling of X-based
environments varies greatly; different programs may present radically
In other words, X windowing system only gives a program the ability to do basic things like drawing/moving windows and input interacting. X doesn't enforce visual styles. It just provides a way to draw, not what to draw. So what you said "...It gives a standard to applications to present their UI's..." is incorrect.
3. What is Window Manager?
Gnome/Xfce/KDE are all window managers. Because they all work on the X display server, they are all called X window manager. The window manager collaborates with the X server and X clients. You can see where the window manager locates in the above GUI composition picture. Here are different types of windows managers.
4. What are GNOME/KDE/Xfce desktops
GNOME, KDE and Xfce desktops are all Linux Desktop Environment. A desktop environment is a bundle of programs running on top of an operating system, which share a common GUI.
But just like I mentioned above, X11, as a display server, only provides the basic drawing ability through some libs like Xlib or XCB. Applications that directly interface X11 through such libs can have radically different visual styles.
So how to create a common GUI? Here comes the widget toolkits. Such as GTK and Qt. They are popular in Wayland and X11 windowing systems.
GNOME and Xfce uses the GTK.
KDE use the Qt.
And here is a comparison of X Window System Desktop Environments.
5. What is gdm3, lightdm, kdm
The are all display managers, as indicated the "dm" part.
Personally, I think the Display Manager is a misleading name. It's better to be called graphical login manager. It is typically a graphical user interface that is displayed at the end of the boot process in place of the default shell.
Different desktop environment use different login managers to keep the visual style consistent.
- GNOME use gdm3.
- Xfce use lightdm
- KDE use kdm
A display manager can starts a session on an X server from the same or another computer.
To summarize...hope I am not over elaborating...
GUI can be of many types. Windowing system is one type of GUI.
The key component of any windowing system is usually called the display server.
A windowing system, such as X, abstracts the hardware and IO. It provides base services of drawing and moving windows and IO handling, etc.
Window Manager, such as Gnome, Xfce, KDE, works on top of the display manager and provides the looks and feel you see.
A desktop environment is a bundle of apps that share a common visual style.
Display Manager, or graphical login manager, provides a graphical login interface.
I draw a rough conceptual illustration. The 3 parts above the OS are very customizable. That's why so much flexibility (confusion) arise.
ADD 1 - 1:26 PM 9/21/2018
And here are some discussion about QT and GTK (maybe offtopic to this thread though...)