helpme
For some time I have kept a plain text file called helpful-commands full of bash commands and applications that I find useful, but have trouble remembering. This was a natural evolution from greping through my .bash_history to find commands. Whilst this file (complete with terminal colors for extra flair) has served me well, I decided that it was time for an upgrade to something that I didn’t feel ashamed of.
With all this in mind, I built a small TUI in rust called helpme.
What it does
helpme reads in a plain text file at ~/.config/helpme/commands and displays the commands in a searchable, navigable list. Typing filters the list in real time. Commands can be run directly from the interface or copied to the clipboard.
The Commands File and its Functionality
Placeholders
If a command is stored with a placeholder the TUI will prompt you for the value at run or copy time. For example, cat <file> in the commands file would prompt the user to input a replacement for <file> when copying or running the command.
Comments
Commands can also have comments to remind you what they do, these are delimited with #. There is no need to worry about aligning the comments in the file, the TUI will helpfully take care of that.
An example could be:
docker ps -a # list all containers
docker exec -it <container> bash # open shell in container
marp -w <file> # watch and convert slides
Notes
Full lines beginning with # will not be treated as commands but rather as notes. These are displayed in a separate panel at the bottom. This can be used to store keyboard shortcuts or similar.
# $mod+F9 // Start screenshare virtual display
# $mod+F10 // End screenshare virtual display
# Shift+Print // Save area of screen
# $mod+Print // Copy area of screen
The comments within the comment here (//) are purely aesthetic, this is a relic of my old helpful-commands file.
The App
Installation
The app can be installed with
cargo install helpme
And then run by calling helpme. If no commands file is found in ~/.config/helpme/ the only command displayed will be to set up the commands directory. Making the actual file is on you however, as help is a two way street.
Code
The source code may be found here. Any contributions or issues are very welcome! Of course simply remembering everything is also an option.