Glossary
- GUI: Graphics User interface
- CLI: Command Line interface
- TUI: Terminal User interface
- eg yazi, lazygit, terminal.shop, vim
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
manpage, 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.
jqandgitare 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.
Related reading
Been enjoying nerding out on this topic a bit. Here’s a few interesting links I’ve found so far:
- Rules that terminal programs “follow” : that’s where I learnt that
ctrl + wwill delete the last word 🤯 - Command Line Interface Guidelines: A great read. Would absolutely recommend putting aside an hour or two for this.
- 12 Factor CLI apps: I haven’t read this yet, merely skimmed it. It was cited a few times in Command Line Interface Guidelines.
- User experience, CLIs, and breaking the world: Another one I have’t read yet
- How we sold coffee from the terminal
- Dax tweeted a bunch of stuff while building sst’s multiplexer terminal ui.
- Data Science at the Command Line: Shared by Dandre, I’m yet to read this one.