[LINUX] Terms closely related to the X Window System

Common terms associated with the X Window System include X window managers, X servers, desktop environments, and GTK +. "What the hell are these?" When I started touching Linux, I was sick. This time, I would like to explain these terms. We aim to provide easy-to-understand explanations for beginners, not accurate and complete explanations. For more detailed explanation, please refer to the link to Wikipedia for each term. (Caution, I'm sorry if I made a mistake because my subjectivity is probably mixed. And I welcome your suggestions.)

"[GUI](https://ja.wikipedia.org/wiki/graphical user interface) / [CUI](https://ja.wikipedia.org/wiki/character user interface)"

First of all, I will briefly explain the difference between GUI (graphical user interface) and CUI (character user interface). -CUI can only control the keyboard and display, and can only handle alphabetic characters and general symbols. -The GUI can display your favorite figures, pictures, and characters, and you can operate it intuitively using the mouse pointer. Older PCs only had a CUI. In the 1960s, the idea of GUI was introduced to improve the usability of the Bassocon. Subjectively, I feel that GUIs began to spread explosively in the 1990s and Windows 95 in 1995.

"[Window System](https://ja.wikipedia.org/wiki/Window System)"

A general term for mechanisms and software that realize GUI. It does not refer to any specific material or software.

"X Window System"

According to Wikipedia "The X Window System is a display protocol that provides a window system on a bitmap display. There is X.Org Server as a reference implementation, which provides standard toolkits and protocols, Unix-based operating systems (OS) and OpenVMS. Used to build graphical user interfaces (GUIs) in, etc. It has also been ported to many other general purpose OSs. " It has become.

The X Window System is a document that summarizes the mechanism and method. I interpreted. So, there is no software called X Window System, but it is difficult to understand, so the reference implementation software was created. Originally the reference implementation, it makes sense to think that this reference implementation has become the de facto standard because there was no other software compliant with the Xwind system (previously there was XFree86). To go. (In a narrow sense, the Protocol specifications: part of https://www.x.org/releases/X11R7.7/doc/. In a broader sense, this entire URL)

Linux GUI = X Window System is not a mistake, but if you want to know more about Linux, ・ X server ・ X window manager -Widget. Toolkit ・ GUI function of the application You should be aware of the fact that the Linux GUI is established by linking software such as, and understand the role of each.

The developer requires that you use "X" or "X11" as aliases in addition to "X Window System".

"X.Org Server"

Software compliant with the X Window System (software that inputs from a keyboard, mouse, etc. and displays on a display). It is possible for an app (browser, office software, etc.) to directly control the hardware to realize the GUI, but doing so will prevent other apps from using the keyboard, mouse, or display. The X server acts as an intermediary between the hardware and the app to prevent this from happening. It is also the role of the X server to provide the app with the functionality (graphic context) to display images and graphics on the display. By the way, the X server is not involved in audio and printers.

XFree86」 Software compliant with the X Window System. It provided functionality similar to the X server, but is now out of maintenance. Therefore, the only GUI that conforms to the X Window System is the X server.

Wayland」 Wayland is the replacement for the X server. The X Server is compliant with the X Window System (X11 protocol). However, the first release of this X11 protocol was quite old in 1987, and it is no longer suitable for GPUs and high resolutions in recent years. Wayland specializes only around graphics and does not replace all the functionality of the X server.

"[X Window Manager](https://ja.wikipedia.org/wiki/X Window Manager)"

Do you have an X window manager? .

"[Widget Toolkit](https://ja.wikipedia.org/wiki/Widget Toolkit)"

The app uses various parts such as buttons, scroll bars, and text input, but it is very troublesome to make these from scratch. The widget toolkit is a library (program) that contains these parts. GTK + (GNOME) and Qt (KDE) are well known, but they aren't always there to create apps, they're just to save programmers the hassle.

"[X Display Manager](https://ja.wikipedia.org/wiki/X Display Manager)"

Turn on your computer, and after a while, the graphical login screen will appear. The login screen is the X display manager. If you don't have an X display manager, you'll have to start the tty screen and type "startx" after turning on your computer, but it's not a problem at all.

"[Desktop environment](https://ja.wikipedia.org/wiki/Desktop environment)"

The desktop environment is a software suite that summarizes various GUI software, but it is not a mistake to think of it as a desktop environment ≒ (near equal) X window manager. Because, for example, in my case, I use Xfce for my desktop environment, so the X window manager is xfwm4. I will not change this xfwm4, but except for the file manager (Thunar), I am using GNOME's text editor (gedit) and GNOME's terminal. No matter which desktop environment you choose, you can easily and freely choose anything other than the X window manager. And you can freely install widget toolkit such as GTK + (GNOME) and Qt (KDE) as needed.

Organizations and major offerings

X.Org Foundation ・ X Window System (Document) ・ X server (software) ・ Xlib (library) freedesktop.org (formerly known as X Desktop Group (XDG)) ・ Extended Window Manager Hints (Document) ・ X clipboard explanation (material) ・ DnD (a drag-and-drop specification) (Material) GNOME ・ Mutter (X window manager) ・ GTK + (Widget toolkit) KDE ・ KWin (X window manager) ・ Qt (Widget Toolkit) The Linux kernel ・ DRM (driver) ・ KMS (driver)

Summary

I find the Linux GUI difficult to understand. That's because there are multiple organizations, similar software, and a lot of old-fashioned to experimental features. If you are unfamiliar with Linux, you will be confused. The terms introduced here are part of the Linux GUI and the explanations are subjective. Still, I think it will be useful for organizing the author's memory and the reader's knowledge.

Recommended Posts

Terms closely related to the X Window System
What is the X Window System?
Get the X Window System window title in Python
I tried to display GUI on Mac with X Window System
Just migrate the Discord.py 0.X echobot to 1.X
Converting the coordinate system to ECEF and geodesy
Excel X Python The fastest way to work
[Algorithm x Python] How to use the list
How to identify the system call number ausyscall
Try to simulate the movement of the solar system