Linux+: Operating System Intro 05 – OS Interfaces Looking at other Operating Systems, such as Windows, you know what the user interface looks like. When you see a Windows system, you can instinctively say it is Windows. Every Windows system has the same basic commands or applications such as notepad, calculator, sound recorder and others. Linux has the same basic commands as well which were carried over from UNIX. Linux also has a shell. A shell is an interface between the user and the kernel. There are two types of shells: Command-line Graphical User Interface (GUI) Command-line shells have no graphical figures and may use a mouse and it is strictly a text interface. The command-line shell relies strictly for the keyboard for user input. A command is typed, followed by necessary parameters for the kernel to perform the necessary function. Each shell has been written for different abilities and the interface. The C Shell (csh) uses commands similar in nature to the C programming language. When you choose a shell, it is important to choose a shell which has commands based on a command language you know. Some shells have their own command language which is not similar to a programming language. With no basis in a specific language, there can be a larger learning curve to know all the commands and parameters required. One popular command-line shells is the GNU Born Again Shell (bash) as shown in Figure 1. FIGURE 1 Graphical User Interfaces (GUIs) provide icons and such for use with the mouse to navigate through the shell. A GUI is the typical shell used by users for accessing the kernel and performing functions and starting processes. NOTE: For more information about processes see OS Intro 04 - LINUX Kernel. For GUI based systems, there is the X Window system which is a Display Server. X Windows is an open source platform dependent graphics protocol to supply a GUI. X Windows is maintained by x.org. NOTE: The version of X Windows for Linux is XFree86. X Window, or XFree86, is sometimes called X11, X or X-Windows. X Windows provide the interface for mouse and keyboard use, drawing windows and moving those windows. X Windows is configurable and can allow various GUIs to be made and distributed for Linux. Some of the interfaces are as follows: K Desktop Environment (KDE) (FIGURE 2) GNU Network Object Model Environment (GNOME) (FIGURE 3) Cinnamon (FIGURE 4) Enlightenment (FIGURE 5) Lightweight X11 Desktop Environment (LXDE) (FIGURE 6) FIGURE 2 FIGURE 3 FIGURE 4 FIGURE 5 FIGURE 6 Just as the command-line shells, the GUI shells each provide different functions. Many functions are similar, but each shell has its own additions. NOTE: Be aware that other Display Servers exist. The MIR and Wayland are two very popular Display Servers. Using a GUI interface adds another layer to the interaction between the User and kernel. The interfacing of the shell and XFree86 are as follows: User Shell (KDE, GNOME, etc.) Display Server (XFree86, MIR, Wayland, etc.) Kernel Hardware The User interacts with the installed shell, such as GNOME. When an item is moved or clicked the action is transmitted to XFree86. XFree86 manages the display, and if needed, sends the action to the Kernel. For instance, if an application icon is clicked to start, the Shell will communicate this to XFree86 which interprets it to start the application. The request to start the program is sent to the Kernel where the application is read from the Hard Disk Drive (HDD). The program is read from the HDD and sent to the Central Processing Unit (CPU) where it is executed and loaded into Random Access Memory (RAM). The Kernel manages the process and its threads. Information is sent from the kernel to XFree86 that a new window is to be opened and what should be displayed in it. This information is sent back to the Shell where the window is created and filled in with necessary information allowing the user to interact with the opened application. As the user interacts with an application by entering information or clicking on objects within the window, information is transmitted back and forth from the User to the Hardware.