Graphical User Interface

A Graphical User Interface (GUI) allows a program to provide visual information to the user. When the user issues commands to the program, the effects are immediately visible.

Direct Interaction

Some graphical interfaces allow the user to interact directly with visual elements on the screen. This is done by pressing on a touch sensitive screen (TouchScreen) with a stylus or finger. The user imagines that he/she is touching the visual elements directly. A good example of the direct interaction interface is the PalmPilot handheld computer.

Direct Interaction GUIs are ideal because they are generally intuitive. The hand is perhaps the second most intuitive body part that humans posess (the nipple being the first). The stylus resembles a pen (or crayon) and is thus familiar to most people in our age of widespread literacy.

Virtual Pointer Interaction

Because of the original cost of computer displays, and their initially small size, the touch sensitive screen has not yet become commonplace for modern computers. Instead, most GUIs employ a virtual pointer that is displayed on the screen. The pointer represents the user's stylus or finger. The user can cause the pointer to move by manipulating a physical device. See:

Commands are issued to the program when the user presses buttons on the physical device. The button press is equivalent to the user pressing on a touch-screen with his finger. Because of the distinctive sound that most buttons make, this is called clicking. To click on something is to position the pointer over the visual element and then press and release the button. A double-click is two clicks in rapid succession. To reposition or move a screen object, most GUIs allow the user to drag. This is accomplished by positioning the pointer on the screen object, depressing the button, moving the pointer to the destination location, and releasing the button.

Many virtual pointer manipulation devices have more than one button. These buttons are named left, right, and middle. They are named such regardless of their actual physical position. A click on an object with the right button is called a right-click. There is also the right-double-click, right-drag, middle-click, etc. The left button is the most commonly used button so the left is usually dropped from left-click.

The virtual pointer system requires the user to learn how to use the physical device. Most devices are created specifically for right-handed individuals with average hand size and fully functioning arm, wrist, and fingers. The devices have varying sensitivities to movement and this can cause difficulty for a person using an unfamiliar computer. Most virtual pointer minipulation devices require the user to keep his/her hand in an unnatural position. This causes health problems for extended computer use. One notable exception is the 3M Renaissance Mouse.

Virtual Reality

...

Common Visual Elements

Do pages really need to be written about all of the GUI components? If you think so, I guess I'll do it, but most people who come to this site already know what these things are. Maybe we could put a short description next to each instead of making new pages? -- MikeNolan

I put them there so people can post code to implement them. Believe it or not, a scroll bar is not the easiest thing to implement - especially one that behaves as expected. I have a bunch of PythonLanguage code that implements Button, EditBox, and ScrollBar. --MikeLeonhard

Advantages

These are advantages of properly designed GUI applications:

Disadvantages/Limitations

These are disadvantages of GUI applications in general:

Discussion

A GUI does not neccessarily cushion the user from the internals of the OS. GUIs require commands just like CLIs do. The difference is that GUI commands are carried out visually while CLI commands require language and grammatical construction.

It is very childish to feel superior because of a complicated tool that you use for fun. You should like CLIs because of their programmability and not because they are non-intuitive for the layman.

I also feel that today's mainstream operating systems have very poor graphical user interfaces. MacOS's GUI is slightly superior to that of Windows, but they are both essentially the same. The most innovative GUI designs the world has ever known can be found in games. Only when the application designer is free from the button and scrollbar will we see progress in this critical area. When GUIs get better, overall computer use will become more efficient. With greater efficiency, everyone becomes wealthier and the whole world benefits. --MikeLeonhard

I agree with Mike. In addition, I think that a "graphical interface operating system" doesn't make any sense in the first place because normally you would think of a graphical environment as software that runs on the operating system. I'm not sure that the hotkeys and mouse clicking comment fits very well either. --Anonymous

The opinion of the first writer crumbles when you consider that some GUIs are so complex or badly designed that any kind of user would prefer to enter commands by hand than use the GUI. Autocad 2000 comes to my mind. I've never used the GUI of Autocad. I learned to enter drawing command by hand because it was easier and faster than trying to find the toolbar button that does the same. It's been few years since I have used Autocad and if I ever had to use it again, I think I would still use the manual commands instead of the GUI.

I'm not exactly sure whether I should agree or disagree with Mike about freeing the developpers from common controls. Programmers are generally awful GUI designers and thus removing or changing the responsability of coding GUIs is only a good thing. On the other hand, give the programmer a little too much freedom and you are in for an huge mess. In my opinion, programmers already have too much freedom overs GUI. A little difference in the behavior of common controls (from the user point of view) can make a program that range from very annoying to unusable.

--FrancoisDenisGonthier

I would have to agree on all counts, Francois. The AutoCAD interface is terrible, and when I was being taught to use the program, the instructor absolutely forbade us to do anything but use the command line, threatening to dock marks if we used the GUI. harsh, but it helped no end.

A GUI is, indeed, often, extremely obstructive to the user. Take Apple's OS X, which prevents the user from seeing any system files that are vital the system's functioning, whereas the command line interface packaged with OS X is much more helpful, allowing you to see all files and, as such, do what you want. So, if you wanna learn to do more than point in OS X, for instance, use darwin.

On the other hand, Operating Systems such as MS Windows don't hide these files, leaving the system wide open to accidental destruction.

-- DavidStill

I didn't say AutoCad GUI was terrible. It's complex but people would probably get used to it if the program did not offer the possibility to enter commands by hand.

Hiding system files is a different matter. I don't think hiding system files is obstructive to the users since maybe 98% of the users don't need to know those file exist in order to properly use the system. This is even more true of important config file where changing 1 byte can wreck the system and prevent it to boot. Usually, good software can be built to automatically modify those files and it's more secure that way.

On the other hand, hiding system files is obstructive to geeky power-user! Satisfying those users is not always easy and rarely profitable for software companies. Let's face it, most HProg members are skilled computer users. We have the eyes of people that actually know what happens under the hood (GUI) of an OS and that makes us bad judges of the user-friendliness of software... -- FrancoisDenisGonthier""

Good point, well made. --DavidStill

I see no mention here of non-WIMP interfaces. Pretty much all of the user interfaces are WIMP (Windows IMPersonating). That means, there are buttons, windows, textboxes, etc.

An example of a non-WIMP interface might be an interface where processes, files, etc. are represented by shapes, all contained in a room, and you could zoom on them. A drag-and-drop way of manipulating files could exist, such that you can drag a source file box onto a C compiler box, which then spits out the original source file, as well as a new binary file.

-- ChrisWalton

Chris, if you would reread the writeup above, you will notice that only the "Common Visual Elements" section refers to Windows-Like interfaces. If you feel that shape-representing-file should be on that list, then please add it. Personally, I feel that Icon fits your description fully.

Anyone else think that we should delete the big chunk of old comments above? --MikeLeonhard

That is not what I meant. I meant a GUI system which does not rely on windows and buttons, but instead on movable shapes which interact, and they show how they interact. for example, you could build a row of things (such as compile, link, execute), then drag the source file on the top of the row, and it would execute. I am not aware of any decent implementations of this, but I'm sure there is one out there :) -- ChrisWalton

That sounds like a good idea for a GUI. Have you considered implementing it? Maybe you should make a New Ideas section on this page and describe your new GUI more thoroughly? Your "movable shapes" sound like icons to me.--MikeLeonhard

GraphicalUserInterface (last edited 2008-07-09 05:47:52 by localhost)