From its beginning, Unix and all the operating systems based on it were text-based. It means that you have to learn a set of commands and use them to perform various operations. With the passage of time, Graphical User Interfaces (GUI) were included in almost all operating systems. Soon GUI get popular as they are user-friendly and easy to understand and use, especially for beginners.
The X window system (also known as X11 or simply X) provides GUI facilities both to a local desktop and in a network environment. In this tutorial, you will learn about the X window system, how it works, its elements, and some of its advantages.
Table of Contents
What is the X system?
X is a windowing system used to display bitmaps in Unix-based operating systems. In other words, the X system provides the base for implementing a GUI in Linux. For instance, the X system allows you
- to run an application in windows
- to move windows around the screen
- click on items
So, without X you will have to interact with the operating system using a text-based interface in which you would need to type commands. X will give your Linux-based operating system a similar look and feel that you see in Microsoft Windows.
The X window system was started as a project at MIT (Massachusetts Institute of Technology) back in 1984. This project is led and managed by the X.Org organization as open-source. X.Org server is available as free and open-source software under the MIT license.
How does X System work?
In an X system, the underlying engine is the X protocol, which manages displays on local as well as remote systems. This protocol follows a client-server model. Clients are simply programs whereas the X server is responsible for displaying everything on the demand of clients, even if they are not residing on the same machine.
It is worth mentioning here that X by itself is not sufficient for a graphical user interface. Its main objective is to draw rectangles, lines, bitmaps, and other several shapes and to deals with font settings. X does not mandate the user interface; this is handled by individual programs.
Components of Linux GUI
One of the great things about the Linux GUI is that it is modular in nature. This modularity allows the flexibility of selecting and using different components for customization of the GUI. This option is not present in other operating systems. The Linux GUI is composed of the following components that work together to provide a graphical experience.
It is called the heart of Linux GUI, as it is responsible for drawing windows, dialog boxes, and buttons graphically on the display screen.
Another job of X Server is that it manages the concerned hardware devices (such as keyboard, mouse) as well. For the sake of proper functioning of the system, it helps in providing a display, video, sound driver, and all types of hardware configuration settings such as keyboard, mouse, etc.
The question is why is it called a server?
The answer is that it is capable of displaying its output not only on the local desktops but also on remote computers present somewhere in the network. However, the remote computer must also be running X server software.
Over the years multiple X server software packages have been implemented on the Linux system. X.org-X11 is currently the most commonly implemented (and the default) X server system, you will find in modern Linux distributions.
X.org is developed from the XFree86 package, which was the default X server in most Linux distributions before 2004. The Linux community migrated from XFree86 to X.org because of some licensing issues. But, both of them are very much similar and work in pretty much the same way. You can say X.org is like an advanced form of XFree86.
While the X server creates a window, the windows manager customizes the looks of a window and how it behaves. The window manager is responsible for controlling all types of graphics through which a user can interact with the system. The window manager helps in providing graphics of buttons, borders, colors of background, etc.
You can say that the X server is responsible to manage all the software and hardware configuration whereas the window manager works on the graphics-related items e.g., colors, other such graphics, etc.
There is a long list of different window managers that you can use in Linux, each one offers a different look and feel for the GUI environment.
Some of the most popular are presented below
- fvwm (feeble virtual window manager)
- twm (tab window manager)
- wmaker (window maker)
Now you may have a question rising in your mind about which one of the above mentioned is the best, well the answer is that it depends on your choice.
Some window managers are very elegant and are fully featured such as enlightenment, kwin, and sawfish. Whereas other window managers are minimal in nature such as fvwm, twm, and wmaker. Now it depends on different users and their preferences to select a particular window manager.
Minimal window managers are not very fancy, whereas others (e.g., enlightenment or kwin) are more advanced. The advanced window managers are full-featured managers available on your system that helps Microsoft Windows users to easily understand and use Linux.
The desktop environment leverages the looks of the windows created by the windows manager. Then it adds a series of tools and utilities to make the GUI truly useful. The desktop environment basically ties all the GUI components together into a single cohesive environment.
The desktop environment is optional but it is also highly recommended. There are some Linux distributions, which do not have a desktop environment installed (e.g., those designed for security). But those distributions which are designed for end-users need to have a very nice desktop environment configured.
Similar to the X server and window managers, the desktop environment you might use on your Linux system is modular which means you can try out different environments and find out which one you like.
The two most common desktop environments currently used with the Linux system include.
KDE is a useful desktop environment that provides several functionalities you are used to with Microsoft Windows. It is the default desktop environment in many Linux distributions. Other distributions such as Red Hat use GNOME as a default desktop environment.
All the above-mentioned components work hand-in-hand to create an overall graphical user interface environment on a Linux system. And you can mix and match all these components to customize the system according to your taste and preferences.
Advantages of X windows system
- X provides a stable and cost-efficient model where legacy systems can be used with powerful computers.
- X works with any type of hardware-based graphic system, making it portable. So, it can be used with high-end PCs as well as with tiny embedded devices.
- The networking capabilities of X allow easy management of thousands of computers, deployment of thin clients, and remote launching of applications.