Every piece of information displayed in your Powerlevel10k prompt is a segment. Segments are composable, independently styled units — each one can display things like the current directory, Git status, active Python environment, or Kubernetes context. You choose exactly which segments appear and in what order by editing two arrays inDocumentation 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.
~/.p10k.zsh.
The Segment Arrays
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS controls the left side of the prompt, and POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS controls the right side. Both are standard Zsh arrays where each element is either a segment name or the special newline pseudo-segment.
The newline Pseudo-Segment
Placing newline anywhere in an elements array splits the prompt at that point and continues on the next terminal line. Multi-line prompts give you more horizontal room for typing while still showing rich context information above. Transient prompt (configured separately) works especially well with two-line layouts.
Right Prompt Auto-Hiding
The right prompt on the last prompt line automatically hides when your typed command grows long enough to reach it — Powerlevel10k detects the overlap and removes the right segment row before it collides. Right prompt lines above the last line hide if they would overlap the corresponding left prompt line.Adding, Removing, and Reordering Segments
Open~/.p10k.zsh in your editor. The file generated by p10k configure has all commonly useful segments listed, with uncommented entries for enabled ones and commented entries (# segment_name) for disabled ones.
- Enable a segment: remove the
#before its name in the array. - Disable a segment: add
#before its name, or delete the line entirely. - Reorder segments: move the name to the desired position within the array.
Built-in Segments Reference
Powerlevel10k ships with over 60 built-in segments. All of them can be enabled without any performance penalty — the theme evaluates segments asynchronously and caches results aggressively.| Segment | Description |
|---|---|
anaconda | Virtual environment from conda |
asdf | Tool versions from asdf version manager |
aws | Active AWS CLI profile |
aws_eb_env | AWS Elastic Beanstalk environment name |
azure | Azure CLI account name |
background_jobs | Indicator when background jobs are running |
battery | Internal battery state and charge level |
chezmoi_shell | Active chezmoi shell indicator |
command_execution_time | Wall-clock duration of the last command |
context | user@hostname; shown only when root or in SSH by default |
cpu_arch | CPU architecture (e.g., arm64, x86_64) |
dir | Current working directory with smart truncation |
direnv | direnv status indicator |
disk_usage | Disk usage percentage for the current filesystem |
dotnet_version | .NET runtime version |
fvm | Flutter version from fvm |
gcloud | Google Cloud CLI account and project |
goenv | Go version from goenv |
google_app_cred | Active Google Application Credentials |
go_version | Go version |
haskell_stack | Haskell version from Stack |
ip | IP address and bandwidth usage for a specified network interface |
java_version | Java version |
jenv | Java version from jenv |
kubecontext | Current Kubernetes context and namespace |
laravel_version | Laravel PHP framework version |
lf | Active lf file manager shell |
load | Average CPU load (1, 5, or 15 minute window) |
luaenv | Lua version from luaenv |
midnight_commander | Active Midnight Commander shell |
nix_shell | Active Nix shell (pure/impure) |
nnn | Active nnn file manager shell |
nodeenv | Node.js environment from nodeenv |
nodenv | Node.js version from nodenv |
node_version | Node.js version |
nordvpn | NordVPN connection status (Linux only) |
nvm | Node.js version from nvm |
os_icon | OS logo (Apple for macOS, swirl for Debian, etc.) |
package | name@version from package.json |
per_directory_history | Oh My Zsh per-directory-history local/global indicator |
perlbrew | Perl version from perlbrew |
phpenv | PHP version from phpenv |
php_version | PHP version |
plenv | Perl version from plenv |
prompt_char | Multi-functional prompt symbol: ❯ (insert), ❮ (command), V (visual), ▶ (replace); turns red on error |
proxy | System-wide HTTP/HTTPS/FTP proxy indicator |
public_ip | Public IP address |
pyenv | Python version from pyenv |
ram | Available free RAM |
ranger | Active ranger file manager shell |
rbenv | Ruby version from rbenv |
rust_version | Rust compiler (rustc) version |
rvm | Ruby version from rvm |
scalaenv | Scala version from scalaenv |
status | Exit code of the last command |
swap | Used swap space |
taskwarrior | Pending task count from Taskwarrior |
terraform | Active Terraform workspace |
terraform_version | Terraform version |
time | Current time (format configurable via POWERLEVEL9K_TIME_FORMAT) |
timewarrior | Active tracking tag from Timewarrior |
todo | Task count from todo.txt-cli |
toolbox | Active Toolbox container name |
vcs | Git repository status (branch, ahead/behind, staged, unstaged, untracked) |
vi_mode | Explicit vi mode label (redundant if prompt_char is enabled) |
vim_shell | Active Vim :sh shell indicator |
virtualenv | Python virtual environment from venv |
vpn_ip | Virtual private network indicator with optional IP address |
wifi | WiFi signal strength and speed |
xplr | Active xplr file manager shell |
yazi | Active yazi file manager shell |
Show on Command
Many segments are hidden by default and appear only when the command you are currently typing is relevant to them. This prevents the prompt from becoming cluttered. For example:SHOW_ON_COMMAND parameter. Search for SHOW_ON_COMMAND in ~/.p10k.zsh to find all such parameters at once.
Prefix the names of your own custom segments with
my_ (for example, my_cpu_temp) to avoid future naming conflicts with built-in segments added in later Powerlevel10k releases.