CleanSH is a lightweight Zsh theme for Oh My Zsh. The prompt shows your user, working directory, Git branch, and runtime versions (Ruby, Node, Python, PHP, Bun) with compact Nerd Font icons.
- User, path, Git branch, and runtime versions in one prompt
- Versions from the first available manager:
mise, thenasdf, thennvm(never combined) - Supports
ruby,node/nodejs,python,php, andbun - Async version refresh when Oh My Zsh supports it; sync fallback otherwise
- Per-directory cache; refreshes after
mise/asdf/nvmcommands - Optional hide list via
CLEANSH_DISABLE_VERSION - Dirty Git branches marked with a red
*; clean branches unmarked - Requires a Nerd Font (for example Fira Code Nerd Font)
Install a Nerd Font and set it as your terminal font:
brew install --cask font-fira-code-nerd-font- Copy
cleanzsh.zsh-themeto~/.oh-my-zsh/custom/themes/. - In
~/.zshrc, set:
ZSH_THEME="cleanzsh"- Reload the shell (
source ~/.zshrcor open a new terminal).
Skip tools with a comma-separated list. Accepted values: ruby, node
(or nodejs), python, php, bun. Matching is case-insensitive;
spaces around names and unknown names are ignored.
# Hide PHP and Ruby
export CLEANSH_DISABLE_VERSION="php,ruby"# Show only Node
export CLEANSH_DISABLE_VERSION="ruby,python,php,bun"Add the export to ~/.zshrc. Changes apply on the next prompt (async mode
may briefly show […]).
- Product name is CleanSH; theme id / file is
cleanzsh; env vars use theCLEANSH_prefix. - Only
mise,asdf, andnvmare used — norvm,rbenv, or directruby -v/bun --versionfallbacks. - Managers may be a shell function or a binary on
PATH(function wins when both exist). - Async uses Oh My Zsh’s experimental
_omz_register_handler; without it, versions update in a syncprecmdpath. - Cache invalidation after manager commands peels common wrappers
(
command,sudo,env,nice, …), POSIX--, and typical flags (sudo -u user,env -i,nice -n 10). Not covered: combined short flags likesudo -nu, or chains such asnpm && mise. - Git uses
$(git_prompt_info)so OMZ git async and%escaping apply (zstyle ':omz:alpha:lib:git' async-prompt …before sourcing Oh My Zsh). - Version strings from managers are allowlisted before they reach the prompt.
See the repository LICENSE file.
