As you’ve figured out by now, Linux is different than Windows or OS X. Linux oozes flexibility and aches for customization. Using it requires using your knowledge of computers and operating systems to make decisions.
Today, I want to focus on one of the earliest decisions you need to make. Which graphical interface you want.
Paradigms and Design Philosophy
Much of the Windows and OS X operating systems depends on the graphical user interface (GUI). They were designed for and integrated with their GUIs. The same cannot be said for Linux. The Linux operating system has only a command line interface, or terminal. Linux GUIs are merely applications, running on top of this terminal interface.
This design allows the greatest flexibility to users. Instead of using only a single built-in GUI, like Windows or OS X, users can choose from a wide variety, and switch between them at will, without consequence.
The GUIs themselves are built in a modular fashion. By splitting the GUI into these multiple parts, developers and users get even more flexibility and extensibility. Let’s check out a few of the fundamental modules of a GUI.
The first module of a Linux GUI is known as the windowing system or window system. Its responsibility is to provide a framework of windows, icons, menus, and pointers that GUIs use and to pass on any GUI instructions to the computer.
The most popular window system is called the X Window System (sometimes referred to as X11 or simply X). X has been a faithful companion to the Linux operating system since its inception. However, it is aging. X was developed in 1984, and has been tweaked, extended, and modified extensively during its lifetime. X has become a temperamental behemoth thanks to all this tinkering.
Because of the X problems, there are two competing windowing systems, Wayland and Mir. As of this writing, they are still extremely new and largely unused, but are expected to explode in the coming years.
If implemented correctly, we end users should rarely deal with the windowing system. It’s like the foundation of your house. It’s there, and extremely important, but you interact with the house’s floor, not the foundation underneath the floor.
The next module in a Linux GUI is the window manager. The window manager allows you to… well… manage windows. It uses the windowing system framework to create windows and allow interaction with them. It does not provide taskbars, system trays, login managers, icons, screensavers and other common features expected of a modern GUI. Only the windows and the ability to interact with them.
In theory, you only need a window manager and you have a functional GUI. However, window managers lack many features and are too minimalist for the average user.
To expand on the sparse nature of window managers, another GUI module is added. This one is called the desktop environment. Desktop environments are responsible for adding visual appeal, customization options, and lots of polish to the window manager.