GUI and CLI

Glossary

I will use CLI & TUI interchangeably.

Context

A good experience when interacting with a GUI has a few things in common with a good experience in the terminal.

The intersection is ux.

The similarities

  • Follow conventions. Your users likely have common usage patterns that their muscle memory know to look out for

    • Maintain common keyboard shortcuts
    • CLI: maintain common flags/arguments eg man page, or --help -h
  • Provide user feedback when doing stuff in the background.

  • Easy discoverability

    • CLI’s achieve this via comprehensive text, suggesting commands & subcommands, and providing examples of common stuff.
    • jq and git are good examples of this.
  • If you’re performing destructive actions, or state changes on the machine, inform the user.

  • This is true for both GUI & CLI apps:

By default, don’t output to the user information that’s only understandable by creators of the software. Catch errors & rewrite them for humans.

  • UX copy is important
    • CLI: When designing commands, subcommands, flags & arguments
    • CLI: Don’t use ambiguous or similarly named commands
    • There’s lots of writing on UX copy in the world of GUI apps.

Been enjoying nerding out on this topic a bit. Here’s a few interesting links I’ve found so far: