Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/romkatv/powerlevel10k/llms.txt

Use this file to discover all available pages before exploring further.

Powerlevel10k ships with 71 built-in prompt segments that cover everything from version managers and cloud provider contexts to battery status and file-manager shells. Each segment is self-contained: it knows how to gather its own data, how to format it, and how to apply the styling parameters defined in ~/.p10k.zsh. Because segments run concurrently and most of their work is deferred, you can enable as many as you like without any measurable impact on prompt latency or Zsh startup time.

Enabling and Disabling Segments

All segments are controlled by two arrays in ~/.p10k.zsh:
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
  os_icon dir vcs prompt_char
)

typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
  status command_execution_time context time
)
Add a segment name to the relevant array to enable it. Comment it out or remove it to disable it. The order of entries determines the order segments appear in the prompt.
After editing ~/.p10k.zsh, run p10k reload (or open a new shell) to apply your changes. You do not need to restart Zsh each time.

Segment Table

SegmentMeaning
anacondavirtual environment from conda
asdftool versions from asdf
awsaws profile
aws_eb_envaws elastic beanstalk environment
azureazure account name
background_jobspresence of background jobs
batteryinternal battery state and charge level
command_execution_timeduration (wall time) of the last command
contextuser@hostname
cpu_archCPU architecture
dircurrent working directory
direnvdirenv status
disk_usagedisk usage
dotnet_versiondotnet version
fvmflutter environment from fvm
gcloudgoogle cloud cli account and project
goenvgo environment from goenv
google_app_credgoogle application credentials
go_versiongo version
haskell_stackhaskell version from stack
ipIP address and bandwidth usage for a specified network interface
java_versionjava version
jenvjava environment from jenv
kubecontextcurrent kubernetes context
laravel_versionlaravel php framework version
loadCPU load
luaenvlua environment from luaenv
midnight_commandermidnight commander shell
nix_shellnix shell indicator
nnnnnn shell
lflf shell
chezmoi_shellchezmoi shell
nodeenvnode.js environment from nodeenv
nodenvnode.js environment from nodenv
node_versionnode.js version
nordvpnnordvpn connection status
nvmnode.js environment from nvm
os_iconyour OS logo (apple for macOS, swirl for debian, etc.)
packagename@version from package.json
per_directory_historyOh My Zsh per-directory-history local/global indicator
perlbrewperl version from perlbrew
phpenvphp environment from phpenv
php_versionphp version
plenvperl environment from plenv
prompt_charmulti-functional prompt symbol; changes depending on vi mode: , , V, for insert, command, visual and replace mode respectively; turns red on error
proxysystem-wide http/https/ftp proxy
public_ippublic IP address
pyenvpython environment from pyenv
ramfree RAM
rangerranger shell
yaziyazi shell
rbenvruby environment from rbenv
rust_versionrustc version
rvmruby environment from rvm
scalaenvscala version from scalaenv
statusexit code of the last command
swapused swap
taskwarriortaskwarrior task count
terraformterraform workspace
terraform_versionterraform version
timecurrent time
timewarriortimewarrior tracking status
todotodo items
toolboxtoolbox name
vcsGit repository status
vim_shellvim shell (:sh)
virtualenvpython environment from venv
vi_modevi mode (you don’t need this if you’ve enabled prompt_char)
vpn_ipvirtual private network indicator
wifiWiFi speed
xplrxplr shell

Performance

Enabling many segments does not slow down the prompt. Powerlevel10k computes segment content asynchronously, and segments that are not relevant (e.g., kubecontext when kubectl is not installed) return immediately. The prompt always appears within milliseconds of pressing Enter, regardless of the number of active segments.

Custom Segments

If none of the built-in segments fits your needs, you can write your own using the public p10k segment API. Custom segment functions follow the naming convention prompt_<name> and are added to the prompt elements array just like built-in ones. See Custom Segments for a full guide including examples, state-based styling, and icon customization.
Prefix the names of your own segments with my_ (e.g., my_cpu_temp) to avoid potential name collisions with future versions of Powerlevel10k.

Build docs developers (and LLMs) love