GUIs should be fully keyboard-driven
The Case for Fully Keyboard-Driven GUIs
By Charalampos Kardaris | Published: 2026-08-28 Originally posted on Charalampos Kardaris' blog and featured on the Hacker News front page.
Recently, I encountered a discussion on Hacker News that urged software creators to move away from building TUI (Terminal User Interfaces). This sparked a passionate debate among the community.
The Great Interface Debate
On one side, the author's logic for favoring GUIs is sound. Mathematically, we can view the relationship between the two as:
In other words, GUI frameworks are theoretically a superset of what TUIs can achieve. However, as someone who spends a significant amount of time in the command line, I deeply value tools that let me remain in the terminal to complete my workflow.
Comparing the Two Paradigms
| Feature | Terminal User Interface (TUI) | Graphical User Interface (GUI) |
|---|---|---|
| Environment | Shell/Terminal | Window Manager/Desktop |
| Input Focus | Primarily Keyboard | Mouse & Keyboard |
| Flexibility | High (for power users) | High (for general users) |
| Capability | Limited by terminal | Theoretically unlimited |
Challenging the "Keyboard-Driven" Myth
There is a common refrain in these debates: TUIs are superior because they are keyboard-driven.
While it is statistically more likely that a random TUI will support full keyboard navigation than a random GUI, this is a reason to prefer TUIs over GUIs. Instead, this trend simply exposes how poorly keyboard navigation is implemented in many modern GUIs.
There is absolutely no technical barrier preventing a GUI from being just as—or even more—keyboard-centric than a TUI.
Industry Standards
Many established frameworks already mandate this. For instance, the GNOME Human Interface Guidelines are very clear:
"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."
A Developer's Perspective
When I build software, I view keyboard accessibility as a primary requirement. For my first GUI project, Klisi, I dedicated significant effort to ensuring that every single action could be triggered via a shortcut.
Implementing this is rarely a complex technical challenge; rather, it is a matter of developer will.
Implementation Logic
To achieve this, a developer typically maps keys to internal functions:
# Example of a keyboard-driven mapping in a GUI
shortcuts = {
"Ctrl+N": create_new_item,
"Ctrl+S": save_document,
"Ctrl+F": open_search_bar,
"Esc": close_current_modal
}
The Workflow of the Argument
Final Thoughts
If a GUI is intuitive and predictable via keyboard, I am far more likely to use it over any alternative. To ensure a high-quality user experience, developers should follow this checklist:
- Map all primary actions to keyboard shortcuts.
- Ensure logical tab-indexing for navigation.
- Provide visible hints for available keys.
- Test the entire app without touching the mouse.
Do not sacrifice the user experience. Full keyboard navigation is not an "extra" feature—it is a necessity.
Footnotes & Metadata
- Other strong arguments for TUIs include their ease of portability.
- It is acknowledged that mouse dexterity is still superior or required for specific spatial tasks.
Tags: #programming
Comment Section
To leave a comment, please provide the following:
- Name/Nickname: (Linked to email; changes will update all previous comments).
- Password: (Used for authentication; must remain consistent after the first post).
[!IMPORTANT] All comment data is automatically encrypted using the public key.