// HACKER NEWS — CYBERSECURITY
GUIs should be fully keyboard-driven
Last week I came across a post on Hacker
News that encouraged application
developers to stop making terminal user interfaces1
(a.k.a. TUIs) and instead focus on graphical user interfaces (a.k.a. GUIs).
The post reached the HN front page and sparked a lively debate in the
comments section.
I think there is merit in both sides of the debate.
On one hand, I understand the GUI-positive arguments of the post author.
In theory, the capabilities of GUI application frameworks are a superset of the capabilities of
their TUI counterparts, so they should be preferred.
On the other hand, as a heavy terminal user, I also greatly appreciate all TUIs that allow me to
“stay” in the terminal and fulfill all my needs.
But I want to oppose a recurring argument in favor of TUIs that in my opinion does not have a solid
foundation2.
To paraphrase various commenters:
TUIs should be preferred because they are keyboard-driven.
While it’s true that if you randomly pick a GUI and a TUI application, the latter is more probable
to be fully keyboard-driven, this does not tip the scale in favor of developing TUIs over GUIs3.
What it does is highlight the inadequacies of keyboard navigation in many GUI applications.
There is nothing preventing a GUI from being fully keyboard-driven4 just like — or even better
than — a TUI.
In fact, many GUI framework application guidelines explicitly encourage GUI application developers
to provide support for keyboard-driven navigation that covers the whole functionality of the
application.
For example, the GNOME Human Interface Guidelines state that just as it should be possible to perform every
action with a pointing device, every action should also be possible with the
keyboard
and that it should be possible to move around and interact with every part of your user interface
using the
keyboard.
This resonates with me as a user.
Being able to intuitively — and predictably — navigate around a GUI application with only my
keyboard gives me more incentive to choose it compared to its alternatives.
Knowing that, and when wearing my developer hat, I have to make sure that my
applications are keyboard-friendly.
For my first ever GUI application, Klisi, I invested some time
to implement keyboard shortcuts targeting the whole range of available actions.
Keyboard navigation is not that hard to achieve in most cases and results in an overall better user
experience.
It is not a matter of feasibility, but a matter of will on the application developer’s part.