Jani-Matti Hätinen
2006-05-24 04:13:50 UTC
Hello,
I propose below an idea on how the current Menu + Toolbar -based GUI paradigm
might be improved upon (thus it won't represent any sort of radical
rethinking of the GUI). Right now I'll try to represent my ideas in text
form, but later on I'll try to create some mock-ups to illustrate my points.
First I'll cut to the chase and try to explain the idea as clearly as
possible. Then at the end I'll detail some of the earlier GUI developments
which inspired this idea.
Basically this boils down to having toolbar and menu items, which change their
size depending on how often you use them (or alternatively can be locked to
certain fairly free-flowing sizes).
So, if you, for example mainly use the back and reload buttons in
konqueror's web browser mode, the icons representing the actions would, at
first, enlarge to make is easier to spot and hit them, and eventually the
larger icons would be accompanied by a text label, which would further
differentiate them from the other visible GUI elements.
Similarly, if you were to often use the New Tab action from the Location
menu, it would get bigger and bigger over time (first accompanied by a bigger
icon and more vertical spacing, but later also with bold text and a bigger
font).
Also, if for some reason your usage habits were to change so that you
wouldn't use a certain action as often (for example you were to start using
the Ctrl-Shift-N shortcut for new tabs), the corresponding GUI element would
shrink back according to your usage habits.
Naturally the growing and shrinking of the GUI elements would be scaled
according to the user's font and icon size settings. So if you were to choose
small icons, the icons would never too big, or too small, if you were to
choose big icons.
The adaptive GUI element sizes could be further accompanied with hints, which
would make it easy for a user to add an often used menu item into the
toolbar, or remove a rarely used toolbar item, to be only accessible from the
menu. Note that the movement options should also be accessible from the same
place even when no hint would be visible (possibly through a context menu
which the hints could refer to)
The main point here would be that moving GUI elements would never happen
without the user's request. The automatic GUI adaptation would only affect
the proportions of the different GUI elements according to their use.
This approach could (and if possible, should) be applied to all GUI elements.
For example launchers in the panel would change size depending on their
usage, as well as programs in the KDE menu. The same could even apply to
context menus as well as files and folders in konqueror's icon view.
Now I'm not sure how difficult this would be to implement, but I'm guessing
pretty difficult. At minimum it will require SVG icon support to allow smooth
icon scaling, considerable changes to the current menu and toolbar handling
code, some sort of background process which would track and analyze the
user's usage habits and config file support to store the user's settings.
Whether this is at all doable in QT4 I can't really say.
Anyway here's the background & rationale section for this idea:
The main sources of inspiration for this idea (apart from every single GUI
software I've ever seen) are the adaptive menus in MS Office 2000 and later,
as well as somewhat by the ribbon-style GUI of MS Office 12. The final spark
however came from the new startup dialog in koffice-1.5.
Just like the two MS Office GUI ideas, this idea tries to solve the problem
of finding the wanted options/features in increasingly complex pieces of
software.
The Microsoft approach to this problem (first with adaptive menus and now the
ribbon-style GUI) is to hide unused features in order to make the oft-used
ones more visible.
However, this approach has the basic problem of 'If I can't see it, it's not
there'. As we all noticed with adaptive menus (and will probably notice with
the ribbon-thing) trying to remember where an invisible option is is a lot
harder than trying to find a visible one amongst even a lot of others
(especially if even the visible GUI elements are always moving as was the
case with adaptive menus).
Nevertheless IMHO both the Microsoft solutions as well as the koffice dialog
illustrate three important points:
First: moving GUI elements without user consent is just plain malice.
Second: infinite, repetitive menus (which offer no other distinction between
the different options apart from the actual text) aren't usable for anyone
(because if you were ever able to get the adaptive menus right, it was a hell
of a lot better than the traditional ones, until it changed again, that is).
Third: Correlating the frequency of use for an action with the size of the
corresponding GUI element is a good thing. (This is demonstrated really well
in the koffice-1.5 startup dialog in which the most often used buttons (Open
existing document... and Open this document) are by far the smallest GUI
elements in the whole dialog)
So, merely changing GUI element sizes is IMHO a fairly good compromise between
optimising a GUI for the user (which most people actually want) and not
playing games with his/her sense of direction.
I propose below an idea on how the current Menu + Toolbar -based GUI paradigm
might be improved upon (thus it won't represent any sort of radical
rethinking of the GUI). Right now I'll try to represent my ideas in text
form, but later on I'll try to create some mock-ups to illustrate my points.
First I'll cut to the chase and try to explain the idea as clearly as
possible. Then at the end I'll detail some of the earlier GUI developments
which inspired this idea.
Basically this boils down to having toolbar and menu items, which change their
size depending on how often you use them (or alternatively can be locked to
certain fairly free-flowing sizes).
So, if you, for example mainly use the back and reload buttons in
konqueror's web browser mode, the icons representing the actions would, at
first, enlarge to make is easier to spot and hit them, and eventually the
larger icons would be accompanied by a text label, which would further
differentiate them from the other visible GUI elements.
Similarly, if you were to often use the New Tab action from the Location
menu, it would get bigger and bigger over time (first accompanied by a bigger
icon and more vertical spacing, but later also with bold text and a bigger
font).
Also, if for some reason your usage habits were to change so that you
wouldn't use a certain action as often (for example you were to start using
the Ctrl-Shift-N shortcut for new tabs), the corresponding GUI element would
shrink back according to your usage habits.
Naturally the growing and shrinking of the GUI elements would be scaled
according to the user's font and icon size settings. So if you were to choose
small icons, the icons would never too big, or too small, if you were to
choose big icons.
The adaptive GUI element sizes could be further accompanied with hints, which
would make it easy for a user to add an often used menu item into the
toolbar, or remove a rarely used toolbar item, to be only accessible from the
menu. Note that the movement options should also be accessible from the same
place even when no hint would be visible (possibly through a context menu
which the hints could refer to)
The main point here would be that moving GUI elements would never happen
without the user's request. The automatic GUI adaptation would only affect
the proportions of the different GUI elements according to their use.
This approach could (and if possible, should) be applied to all GUI elements.
For example launchers in the panel would change size depending on their
usage, as well as programs in the KDE menu. The same could even apply to
context menus as well as files and folders in konqueror's icon view.
Now I'm not sure how difficult this would be to implement, but I'm guessing
pretty difficult. At minimum it will require SVG icon support to allow smooth
icon scaling, considerable changes to the current menu and toolbar handling
code, some sort of background process which would track and analyze the
user's usage habits and config file support to store the user's settings.
Whether this is at all doable in QT4 I can't really say.
Anyway here's the background & rationale section for this idea:
The main sources of inspiration for this idea (apart from every single GUI
software I've ever seen) are the adaptive menus in MS Office 2000 and later,
as well as somewhat by the ribbon-style GUI of MS Office 12. The final spark
however came from the new startup dialog in koffice-1.5.
Just like the two MS Office GUI ideas, this idea tries to solve the problem
of finding the wanted options/features in increasingly complex pieces of
software.
The Microsoft approach to this problem (first with adaptive menus and now the
ribbon-style GUI) is to hide unused features in order to make the oft-used
ones more visible.
However, this approach has the basic problem of 'If I can't see it, it's not
there'. As we all noticed with adaptive menus (and will probably notice with
the ribbon-thing) trying to remember where an invisible option is is a lot
harder than trying to find a visible one amongst even a lot of others
(especially if even the visible GUI elements are always moving as was the
case with adaptive menus).
Nevertheless IMHO both the Microsoft solutions as well as the koffice dialog
illustrate three important points:
First: moving GUI elements without user consent is just plain malice.
Second: infinite, repetitive menus (which offer no other distinction between
the different options apart from the actual text) aren't usable for anyone
(because if you were ever able to get the adaptive menus right, it was a hell
of a lot better than the traditional ones, until it changed again, that is).
Third: Correlating the frequency of use for an action with the size of the
corresponding GUI element is a good thing. (This is demonstrated really well
in the koffice-1.5 startup dialog in which the most often used buttons (Open
existing document... and Open this document) are by far the smallest GUI
elements in the whole dialog)
So, merely changing GUI element sizes is IMHO a fairly good compromise between
optimising a GUI for the user (which most people actually want) and not
playing games with his/her sense of direction.
--
Jani-Matti H?tinen
Jani-Matti H?tinen