GUI Design for Power Users
Posted: Tue May 01, 2007 8:57 pm
Now we all know that WIMP user interfaces seem to work fairly well for new users of any system -- sit them down with a tutorial, a small manual and the machine and they do fine.
We also know (as common knowledge) that power users can more efficiently use the machine through some kind of command-line interface, or even a scripting language.
But in modern systems, many applications can only receive limited options and parameters at the command line, and GUI programs may take little or no input from their standard-input handles once they've begun.
So we end up with the question, how can we design a GUI system that will work for power users? First of all, my basic list of criteria for "power user" traits:
1.They know what they're doing, and just want to get it done. This explains why power users hate Clippy.
2.They may or may not want to accomplish their goals through scripting. When they haven't automated their actual task via scripting, they often want to build the specification of the new task (like a command-line string) out of scripted parts. They also want to mix scripts and programs when necessary.
3.They usually find using the keyboard more convenient than using the mouse, because it has a larger number of input "digits" accessible with greater speed and precision. Using the keyboard for non-text input (or encoding control and command inputs in text) also removes the need to stop typing and move a hand over to the mouse.
4.When they don't know what they're doing, they want a convenient and consistent way to access documentation that will tell them what they're doing. The Unix "man" command provides a good example of this.
5.They want to access programs via a consistent interface. Why learn multiple, conflicting sets of shortcut keys for the same functions in different programs?
I have two basic ideas on how to handle this issue. One (before Solar can post it) is to bring back something like ARexx from the Amiga -- a scripting language to which applications can add arbitrary new commands for use by users. This would solve 1-3 and 5 by providing a consistent scripting interface to all programs, including those running under a graphical interface. If programs implemented ARexx ports accessible by IPC, users could also issue script commands to an already-running program instead of passing the script to a new instance of the application.
To solve #4, I propose adding a shortcut key, defined by the window manager, that will issue a command to obtain and display documentation based on a textual or graphical (ie: "What is this?" help from Windows) designation of the item in question. This solution would also enhance #5 by providing a single shortcut key useful in every program.
I also think we should add widgets to our windows (all of them) to control input focus. A power user may want the ability to browse the web with his mouse while typing commands into a command-line shell with keyboard focus. The user will explicitly control which window receives the input from which device, rather than allowing the window manager and applications to fight each other for focus against the user's wishes.
Finally, we could just replace our mice with knock-off Wiimotes from Hong Kong. This would provide valuable input data for navigating the 3D user interfaces of the future.
Does anyone have any interesting ideas of their own, or opinions on my ideas? Go ahead and post; I can't steal your ideas since I haven't even reached the GUI stage yet!
OK, that's a Theory/Design topic. Let's see how many people take interest.
We also know (as common knowledge) that power users can more efficiently use the machine through some kind of command-line interface, or even a scripting language.
But in modern systems, many applications can only receive limited options and parameters at the command line, and GUI programs may take little or no input from their standard-input handles once they've begun.
So we end up with the question, how can we design a GUI system that will work for power users? First of all, my basic list of criteria for "power user" traits:
1.They know what they're doing, and just want to get it done. This explains why power users hate Clippy.
2.They may or may not want to accomplish their goals through scripting. When they haven't automated their actual task via scripting, they often want to build the specification of the new task (like a command-line string) out of scripted parts. They also want to mix scripts and programs when necessary.
3.They usually find using the keyboard more convenient than using the mouse, because it has a larger number of input "digits" accessible with greater speed and precision. Using the keyboard for non-text input (or encoding control and command inputs in text) also removes the need to stop typing and move a hand over to the mouse.
4.When they don't know what they're doing, they want a convenient and consistent way to access documentation that will tell them what they're doing. The Unix "man" command provides a good example of this.
5.They want to access programs via a consistent interface. Why learn multiple, conflicting sets of shortcut keys for the same functions in different programs?
I have two basic ideas on how to handle this issue. One (before Solar can post it) is to bring back something like ARexx from the Amiga -- a scripting language to which applications can add arbitrary new commands for use by users. This would solve 1-3 and 5 by providing a consistent scripting interface to all programs, including those running under a graphical interface. If programs implemented ARexx ports accessible by IPC, users could also issue script commands to an already-running program instead of passing the script to a new instance of the application.
To solve #4, I propose adding a shortcut key, defined by the window manager, that will issue a command to obtain and display documentation based on a textual or graphical (ie: "What is this?" help from Windows) designation of the item in question. This solution would also enhance #5 by providing a single shortcut key useful in every program.
I also think we should add widgets to our windows (all of them) to control input focus. A power user may want the ability to browse the web with his mouse while typing commands into a command-line shell with keyboard focus. The user will explicitly control which window receives the input from which device, rather than allowing the window manager and applications to fight each other for focus against the user's wishes.
Finally, we could just replace our mice with knock-off Wiimotes from Hong Kong. This would provide valuable input data for navigating the 3D user interfaces of the future.
Does anyone have any interesting ideas of their own, or opinions on my ideas? Go ahead and post; I can't steal your ideas since I haven't even reached the GUI stage yet!
OK, that's a Theory/Design topic. Let's see how many people take interest.