logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·31.10.26
← Back to news

GUIs should be fully keyboard-driven

Original article
ckardaris.com|976 points|478 comments|by ckardaris|Aug 28, 2026

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:

Capabilities(TUI)⊂Capabilities(GUI)\text{Capabilities}(\text{TUI}) \subset \text{Capabilities}(\text{GUI})Capabilities(TUI)⊂Capabilities(GUI)

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

FeatureTerminal User Interface (TUI)Graphical User Interface (GUI)
EnvironmentShell/TerminalWindow Manager/Desktop
Input FocusPrimarily KeyboardMouse & Keyboard
FlexibilityHigh (for power users)High (for general users)
CapabilityLimited by terminalTheoretically 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

Keyboard Accessibility Concept

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

  • ↓\downarrow↓ Other strong arguments for TUIs include their ease of portability.
  • ↓\downarrow↓ 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.