X Windows Logo
How could we use the computer today without the mouse? But the mouse is only the most obvious symbol of the Graphical User Interface (GUI).
So imagine, if you can, you write a program on a legal pad. You sit at a key punch machine your program into something the computer can read. Next you take your stack of cards over to the punch card reader to load the program into the computer. The program runs, and the output shows up on a line printer. This style of programming was known as batch programming. Batch programming is still used on computers to perform computations that are repeated over and over.
The original computers did not have a dynamic display, they used a printer for output to the user. But early in the life of the computer the Cathode Ray Tube (CRT) and keyboard were added to the computer for output to the user. This display of text on a screen revolutioned the interaction between the computer and the user.
Now that the computer could interact with the user more directly it allowed a user to direct the computer in real time. A lot of the early interaction consisted of a user entering commands on the command line and the computer returning the results to the CRT.
Programs were still pretty basic. But things like editors appeared to allow users to enter text into the computer memory. These early editors were pretty crude but it was better than using a type writer. The simple ability to edit in a dynamic environment was a major step forward. But the user was still required to remember
The users no longer needed to create punch cards to input their programs. They could use the interaction with the computer to edit their programs, then compile the program, execute it, debug the code, and start the cycle of edit, compile, execute, debug again. This was a major time saver for the programmers and users.
This was the state of computer interaction when the first personal computers appeared. One of the first computer operating systems, CPM, was command line only. These computers were single tasking, but given the demands of the personal users, that was still an improvement over the type writer, or card catalog. Even at this time batch processing was available, but a scheduler did not exist to start it.
Even though the unix system existed at this point, the early 1980s, it was not used on many personal computers. These were basically one computer to one user, so multi tasking and multi-user were not needed. Also the scheduled tasks, common on multi-user system were not used on the personal computer.
Before the GUI interface was born the editor was learning how to move around the screen using cursor keys. Additionally the CRT allowed line drawing on the CRT. So the users were now moving the cursor around the screen much like we can do with most editors today.
About this time the people a Xerox Parc Center were experimenting with bit mapped interfaces as opposed to character interfaces. This was not such a big change once you realized that the displays were always pixel based, but were not addressable by pixel as opposed to character. So once you have the ability to address the display by pixels, you allow much finer control of the screen. Lets examine what is happening in a little more detail.
If you look at a display it consists of horizontal and vertical dots in a grid. The number of dots is often referred to as the screens resolution. Resolution is displayed as two numbers, first horizontal and then vertical. So a screen resolution of 1024 x 768, means 1024 pixels wide, and 768 pixels or rows high, so we have a gid of 786,432 dots. If we are talking about a monochrome monitor this might require 786432 bytes of memory. But if we are looking at 24 bit color, we are talking about 3 colors and 3 bytes per color will increase the size of the memory to 7,077,888 bytes, or 8 megabytes. The real break through is that the dots are individually addressable.
So now the computer has the ability to address the video memory directory allowing writing any combination of dots. This allows the display of graphics, so everything now becomes dots. In the days of terminals the computer only sent characters to the screen and a rom inside the terminal converted the characters into dots. Now the computer writes the dots allowing fonts, and graphics to exist anywhere on the screen.
Now the next concept is to define an area on the grid and use it as though it was a window. Things that happen in this window block act like the window was their whole world. So an editor now has to confine it’s operations to this area of the screen. This type of handling is done by the display system, thus alieviating the application from dealing with the display. So an edit can now work in a terminal window just as it would in a character terminal. Since this window does not take the whole screen, it is useful to draw a border around the window so the user can see where it begins and ends. The window can be moved around the screen. So now it becomes important to offer the user a better way to move things on the graphical screen.
The basic concept of the mouse is that it generates pulses in 2 dimentions, plus or minus in the horizontal, and plus or minus in the vertical. These pulses are used to move the pointer on the screen. Since we have a display grid in memory, the computer always knows where the mouse is located on the grid. By adding one or more buttons to the mouse the user can initiate or cause actions based on it’s position. So we finally have a way to move tthe focus of activity from one location to another.
One interesting consequence of using pulses, is that the human operator is a feed back device for the mouse. The same number of mouse click will not always move the mouse to the same absolute position. This is not normally a problem for the user, if the mouse is not in the right position, the user will simply move the mouse to get the pointer to the correct location.
The mouse allows the user to select one from multiple windows. It allow us to select from menus, or start, stop, or resize existing windows. It can even interact with graphical applications to provide tool tips, or execute embeded commands, or even manipulate objects within an application.
The Graphical User Interface can be summerized by looking at the entry in Wikipedia Graphical user interface
Lets start this discussion by pointing out that the X windows system is not really part of the Linux system. Even though most Linux systems come with X-Windows it is a application which runs on top of Linux.
The X Window System is a network transparent window system which runs on a wide range of computing and graphics machines.
X Window System servers run on computers with bitmap displays. The server distributes user input to and accepts output requests from vari‐ous client programs through a variety of different interprocess commu‐nication channels. Although the most common case is for the client programs to be running on the same machine as the server, clients can be run transparently from other machines (including machines with dif‐ferent architectures and operating systems) as well.
The X.Org Foundation distribution comes with a window manager named twm which supports overlapping windows, popup menus, point-and-click or click-to-type input models, title bars, nice icons (and an icon manager for those who don’t like separate icon windows).
Collections of characters for displaying text and symbols in X are known as fonts. A font typically contains images that share a common appearance and look nice together (for example, a single size, bold‐ness, slant, and character set). Similarly, collections of fonts that are based on a common type face (the variations are usually called roman, bold, italic, bold italic, oblique, and bold oblique) are called families.
Most applications provide ways of tailoring (usually through resources or command line arguments) the colors of various elements in the text and graphics they display. A color can be specified either by an abstract color name, or by a numerical color specification. The numer‐ical specification can identify a color in either device-dependent (RGB) or device-independent terms. Color strings are case-insensitive.
The X keyboard model is broken into two layers: server-specific codes (called keycodes) which represent the physical keys, and server-inde‐pendent symbols (called keysyms) which represent the letters or words that appear on the keys.
— Man 7 X
I think it does not make sense for me to try to explain the X-Windows system when there is a good explaination at Wikipedia. So lets jump to X Window System at Wikipedia.
Before we start discussing the Display managers I thought it would be fun to get a quick over view of them from YouTube. GUI Evolution 1981 - 2009
Lets have a look at how to us a Mac as a comparison of GUIs. How To Use A Mac- Guided Tour
Now how would a linux system compare to a Mac. Mint Linux looks like MAC OS X
Now lets have a little fun. Here is a Youtube video labeled why Linux will never succeed!. Tell me what is wrong with his statements.
Now lets have a look at one proposal for how to change the GUI from using a mouse to using your fingers in 10/GUI - 10 Finger Multitouch User Interface
For a closing lets watch a YouTube video The world of Graphical User Interface.. me inside computer
Written by John F. Moore
Last Revised: Wed Oct 18 11:01:36 EDT 2017