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_hosts
andgit
(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 q
Contributing
Contributions can be sent in via Github PRs or via emailing a patch to ~qbit/[email protected].
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.