22nd November 2009 | ANATOMY OF A GUI |
Brian Grainger
|
The day I got my Small Cheap Computer (SCC) was a significant one in my use of computers. For the first time since the change from DOS to Windows I had a significantly changed interface, which I found useful for the particular need I had for this type of machine. This got me to thinking about how I could generate a breed of Puppy, (my favourite brand of GNU/Linux), with this type of simplified interface. As usual, I started to search the web for information on such interfaces but I was not too successful because I did not know the technical jargon around windowing systems. I knew the terms for features of Windows but not for windowing systems in general. Eventually, I picked up some jargon and along the way learned a bit about windowing systems in general. I thought I would share my new found knowledge. THE CHANGING GUI INTERFACE When one uses Windows it is easy to think that this is the only way to do things - a start button, a task bar, a system tray, desktop icons. This is one of the reasons it is hard for seasoned Windows users to convert to Linux. They want it to look and behave like Windows and a lot of free software coders don't want to provide that! Times are changing though. Ubuntu, while not looking too much like Windows, is gaining significant support. Even Windows itself is changing with Windows 7 a different way of using the taskbar and its pursuit of the system without menus. The SCC, which by a combination of Microsoft persuasion and misguided ideology of Linux users, has all but disappeared to morph into the altogether different netbook. However, there has recently been a push to provide a computer for seniors that has a simpler to use interface - the SimplicITy computer - as well as notices of intention of a Google OS and ARM based computers in the near future, which will be using different interfaces. HARDWARE So, how do we get from the concept of a graphical user interface (GUI), to what we see on the screen? The first thing to note is that we have some hardware through which we communicate to the computer. In the early days of GUIs the input devices were a keyboard and mouse and the output device a screen. Various other peripherals are coming into play now but I am going to restrict the discussion to these devices as they are still dominant. WINDOWING SYSTEM Having got the hardware we need some software to provide the communication between the hardware and the internal computer software systems. This software is called the Windowing System. Microsoft Windows lumps everything together so it is hard to refer to the separate elements. Die-hard fans may recall Intuition as the Windowing System of the Amiga. Incidentally, it was only as I started to uncover this recent information that I realised just how far ahead of its time the Amiga was! The Kickstart disk/ROM along with the custom chips of the Amiga provided this Windowing System and much else besides. With Linux the Windowing System is the X-Windows System, specifically designed to operate on a network so you have an X-Server and an X-Client. On stand alone machines these can be in the same machine but in a network environment they do not have to be. The implementation of the X-Windows System was originally called Xfree86 but in recent years, following disagreements with the use of Xfree, XOrg has become the dominant implementation. Mac users also have an implementation of the X-Windows System. We have now got a way to communicate with the hardware. The next step is ... THE WINDOWS MANAGER The Windows Manager controls the way that windows appear and are positioned. They come in various types:
There are few examples of a Dynamic Windows Manager but operating systems in general have been progressing from Tiling to Stacking to Compositing Windows Managers. Windows 1.0 was a Tiling windows manager but from version 2 to XP Windows has used a stacking Windows Manager. It has not been possible to differentiate it from the windows system as a whole. The later versions of Windows, Vista, Windows Server 2008 and Windows 7, have a Compositing Windows Manager called Desktop Windows Manager (as if Microsoft invented the term!). This has been necessary to create the Aero interface. The Amiga used a Stacking Windows Manager but, unlike Windows and many other systems which use a desktop metaphor, used a Workbench metaphor. Those with long memories will recall the Workbench floppy. In those days it took 2 floppies, Kickstart and Workbench, to get a multi-tasking windowing system on the Amiga. Now it takes a CD of compressed software to get Microsoft Windows working. I told you the Amiga was way ahead of its time! The MacOSX was the first example of a Compositing Windows Manager. Linux systems use a number of different Windows Managers, mostly Stacking, with the most well used being KWin, part of KDE, and MetaCity, the default for Gnome. There are a small number of Compositing Windows Managers for Linux but Compiz is the most frequently used. DESKTOP ENVIRONMENTS One of the problems I had with understanding the components of a windowing system was the concept of a desktop environment. We all know of the Microsoft Windows desktop environment and Linux users also know of the K desktop Environment (KDE) and Gnome. What I could not work out was whether a desktop environment included a Windows Manager or whether a Windows Manager included a Desktop Environment. I now realise that neither situation is valid. A Desktop Environment is a term to describe the desktop metaphor with or without an associated Windows Manager. KDE includes a Windows Manager - KWin. With Gnome one has to choose a Windows Manager to go with it. What the Desktop Environment does include is the associated applications to perform the default tasks of that system. Having determined that Desktop Environment is not really a hierarchical term it is time to talk about ... WINDOW MANAGER COMPONENTS We now come to the nitty gritty of what defines what your screen will look like and how it behaves. Components options:
Behaviour options:
OPTIONS - OPTIONS - OPTIONS From this journey through the build of a GUI it can be seen that there can be lots of options along the way. Is this a good or a bad thing? With Microsoft Windows the options are chosen for you and occasionally changed between versions. This means that for the non technical user there are no decisions to make and therefore it is very easy to learn and get going. The drawback is that the user has no control over what is the best interface for them. The same applies with the MacOS, although it is generally thought, by Macolytes at least, that its system is more intuitive than Windows. Linux is a whole new ball game. This thrives on choice. There are many different Windows Managers. Is there any wonder that there are so many Linux distros. Not only do you chose the base point - (Debian - Slackware - Suse - Red Hat/Fedora - Puppy, etc.) but then you can choose your Windows Manager. In the Microsoft Windows world applications are not free - so you are not offered much choice in that matter. In the Linux world applications are free and your are offered lots. Do you want an all singing and dancing Office package such as Open Office or a more cut down version such as Abiword/Gnumeric? What browser do you want - Firefox - Opera - Dillo ...? What media player - Mplayer - VNC - Gxine ...? What File Manager - Rox - Nautilus - Konquerer ...? There are so many options that even what appears to be a single distro, such as Ubuntu or Puppy, can be offered in many different flavours. Ubuntu has Gnome with Metacity Window Manager but you could add Compiz and there is a Kubuntu flavour if you favour KDE. Then there is the netbook remix for use on netbooks. Then there is Easy-Peasy, also for netbooks. All this choice can confuse the general user - but at least you can create something you like. CONCLUSION Where do I stand after all my research? Well, I am looking for a Windows Manager that uses tabbed windows as a Program Launcher and includes very little else apart from the basic apps. There then needs to be a widget included that can easily switch interfaces between the standard Puppy interface and this simplified one. With all this choice it must be there somewhere!
|
|
|
|
|
|
|
|
|