GUI vs Command Line — a Unified Design

Perm URL with updates:

Problems of Graphics User Interface

GUI is great, especially for new users. Though, there are many problems with GUI. Example:

Instruction on using it becomes elaborate and imprecise. Also, the GUI changes overtime (just consider how to turn off cookies in web browser), so instruction becomes ineffective. When in a programing environment, GUI apps can't be precisely controlled, as API.

For example, try to tell a newbie how to change mouse settings. It goes like this: go to the menu at lower left, then you should see a Control Panel menu somewhere, open it, click on upper right to list all items, then you should see a the one with mouse icon, double click it, then there should be a tab named xyz, in there, left panel, there's a sub tab, click that, then there's a slider….

Problems of Command Line Interface

Command line is great, efficient, precise, but it suffers for many inherent problems in textual interface. Typically, it's incomprehensible, even if a well designed one. You really have to be a programer and read most of its manuals and have significant experience with it to be able to use it. (⁖ consider unix's shell commands) Even then, many things it just falls short. For example: in GUI, you can list things, and scroll, or see CPU usage graphs. The use of infographic or other visual elements are a order of magnitude beyond what command line tools can offer. (best example is trying to understand statistical data, by numbers, or by a graph.)

For example, let's say the Linux package system dpkg or apt-get. 〔☛ Linux: Package System {dpkg, apt-get} Notes〕 With command line, you are completely lost on what to do. You need to read a tutorial first. But if you use a GUI such as Synaptic, you don't need to spend a few hours to study it. You can use it fruitfully right away. When you consider the millions of software out there, it's clear that graphical interface are a order of magnitude superior in general.

A Unified Solution

So, i just came up with one unified grand scheme of user interface design.

Here's a very quick sketch. To resolve this, the GUI tool, will basically be like Microsoft Windows 95's GUI system, of windows menu plus Alt key mechanism. Every command is tied to a sequence of key press, starting with a key such as Alt. Also, EVERY command correspond to a menu item. Also, the key sequence will be unique, and NEVER change. This way, the key sequence serves as a ID for the command

So, we have 3 set of things: {① commands, ② key sequence, ③ Menu}. And there's a one-to-one map between them (or, something similar. One-to-one map between all three may be too strong. We might just require a one-to-one map between key and menu, and these will map to command space, like a function.)

And, when Alt is pressed, the menu should be invoked visually, unless the complete key sequence is pressed very fast, in that case the key sequence function as keyboard shortcut.

This is a quick sketch of the idea. Will have to expand on this later.


  • what happens with command line options?
  • how this sync with say touch based GUI and voice interface? (or, does it make sense to sync, the nature of interface, …)

Popular posts from this blog

11 Years of Writing About Emacs

does md5 creates more randomness?

Google Code shutting down, future of ErgoEmacs