Difference between Xorg and Gnome/KDE/Xfce

26,051

Solution 1

(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.

enter image description here

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

enter image description here

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 different interfaces.

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 desktops

GNOME and KDE desktops are both 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 use 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, Xfe, 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.

enter image description here

ADD 1 - 1:26 PM 9/21/2018

And here are some discussion about QT and GTK (maybe offtopic to this thread though...)

Solution 2

Xorg (and the earlier Xfree, and earlier X10) is a server for a protocol more completely called the X Window System; it allows applications to draw on "the screen". Which can be remote with X. Gnome/KDE/Xfce and other window managers / desktop environments are special applications that run in X that draw things like borders and icons and minimize and maximize that the applications themselves don't.

And, since Gnome and KDE both can (or did) run on MS Windows (and Wayland to varying degrees), yes they are (or can be) independent of X.

Share:
26,051

Related videos on Youtube

Liess Jemai
Author by

Liess Jemai

Updated on September 18, 2022

Comments

  • Liess Jemai
    Liess Jemai over 1 year

    I want to learn more about UNIX systems and I think I have a pretty straight forward question. I think I know what X is used for: It gives a standard to applications to present their UI's (among other things).

    But why then is there a need for Gnome/KDE and how do they relate to X? I thought that they were using X as some sort of interface between the application and the GUI, so the GUI is customize-able while the interface stays the same across applications.

    Is that true or is Gnome/KDE independent of X?

  • yaobin
    yaobin over 5 years
    "The fact that the term "server" is applied to the software in front of the user is often surprising to users accustomed to their programs being clients to services on remote computers. Here, rather than a remote database being the resource for a local app, the user's graphic display and input devices become resources made available by the local X server to both local and remotely hosted X client programs who need to share the user's graphics and input devices to communicate with the user." (see wiki)
  • yaobin
    yaobin over 5 years
    In case somebody gets confused by the sentence "an X Server is typically running on the machine that you are located at", please see my comment above. Thanks @smwikipedia for giving such an incredibly awesome answer!