Skip to content
Tech News
← Back to articles

GUIs should be fully keyboard-driven

read original more articles
Why This Matters

This article emphasizes that graphical user interfaces (GUIs) can and should be fully keyboard-driven, challenging the misconception that terminal user interfaces (TUIs) are inherently more accessible in this regard. It highlights the importance for developers to design GUIs that prioritize keyboard navigation, ensuring better accessibility and user experience for all users. This shift can lead to more inclusive and efficient software, benefiting both the tech industry and consumers.

Key Takeaways

Last week I came across a post on Hacker News that encouraged application developers to stop making terminal user interfaces (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 foundation. 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 GUIs. What it does is highlight the inadequacies of keyboard navigation in many GUI applications.

There is nothing preventing a GUI from being fully keyboard-driven 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.

... continue reading