ohmyksh
About
Have your cake and eat it too!
ohmyksh is a framework for expanding OpenBSD’s ksh. It offers:
- completions
- for common things like man pages, ssh
known_hostsandgit(andgot!) commands. - extensions
- to import bulk functionality, including git-prompt, OpenBSD specific tooling, disabling color.. etc.
- prompts
- a decent selection of useful, minimal prompts.
Completions
| Name | Completes |
|---|---|
| git | add, fetch… |
| got | add, blame… |
| gopass | audit, config… |
| man | man pages |
| mpc | play, load, toggle… |
| rc | OpenBSD rc scripts and rc commands |
| ssh | ssh known hosts |
| vmd | vmctl commands and VM names |
| ogvt | reminders for ogvt (-pub, -sig, -file) |
Extensions
| Name | Description |
|---|---|
| fonts | Load fonts from common locations. |
| fzf | Set of interactive wrappers for things like packages and shell history. |
| git-prompt | A port of git-prompt for KSH. |
| got | Adds PS1 support for got, as well as a few helper functions. |
| k | A tool to quickly change directories. |
| keychain | Wrapper for Funtoo’s Keychain utility. |
| nocolor | Disable terminal color options for many tools. |
| openbsd | A set of tools for working with the OpenBSD source trees. |
| pkgup | Utility to speed up OpenBSD’ pkg_add(1). |
Prompts
| Name | Example | Extensions used |
|---|---|---|
| q | qbit@litr[0]:~$ | git-prompt, got |
| plain | litr:~/src/ohmyksh/prompts$ | - |
| og-openbsd | $ | - |
| 9 | % | - |
Example usage
# ohmyksh needs to know where it lives, so we tell it via this env var:
OHMYKSH_DIR=${HOME}/src/ohmyksh
# Now we can load everything up!
. ${OHMYKSH_DIR}/ohmy.ksh
# All the paths we use (in order!)
set -A my_paths -- \
/usr/ports/infrastructure/bin \
~/bin \
~/go/bin \
/usr/local/plan9/bin
paths "${my_paths[@]}"
# Load our various extensions
load_extension fonts
load_extension k
load_extension nocolor
load_extension openbsd
# Load handy completions for various things
load_completion ssh
load_completion vmd
load_completion rc
load_completion gopass
load_completion git
alias vi=vim
# the q prompt auto-loads the git-prompt extension
set_prompt qContributing
Contributions can be sent in via Github PRs or via emailing a patch to ~qbit/ohmyksh@lists.sr.ht.
If you do send in a contribution, please include a .org file which describes the feature set. The org syntax is available here, however, one will likely be able to just copy an existing file and modify it.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
