ohmyzsh/plugins/kubectx
Oleg Guba b8947f2f8a
perf(kubectx)!: load context asynchronously
BREAKING CHANGE: kubectx_prompt_info uses the async prompt API by default on supported zsh versions. Set async-prompt to no for synchronous behavior, or force when calling it through a wrapper function.
2026-06-15 17:56:38 -07:00
..
kubectx.plugin.zsh perf(kubectx)!: load context asynchronously 2026-06-15 17:56:38 -07:00
prod.png feat(kubectx): adding a new plugin for 'kubectx' (#6114) 2021-06-13 08:23:13 -07:00
README.md perf(kubectx)!: load context asynchronously 2026-06-15 17:56:38 -07:00
stage.png feat(kubectx): adding a new plugin for 'kubectx' (#6114) 2021-06-13 08:23:13 -07:00

kubectx - show active kubectl context

This plugins adds kubectx_prompt_info() function. It shows name of the active kubectl context (kubectl config current-context).

You can use it to customize prompt and know if You are on prod cluster ;)

To use this plugin, add kubectx to the plugins array in your zshrc file:

plugins=(... kubectx)

Usage

Add to .zshrc:

# right prompt
RPS1='$(kubectx_prompt_info)'
# left prompt
PROMPT="$PROMPT"'$(kubectx_prompt_info)'

The context is loaded asynchronously on supported versions of zsh so that kubectl does not block the prompt. To restore synchronous behavior, add this before Oh My Zsh is sourced:

zstyle ':omz:alpha:plugins:kubectx' async-prompt no

If your theme calls kubectx_prompt_info indirectly through another function, force registration of the async handler instead:

zstyle ':omz:alpha:plugins:kubectx' async-prompt force

Custom context names

You can rename the default context name for better readability or additional formatting. These values accept prompt expansion sequences such as %F{color}, %f, %K{color}, %k, %B, %b, %U, %u, %S, %s, %{...%}.

Example: add this to your .zshrc file:

kubectx_mapping[minikube]="mini"
kubectx_mapping[context_name_from_kubeconfig]="$emoji[wolf_face]"
kubectx_mapping[production_cluster]="%{$fg[yellow]%}prod!%{$reset_color%}"
# contexts with spaces
kubectx_mapping[context\ with\ spaces]="%F{red}spaces%f"
# don't use quotes as it will break the prompt
kubectx_mapping["context with spaces"]="%F{red}spaces%f" # ti

You can also define the whole mapping array at once:

typeset -A kubectx_mapping
kubectx_mapping=(
  minikube                      "mini"
  context_name_from_kubeconfig  "$emoji[wolf_face]"
  production_cluster            "%{$fg[yellow]%}prod!%{$reset_color%}"
  "context with spaces"         "%F{red}spaces%f"
)

staging production