cmc/dotfiles

Using GNU Stow to manage my dotfiles. config dotfiles macos stow

common/zsh/.p10k.zsh

1731 lines · 90239 bytes

   1# Generated by Powerlevel10k configuration wizard on 2026-07-25 at 14:58 CDT.
   2# Based on romkatv/powerlevel10k/config/p10k-lean.zsh, checksum 26839.
   3# Wizard options: nerdfont-complete + powerline, small icons, ascii, lean, 24h time,
   4# 1 line, sparse, concise, transient_prompt, instant_prompt=verbose.
   5# Type `p10k configure` to generate another config.
   6#
   7# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate
   8# your own config based on it.
   9#
  10# Tip: Looking for a nice color? Here's a one-liner to print colormap.
  11#
  12#   for i in {0..255}; do print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
  13
  14# Temporarily change options.
  15'builtin' 'local' '-a' 'p10k_config_opts'
  16[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
  17[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
  18[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
  19'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
  20
  21() {
  22  emulate -L zsh -o extended_glob
  23
  24  # Unset all configuration options. This allows you to apply configuration changes without
  25  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
  26  unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
  27
  28  # Zsh >= 5.1 is required.
  29  [[ $ZSH_VERSION == (5.<1->*|<6->.*) ]] || return
  30
  31  # The list of segments shown on the left. Fill it with the most important segments.
  32  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
  33    # os_icon               # os identifier
  34    dir                     # current directory
  35    vcs                     # git status
  36    prompt_char             # prompt symbol
  37  )
  38
  39  # The list of segments shown on the right. Fill it with less important segments.
  40  # Right prompt on the last prompt line (where you are typing your commands) gets
  41  # automatically hidden when the input line reaches it. Right prompt above the
  42  # last prompt line gets hidden if it would overlap with left prompt.
  43  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
  44    signald_pet             # ambient-companions terminal-pet (see prompt_signald_pet below)
  45    status                  # exit code of the last command
  46    command_execution_time  # duration of the last command
  47    background_jobs         # presence of background jobs
  48    direnv                  # direnv status (https://direnv.net/)
  49    asdf                    # asdf version manager (https://github.com/asdf-vm/asdf)
  50    virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
  51    anaconda                # conda environment (https://conda.io/)
  52    pyenv                   # python environment (https://github.com/pyenv/pyenv)
  53    goenv                   # go environment (https://github.com/syndbg/goenv)
  54    nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
  55    nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
  56    nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
  57    # node_version          # node.js version
  58    # go_version            # go version (https://golang.org)
  59    # rust_version          # rustc version (https://www.rust-lang.org)
  60    # dotnet_version        # .NET version (https://dotnet.microsoft.com)
  61    # php_version           # php version (https://www.php.net/)
  62    # laravel_version       # laravel php framework version (https://laravel.com/)
  63    # java_version          # java version (https://www.java.com/)
  64    # package               # name@version from package.json (https://docs.npmjs.com/files/package.json)
  65    rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
  66    rvm                     # ruby version from rvm (https://rvm.io)
  67    fvm                     # flutter version management (https://github.com/leoafarias/fvm)
  68    luaenv                  # lua version from luaenv (https://github.com/cehoffman/luaenv)
  69    jenv                    # java version from jenv (https://github.com/jenv/jenv)
  70    plenv                   # perl version from plenv (https://github.com/tokuhirom/plenv)
  71    perlbrew                # perl version from perlbrew (https://github.com/gugod/App-perlbrew)
  72    phpenv                  # php version from phpenv (https://github.com/phpenv/phpenv)
  73    scalaenv                # scala version from scalaenv (https://github.com/scalaenv/scalaenv)
  74    haskell_stack           # haskell version from stack (https://haskellstack.org/)
  75    kubecontext             # current kubernetes context (https://kubernetes.io/)
  76    terraform               # terraform workspace (https://www.terraform.io)
  77    # terraform_version     # terraform version (https://www.terraform.io)
  78    aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
  79    aws_eb_env              # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
  80    azure                   # azure account name (https://docs.microsoft.com/en-us/cli/azure)
  81    gcloud                  # google cloud cli account and project (https://cloud.google.com/)
  82    google_app_cred         # google application credentials (https://cloud.google.com/docs/authentication/production)
  83    toolbox                 # toolbox name (https://github.com/containers/toolbox)
  84    context                 # user@hostname
  85    nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
  86    ranger                  # ranger shell (https://github.com/ranger/ranger)
  87    nnn                     # nnn shell (https://github.com/jarun/nnn)
  88    lf                      # lf shell (https://github.com/gokcehan/lf)
  89    xplr                    # xplr shell (https://github.com/sayanarijit/xplr)
  90    vim_shell               # vim shell indicator (:sh)
  91    midnight_commander      # midnight commander shell (https://midnight-commander.org/)
  92    nix_shell               # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
  93    chezmoi_shell           # chezmoi shell (https://www.chezmoi.io/)
  94    # vpn_ip                # virtual private network indicator
  95    # load                  # CPU load
  96    # disk_usage            # disk usage
  97    # ram                   # free RAM
  98    # swap                  # used swap
  99    todo                    # todo items (https://github.com/todotxt/todo.txt-cli)
 100    timewarrior             # timewarrior tracking status (https://timewarrior.net/)
 101    taskwarrior             # taskwarrior task count (https://taskwarrior.org/)
 102    per_directory_history   # Oh My Zsh per-directory-history local/global indicator
 103    # cpu_arch              # CPU architecture
 104    time                    # current time
 105    # ip                    # ip address and bandwidth usage for a specified network interface
 106    # public_ip             # public IP address
 107    # proxy                 # system-wide http/https/ftp proxy
 108    # battery               # internal battery
 109    # wifi                  # wifi speed
 110    # example               # example user-defined segment (see prompt_example function below)
 111  )
 112
 113  # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
 114  typeset -g POWERLEVEL9K_MODE=ascii
 115  # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid
 116  # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added.
 117  typeset -g POWERLEVEL9K_ICON_PADDING=none
 118
 119  # Basic style options that define the overall look of your prompt. You probably don't want to
 120  # change them.
 121  typeset -g POWERLEVEL9K_BACKGROUND=                            # transparent background
 122  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=  # no surrounding whitespace
 123  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '  # separate segments with a space
 124  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=        # no end-of-line symbol
 125
 126  # When set to true, icons appear before content on both sides of the prompt. When set
 127  # to false, icons go after content. If empty or not set, icons go before content in the left
 128  # prompt and after content in the right prompt.
 129  #
 130  # You can also override it for a specific segment:
 131  #
 132  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
 133  #
 134  # Or for a specific segment in specific state:
 135  #
 136  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
 137  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true
 138
 139  # Add an empty line before each prompt.
 140  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
 141
 142  # Connect left prompt lines with these symbols.
 143  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=
 144  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX=
 145  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=
 146  # Connect right prompt lines with these symbols.
 147  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
 148  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
 149  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=
 150
 151  # The left end of left prompt.
 152  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
 153  # The right end of right prompt.
 154  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=
 155
 156  # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
 157  # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and
 158  # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below.
 159  typeset -g POWERLEVEL9K_SHOW_RULER=false
 160  typeset -g POWERLEVEL9K_RULER_CHAR='-'        # reasonable alternative: '·'
 161  typeset -g POWERLEVEL9K_RULER_FOREGROUND=242
 162
 163  # Filler between left and right prompt on the first prompt line. You can set it to '·' or '-'
 164  # to make it easier to see the alignment between left and right prompt and to separate prompt
 165  # from command output. It serves the same purpose as ruler (see above) without increasing
 166  # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false
 167  # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact
 168  # prompt.
 169  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
 170  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
 171    # The color of the filler.
 172    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=242
 173    # Add a space between the end of left prompt and the filler.
 174    typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' '
 175    # Add a space between the filler and the start of right prompt.
 176    typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' '
 177    # Start filler from the edge of the screen if there are no left segments on the first line.
 178    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
 179    # End filler on the edge of the screen if there are no right segments on the first line.
 180    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
 181  fi
 182
 183  #################################[ os_icon: os identifier ]##################################
 184  # OS identifier color.
 185  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
 186  # Custom icon.
 187  # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐'
 188
 189  ################################[ prompt_char: prompt symbol ]################################
 190  # Green prompt symbol if the last command succeeded.
 191  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
 192  # Red prompt symbol if the last command failed.
 193  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
 194  # Default prompt symbol.
 195  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='>'
 196  # Prompt symbol in command vi mode.
 197  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='<'
 198  # Prompt symbol in visual vi mode.
 199  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V'
 200  # Prompt symbol in overwrite vi mode.
 201  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='^'
 202  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
 203  # No line terminator if prompt_char is the last segment.
 204  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
 205  # No line introducer if prompt_char is the first segment.
 206  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
 207
 208  ##################################[ dir: current directory ]##################################
 209  # Default current directory color.
 210  typeset -g POWERLEVEL9K_DIR_FOREGROUND=31
 211  # If directory is too long, shorten some of its segments to the shortest possible unique
 212  # prefix. The shortened directory can be tab-completed to the original.
 213  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
 214  # Replace removed segment suffixes with this symbol.
 215  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
 216  # Color of the shortened directory segments.
 217  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
 218  # Color of the anchor directory segments. Anchor segments are never shortened. The first
 219  # segment is always an anchor.
 220  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39
 221  # Display anchor directory segments in bold.
 222  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
 223  # Don't shorten directories that contain any of these files. They are anchors.
 224  local anchor_files=(
 225    .bzr
 226    .citc
 227    .git
 228    .hg
 229    .node-version
 230    .python-version
 231    .go-version
 232    .ruby-version
 233    .lua-version
 234    .java-version
 235    .perl-version
 236    .php-version
 237    .tool-versions
 238    .shorten_folder_marker
 239    .svn
 240    .terraform
 241    CVS
 242    Cargo.toml
 243    composer.json
 244    go.mod
 245    package.json
 246    stack.yaml
 247  )
 248  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
 249  # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains
 250  # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is
 251  # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first)
 252  # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers
 253  # and other directories don't.
 254  #
 255  # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer.
 256  # This moves the truncation point to the right (positive offset) or to the left (negative offset)
 257  # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0"
 258  # respectively.
 259  typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false
 260  # Don't shorten this many last directory segments. They are anchors.
 261  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
 262  # Shorten directory if it's longer than this even if there is space for it. The value can
 263  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
 264  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
 265  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
 266  # If set to `0`, directory will always be shortened to its minimum length.
 267  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
 268  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
 269  # many columns for typing commands.
 270  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
 271  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
 272  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
 273  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
 274  # If set to true, embed a hyperlink into the directory. Useful for quickly
 275  # opening a directory in the file manager simply by clicking the link.
 276  # Can also be handy when the directory is shortened, as it allows you to see
 277  # the full directory that was used in previous commands.
 278  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
 279
 280  # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON
 281  # and POWERLEVEL9K_DIR_CLASSES below.
 282  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3
 283
 284  # The default icon shown next to non-writable and non-existent directories when
 285  # POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3.
 286  # typeset -g POWERLEVEL9K_LOCK_ICON='⭐'
 287
 288  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons and colors for different
 289  # directories. It must be an array with 3 * N elements. Each triplet consists of:
 290  #
 291  #   1. A pattern against which the current directory ($PWD) is matched. Matching is done with
 292  #      extended_glob option enabled.
 293  #   2. Directory class for the purpose of styling.
 294  #   3. An empty string.
 295  #
 296  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins.
 297  #
 298  # If POWERLEVEL9K_DIR_SHOW_WRITABLE is set to v3, non-writable and non-existent directories
 299  # acquire class suffix _NOT_WRITABLE and NON_EXISTENT respectively.
 300  #
 301  # For example, given these settings:
 302  #
 303  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
 304  #     '~/work(|/*)'  WORK     ''
 305  #     '~(|/*)'       HOME     ''
 306  #     '*'            DEFAULT  '')
 307  #
 308  # Whenever the current directory is ~/work or a subdirectory of ~/work, it gets styled with one
 309  # of the following classes depending on its writability and existence: WORK, WORK_NOT_WRITABLE or
 310  # WORK_NON_EXISTENT.
 311  #
 312  # Simply assigning classes to directories doesn't have any visible effects. It merely gives you an
 313  # option to define custom colors and icons for different directory classes.
 314  #
 315  #   # Styling for WORK.
 316  #   typeset -g POWERLEVEL9K_DIR_WORK_VISUAL_IDENTIFIER_EXPANSION='⭐'
 317  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
 318  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
 319  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
 320  #
 321  #   # Styling for WORK_NOT_WRITABLE.
 322  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
 323  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND=31
 324  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_SHORTENED_FOREGROUND=103
 325  #   typeset -g POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_ANCHOR_FOREGROUND=39
 326  #
 327  #   # Styling for WORK_NON_EXISTENT.
 328  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_VISUAL_IDENTIFIER_EXPANSION='⭐'
 329  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_FOREGROUND=31
 330  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_SHORTENED_FOREGROUND=103
 331  #   typeset -g POWERLEVEL9K_DIR_WORK_NON_EXISTENT_ANCHOR_FOREGROUND=39
 332  #
 333  # If a styling parameter isn't explicitly defined for some class, it falls back to the classless
 334  # parameter. For example, if POWERLEVEL9K_DIR_WORK_NOT_WRITABLE_FOREGROUND is not set, it falls
 335  # back to POWERLEVEL9K_DIR_FOREGROUND.
 336  #
 337  typeset -g POWERLEVEL9K_DIR_CLASSES=()
 338
 339  # Custom prefix.
 340  # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
 341
 342  #####################################[ vcs: git status ]######################################
 343  # Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
 344  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
 345
 346  # Untracked files icon. It's really a question mark, your font isn't broken.
 347  # Change the value of this parameter to show a different icon.
 348  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
 349
 350  # Formatter for Git status.
 351  #
 352  # Example output: master wip <42>42 *42 merge ~42 +42 !42 ?42.
 353  #
 354  # You can edit the function to customize how Git status looks.
 355  #
 356  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
 357  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
 358  function my_git_formatter() {
 359    emulate -L zsh
 360
 361    if [[ -n $P9K_CONTENT ]]; then
 362      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
 363      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
 364      typeset -g my_git_format=$P9K_CONTENT
 365      return
 366    fi
 367
 368    if (( $1 )); then
 369      # Styling for up-to-date Git status.
 370      local       meta='%f'     # default foreground
 371      local      clean='%76F'   # green foreground
 372      local   modified='%178F'  # yellow foreground
 373      local  untracked='%39F'   # blue foreground
 374      local conflicted='%196F'  # red foreground
 375    else
 376      # Styling for incomplete and stale Git status.
 377      local       meta='%244F'  # grey foreground
 378      local      clean='%244F'  # grey foreground
 379      local   modified='%244F'  # grey foreground
 380      local  untracked='%244F'  # grey foreground
 381      local conflicted='%244F'  # grey foreground
 382    fi
 383
 384    local res
 385
 386    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
 387      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
 388      # If local branch name is at most 32 characters long, show it in full.
 389      # Otherwise show the first 12 .. the last 12.
 390      # Tip: To always show local branch name in full without truncation, delete the next line.
 391      (( $#branch > 32 )) && branch[13,-13]=".."  # <-- this line
 392      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
 393    fi
 394
 395    if [[ -n $VCS_STATUS_TAG
 396          # Show tag only if not on a branch.
 397          # Tip: To always show tag, delete the next line.
 398          && -z $VCS_STATUS_LOCAL_BRANCH  # <-- this line
 399        ]]; then
 400      local tag=${(V)VCS_STATUS_TAG}
 401      # If tag name is at most 32 characters long, show it in full.
 402      # Otherwise show the first 12 .. the last 12.
 403      # Tip: To always show tag name in full without truncation, delete the next line.
 404      (( $#tag > 32 )) && tag[13,-13]=".."  # <-- this line
 405      res+="${meta}#${clean}${tag//\%/%%}"
 406    fi
 407
 408    # Display the current Git commit if there is no branch and no tag.
 409    # Tip: To always display the current Git commit, delete the next line.
 410    [[ -z $VCS_STATUS_LOCAL_BRANCH && -z $VCS_STATUS_TAG ]] &&  # <-- this line
 411      res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
 412
 413    # Show tracking branch name if it differs from local branch.
 414    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
 415      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"
 416    fi
 417
 418    # Display "wip" if the latest commit's summary contains "wip" or "WIP".
 419    if [[ $VCS_STATUS_COMMIT_SUMMARY == (|*[^[:alnum:]])(wip|WIP)(|[^[:alnum:]]*) ]]; then
 420      res+=" ${modified}wip"
 421    fi
 422
 423    if (( VCS_STATUS_COMMITS_AHEAD || VCS_STATUS_COMMITS_BEHIND )); then
 424      # <42 if behind the remote.
 425      (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}<${VCS_STATUS_COMMITS_BEHIND}"
 426      # >42 if ahead of the remote; no leading space if also behind the remote: <42>42.
 427      (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
 428      (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}>${VCS_STATUS_COMMITS_AHEAD}"
 429    elif [[ -n $VCS_STATUS_REMOTE_BRANCH ]]; then
 430      # Tip: Uncomment the next line to display '=' if up to date with the remote.
 431      # res+=" ${clean}="
 432    fi
 433
 434    # <-42 if behind the push remote.
 435    (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}<-${VCS_STATUS_PUSH_COMMITS_BEHIND}"
 436    (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
 437    # ->42 if ahead of the push remote; no leading space if also behind: <-42->42.
 438    (( VCS_STATUS_PUSH_COMMITS_AHEAD  )) && res+="${clean}->${VCS_STATUS_PUSH_COMMITS_AHEAD}"
 439    # *42 if have stashes.
 440    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
 441    # 'merge' if the repo is in an unusual state.
 442    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
 443    # ~42 if have merge conflicts.
 444    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
 445    # +42 if have staged changes.
 446    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
 447    # !42 if have unstaged changes.
 448    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
 449    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
 450    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
 451    # Remove the next line if you don't want to see untracked files at all.
 452    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
 453    # "-" if the number of unstaged files is unknown. This can happen due to
 454    # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
 455    # than the number of files in the Git index, or due to bash.showDirtyState being set to false
 456    # in the repository config. The number of staged and untracked files may also be unknown
 457    # in this case.
 458    (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}-"
 459
 460    typeset -g my_git_format=$res
 461  }
 462  functions -M my_git_formatter 2>/dev/null
 463
 464  # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
 465  # more than this many files in the index. Negative value means infinity.
 466  #
 467  # If you are working in Git repositories with tens of millions of files and seeing performance
 468  # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
 469  # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
 470  # config: `git config bash.showDirtyState false`.
 471  typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
 472
 473  # Don't show Git status in prompt for repositories whose workdir matches this pattern.
 474  # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
 475  # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
 476  typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
 477
 478  # Disable the default Git status formatting.
 479  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
 480  # Install our own Git status formatter.
 481  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
 482  typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
 483  # Enable counters for staged, unstaged, etc.
 484  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
 485
 486  # Icon color.
 487  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76
 488  typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
 489  # Custom icon.
 490  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION=
 491  # Custom prefix.
 492  # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon '
 493
 494  # Show status of repositories of these types. You can add svn and/or hg if you are
 495  # using them. If you do, your prompt may become slow even when your current directory
 496  # isn't in an svn or hg repository.
 497  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
 498
 499  # These settings are used for repositories other than Git or when gitstatusd fails and
 500  # Powerlevel10k has to fall back to using vcs_info.
 501  typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
 502  typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
 503  typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
 504
 505  ##########################[ status: exit code of the last command ]###########################
 506  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
 507  # style them independently from the regular OK and ERROR state.
 508  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
 509
 510  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
 511  # it will signify success by turning green.
 512  typeset -g POWERLEVEL9K_STATUS_OK=false
 513  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
 514  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='ok'
 515
 516  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
 517  # like this: 1|0.
 518  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
 519  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
 520  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='ok'
 521
 522  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
 523  # it will signify error by turning red.
 524  typeset -g POWERLEVEL9K_STATUS_ERROR=false
 525  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
 526  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='err'
 527
 528  # Status when the last command was terminated by a signal.
 529  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
 530  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
 531  # Use terse signal names: "INT" instead of "SIGINT(2)".
 532  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
 533  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION=
 534
 535  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
 536  # It may look like this: 1|0.
 537  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
 538  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
 539  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='err'
 540
 541  ###################[ command_execution_time: duration of the last command ]###################
 542  # Show duration of the last command if takes at least this many seconds.
 543  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
 544  # Show this many fractional digits. Zero means round to seconds.
 545  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
 546  # Execution time color.
 547  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101
 548  # Duration format: 1d 2h 3m 4s.
 549  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
 550  # Custom icon.
 551  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION=
 552  # Custom prefix.
 553  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook '
 554
 555  #######################[ background_jobs: presence of background jobs ]#######################
 556  # Don't show the number of background jobs.
 557  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
 558  # Background jobs color.
 559  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70
 560  # Custom icon.
 561  # typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⭐'
 562
 563  #######################[ direnv: direnv status (https://direnv.net/) ]########################
 564  # Direnv color.
 565  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178
 566  # Custom icon.
 567  # typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
 568
 569  ###############[ asdf: asdf version manager (https://github.com/asdf-vm/asdf) ]###############
 570  # Default asdf color. Only used to display tools for which there is no color override (see below).
 571  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_FOREGROUND.
 572  typeset -g POWERLEVEL9K_ASDF_FOREGROUND=66
 573
 574  # There are four parameters that can be used to hide asdf tools. Each parameter describes
 575  # conditions under which a tool gets hidden. Parameters can hide tools but not unhide them. If at
 576  # least one parameter decides to hide a tool, that tool gets hidden. If no parameter decides to
 577  # hide a tool, it gets shown.
 578  #
 579  # Special note on the difference between POWERLEVEL9K_ASDF_SOURCES and
 580  # POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW. Consider the effect of the following commands:
 581  #
 582  #   asdf local  python 3.8.1
 583  #   asdf global python 3.8.1
 584  #
 585  # After running both commands the current python version is 3.8.1 and its source is "local" as
 586  # it takes precedence over "global". If POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW is set to false,
 587  # it'll hide python version in this case because 3.8.1 is the same as the global version.
 588  # POWERLEVEL9K_ASDF_SOURCES will hide python version only if the value of this parameter doesn't
 589  # contain "local".
 590
 591  # Hide tool versions that don't come from one of these sources.
 592  #
 593  # Available sources:
 594  #
 595  # - shell   `asdf current` says "set by ASDF_${TOOL}_VERSION environment variable"
 596  # - local   `asdf current` says "set by /some/not/home/directory/file"
 597  # - global  `asdf current` says "set by /home/username/file"
 598  #
 599  # Note: If this parameter is set to (shell local global), it won't hide tools.
 600  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SOURCES.
 601  typeset -g POWERLEVEL9K_ASDF_SOURCES=(shell local global)
 602
 603  # If set to false, hide tool versions that are the same as global.
 604  #
 605  # Note: The name of this parameter doesn't reflect its meaning at all.
 606  # Note: If this parameter is set to true, it won't hide tools.
 607  # Tip:  Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_PROMPT_ALWAYS_SHOW.
 608  typeset -g POWERLEVEL9K_ASDF_PROMPT_ALWAYS_SHOW=false
 609
 610  # If set to false, hide tool versions that are equal to "system".
 611  #
 612  # Note: If this parameter is set to true, it won't hide tools.
 613  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_SYSTEM.
 614  typeset -g POWERLEVEL9K_ASDF_SHOW_SYSTEM=true
 615
 616  # If set to non-empty value, hide tools unless there is a file matching the specified file pattern
 617  # in the current directory, or its parent directory, or its grandparent directory, and so on.
 618  #
 619  # Note: If this parameter is set to empty value, it won't hide tools.
 620  # Note: SHOW_ON_UPGLOB isn't specific to asdf. It works with all prompt segments.
 621  # Tip: Override this parameter for ${TOOL} with POWERLEVEL9K_ASDF_${TOOL}_SHOW_ON_UPGLOB.
 622  #
 623  # Example: Hide nodejs version when there is no package.json and no *.js files in the current
 624  # directory, in `..`, in `../..` and so on.
 625  #
 626  #   typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.js|package.json'
 627  typeset -g POWERLEVEL9K_ASDF_SHOW_ON_UPGLOB=
 628
 629  # Ruby version from asdf.
 630  typeset -g POWERLEVEL9K_ASDF_RUBY_FOREGROUND=168
 631  # typeset -g POWERLEVEL9K_ASDF_RUBY_VISUAL_IDENTIFIER_EXPANSION='⭐'
 632  # typeset -g POWERLEVEL9K_ASDF_RUBY_SHOW_ON_UPGLOB='*.foo|*.bar'
 633
 634  # Python version from asdf.
 635  typeset -g POWERLEVEL9K_ASDF_PYTHON_FOREGROUND=37
 636  # typeset -g POWERLEVEL9K_ASDF_PYTHON_VISUAL_IDENTIFIER_EXPANSION='⭐'
 637  # typeset -g POWERLEVEL9K_ASDF_PYTHON_SHOW_ON_UPGLOB='*.foo|*.bar'
 638
 639  # Go version from asdf.
 640  typeset -g POWERLEVEL9K_ASDF_GOLANG_FOREGROUND=37
 641  # typeset -g POWERLEVEL9K_ASDF_GOLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
 642  # typeset -g POWERLEVEL9K_ASDF_GOLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
 643
 644  # Node.js version from asdf.
 645  typeset -g POWERLEVEL9K_ASDF_NODEJS_FOREGROUND=70
 646  # typeset -g POWERLEVEL9K_ASDF_NODEJS_VISUAL_IDENTIFIER_EXPANSION='⭐'
 647  # typeset -g POWERLEVEL9K_ASDF_NODEJS_SHOW_ON_UPGLOB='*.foo|*.bar'
 648
 649  # Rust version from asdf.
 650  typeset -g POWERLEVEL9K_ASDF_RUST_FOREGROUND=37
 651  # typeset -g POWERLEVEL9K_ASDF_RUST_VISUAL_IDENTIFIER_EXPANSION='⭐'
 652  # typeset -g POWERLEVEL9K_ASDF_RUST_SHOW_ON_UPGLOB='*.foo|*.bar'
 653
 654  # .NET Core version from asdf.
 655  typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_FOREGROUND=134
 656  # typeset -g POWERLEVEL9K_ASDF_DOTNET_CORE_VISUAL_IDENTIFIER_EXPANSION='⭐'
 657  # typeset -g POWERLEVEL9K_ASDF_DOTNET_SHOW_ON_UPGLOB='*.foo|*.bar'
 658
 659  # Flutter version from asdf.
 660  typeset -g POWERLEVEL9K_ASDF_FLUTTER_FOREGROUND=38
 661  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_VISUAL_IDENTIFIER_EXPANSION='⭐'
 662  # typeset -g POWERLEVEL9K_ASDF_FLUTTER_SHOW_ON_UPGLOB='*.foo|*.bar'
 663
 664  # Lua version from asdf.
 665  typeset -g POWERLEVEL9K_ASDF_LUA_FOREGROUND=32
 666  # typeset -g POWERLEVEL9K_ASDF_LUA_VISUAL_IDENTIFIER_EXPANSION='⭐'
 667  # typeset -g POWERLEVEL9K_ASDF_LUA_SHOW_ON_UPGLOB='*.foo|*.bar'
 668
 669  # Java version from asdf.
 670  typeset -g POWERLEVEL9K_ASDF_JAVA_FOREGROUND=32
 671  # typeset -g POWERLEVEL9K_ASDF_JAVA_VISUAL_IDENTIFIER_EXPANSION='⭐'
 672  # typeset -g POWERLEVEL9K_ASDF_JAVA_SHOW_ON_UPGLOB='*.foo|*.bar'
 673
 674  # Perl version from asdf.
 675  typeset -g POWERLEVEL9K_ASDF_PERL_FOREGROUND=67
 676  # typeset -g POWERLEVEL9K_ASDF_PERL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 677  # typeset -g POWERLEVEL9K_ASDF_PERL_SHOW_ON_UPGLOB='*.foo|*.bar'
 678
 679  # Erlang version from asdf.
 680  typeset -g POWERLEVEL9K_ASDF_ERLANG_FOREGROUND=125
 681  # typeset -g POWERLEVEL9K_ASDF_ERLANG_VISUAL_IDENTIFIER_EXPANSION='⭐'
 682  # typeset -g POWERLEVEL9K_ASDF_ERLANG_SHOW_ON_UPGLOB='*.foo|*.bar'
 683
 684  # Elixir version from asdf.
 685  typeset -g POWERLEVEL9K_ASDF_ELIXIR_FOREGROUND=129
 686  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_VISUAL_IDENTIFIER_EXPANSION='⭐'
 687  # typeset -g POWERLEVEL9K_ASDF_ELIXIR_SHOW_ON_UPGLOB='*.foo|*.bar'
 688
 689  # Postgres version from asdf.
 690  typeset -g POWERLEVEL9K_ASDF_POSTGRES_FOREGROUND=31
 691  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_VISUAL_IDENTIFIER_EXPANSION='⭐'
 692  # typeset -g POWERLEVEL9K_ASDF_POSTGRES_SHOW_ON_UPGLOB='*.foo|*.bar'
 693
 694  # PHP version from asdf.
 695  typeset -g POWERLEVEL9K_ASDF_PHP_FOREGROUND=99
 696  # typeset -g POWERLEVEL9K_ASDF_PHP_VISUAL_IDENTIFIER_EXPANSION='⭐'
 697  # typeset -g POWERLEVEL9K_ASDF_PHP_SHOW_ON_UPGLOB='*.foo|*.bar'
 698
 699  # Haskell version from asdf.
 700  typeset -g POWERLEVEL9K_ASDF_HASKELL_FOREGROUND=172
 701  # typeset -g POWERLEVEL9K_ASDF_HASKELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 702  # typeset -g POWERLEVEL9K_ASDF_HASKELL_SHOW_ON_UPGLOB='*.foo|*.bar'
 703
 704  # Julia version from asdf.
 705  typeset -g POWERLEVEL9K_ASDF_JULIA_FOREGROUND=70
 706  # typeset -g POWERLEVEL9K_ASDF_JULIA_VISUAL_IDENTIFIER_EXPANSION='⭐'
 707  # typeset -g POWERLEVEL9K_ASDF_JULIA_SHOW_ON_UPGLOB='*.foo|*.bar'
 708
 709  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
 710  # NordVPN connection indicator color.
 711  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
 712  # Hide NordVPN connection indicator when not connected.
 713  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
 714  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
 715  # Custom icon.
 716  # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
 717
 718  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
 719  # Ranger shell color.
 720  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
 721  # Custom icon.
 722  # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
 723
 724  ######################[ nnn: nnn shell (https://github.com/jarun/nnn) ]#######################
 725  # Nnn shell color.
 726  typeset -g POWERLEVEL9K_NNN_FOREGROUND=72
 727  # Custom icon.
 728  # typeset -g POWERLEVEL9K_NNN_VISUAL_IDENTIFIER_EXPANSION='⭐'
 729
 730  ######################[ lf: lf shell (https://github.com/gokcehan/lf) ]#######################
 731  # lf shell color.
 732  typeset -g POWERLEVEL9K_LF_FOREGROUND=72
 733  # Custom icon.
 734  # typeset -g POWERLEVEL9K_LF_VISUAL_IDENTIFIER_EXPANSION='⭐'
 735
 736  ##################[ xplr: xplr shell (https://github.com/sayanarijit/xplr) ]##################
 737  # xplr shell color.
 738  typeset -g POWERLEVEL9K_XPLR_FOREGROUND=72
 739  # Custom icon.
 740  # typeset -g POWERLEVEL9K_XPLR_VISUAL_IDENTIFIER_EXPANSION='⭐'
 741
 742  ###########################[ vim_shell: vim shell indicator (:sh) ]###########################
 743  # Vim shell indicator color.
 744  typeset -g POWERLEVEL9K_VIM_SHELL_FOREGROUND=34
 745  # Custom icon.
 746  # typeset -g POWERLEVEL9K_VIM_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 747
 748  ######[ midnight_commander: midnight commander shell (https://midnight-commander.org/) ]######
 749  # Midnight Commander shell color.
 750  typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_FOREGROUND=178
 751  # Custom icon.
 752  # typeset -g POWERLEVEL9K_MIDNIGHT_COMMANDER_VISUAL_IDENTIFIER_EXPANSION='⭐'
 753
 754  #[ nix_shell: nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) ]##
 755  # Nix shell color.
 756  typeset -g POWERLEVEL9K_NIX_SHELL_FOREGROUND=74
 757
 758  # Display the icon of nix_shell if PATH contains a subdirectory of /nix/store.
 759  # typeset -g POWERLEVEL9K_NIX_SHELL_INFER_FROM_PATH=false
 760
 761  # Tip: If you want to see just the icon without "pure" and "impure", uncomment the next line.
 762  # typeset -g POWERLEVEL9K_NIX_SHELL_CONTENT_EXPANSION=
 763
 764  # Custom icon.
 765  # typeset -g POWERLEVEL9K_NIX_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 766
 767  ##################[ chezmoi_shell: chezmoi shell (https://www.chezmoi.io/) ]##################
 768  # chezmoi shell color.
 769  typeset -g POWERLEVEL9K_CHEZMOI_SHELL_FOREGROUND=33
 770  # Custom icon.
 771  # typeset -g POWERLEVEL9K_CHEZMOI_SHELL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 772
 773  ##################################[ disk_usage: disk usage ]##################################
 774  # Colors for different levels of disk usage.
 775  typeset -g POWERLEVEL9K_DISK_USAGE_NORMAL_FOREGROUND=35
 776  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_FOREGROUND=220
 777  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_FOREGROUND=160
 778  # Thresholds for different levels of disk usage (percentage points).
 779  typeset -g POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL=90
 780  typeset -g POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL=95
 781  # If set to true, hide disk usage when below $POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL percent.
 782  typeset -g POWERLEVEL9K_DISK_USAGE_ONLY_WARNING=false
 783  # Custom icon.
 784  # typeset -g POWERLEVEL9K_DISK_USAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
 785
 786  ######################################[ ram: free RAM ]#######################################
 787  # RAM color.
 788  typeset -g POWERLEVEL9K_RAM_FOREGROUND=66
 789  # Custom icon.
 790  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
 791
 792  #####################################[ swap: used swap ]######################################
 793  # Swap color.
 794  typeset -g POWERLEVEL9K_SWAP_FOREGROUND=96
 795  # Custom icon.
 796  # typeset -g POWERLEVEL9K_SWAP_VISUAL_IDENTIFIER_EXPANSION='⭐'
 797
 798  ######################################[ load: CPU load ]######################################
 799  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
 800  typeset -g POWERLEVEL9K_LOAD_WHICH=5
 801  # Load color when load is under 50%.
 802  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66
 803  # Load color when load is between 50% and 70%.
 804  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178
 805  # Load color when load is over 70%.
 806  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166
 807  # Custom icon.
 808  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
 809
 810  ################[ todo: todo items (https://github.com/todotxt/todo.txt-cli) ]################
 811  # Todo color.
 812  typeset -g POWERLEVEL9K_TODO_FOREGROUND=110
 813  # Hide todo when the total number of tasks is zero.
 814  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_TOTAL=true
 815  # Hide todo when the number of tasks after filtering is zero.
 816  typeset -g POWERLEVEL9K_TODO_HIDE_ZERO_FILTERED=false
 817
 818  # Todo format. The following parameters are available within the expansion.
 819  #
 820  # - P9K_TODO_TOTAL_TASK_COUNT     The total number of tasks.
 821  # - P9K_TODO_FILTERED_TASK_COUNT  The number of tasks after filtering.
 822  #
 823  # These variables correspond to the last line of the output of `todo.sh -p ls`:
 824  #
 825  #   TODO: 24 of 42 tasks shown
 826  #
 827  # Here 24 is P9K_TODO_FILTERED_TASK_COUNT and 42 is P9K_TODO_TOTAL_TASK_COUNT.
 828  #
 829  # typeset -g POWERLEVEL9K_TODO_CONTENT_EXPANSION='$P9K_TODO_FILTERED_TASK_COUNT'
 830
 831  # Custom icon.
 832  # typeset -g POWERLEVEL9K_TODO_VISUAL_IDENTIFIER_EXPANSION='⭐'
 833
 834  ###########[ timewarrior: timewarrior tracking status (https://timewarrior.net/) ]############
 835  # Timewarrior color.
 836  typeset -g POWERLEVEL9K_TIMEWARRIOR_FOREGROUND=110
 837  # If the tracked task is longer than 24 characters, truncate and append "..".
 838  # Tip: To always display tasks without truncation, delete the following parameter.
 839  # Tip: To hide task names and display just the icon when time tracking is enabled, set the
 840  # value of the following parameter to "".
 841  typeset -g POWERLEVEL9K_TIMEWARRIOR_CONTENT_EXPANSION='${P9K_CONTENT:0:24}${${P9K_CONTENT:24}:+..}'
 842
 843  # Custom icon.
 844  # typeset -g POWERLEVEL9K_TIMEWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
 845
 846  ##############[ taskwarrior: taskwarrior task count (https://taskwarrior.org/) ]##############
 847  # Taskwarrior color.
 848  typeset -g POWERLEVEL9K_TASKWARRIOR_FOREGROUND=74
 849
 850  # Taskwarrior segment format. The following parameters are available within the expansion.
 851  #
 852  # - P9K_TASKWARRIOR_PENDING_COUNT   The number of pending tasks: `task +PENDING count`.
 853  # - P9K_TASKWARRIOR_OVERDUE_COUNT   The number of overdue tasks: `task +OVERDUE count`.
 854  #
 855  # Zero values are represented as empty parameters.
 856  #
 857  # The default format:
 858  #
 859  #   '${P9K_TASKWARRIOR_OVERDUE_COUNT:+"!$P9K_TASKWARRIOR_OVERDUE_COUNT/"}$P9K_TASKWARRIOR_PENDING_COUNT'
 860  #
 861  # typeset -g POWERLEVEL9K_TASKWARRIOR_CONTENT_EXPANSION='$P9K_TASKWARRIOR_PENDING_COUNT'
 862
 863  # Custom icon.
 864  # typeset -g POWERLEVEL9K_TASKWARRIOR_VISUAL_IDENTIFIER_EXPANSION='⭐'
 865
 866  ######[ per_directory_history: Oh My Zsh per-directory-history local/global indicator ]#######
 867  # Color when using local/global history.
 868  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_FOREGROUND=135
 869  typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_FOREGROUND=130
 870
 871  # Tip: Uncomment the next two lines to hide "local"/"global" text and leave just the icon.
 872  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_CONTENT_EXPANSION=''
 873  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_CONTENT_EXPANSION=''
 874
 875  # Custom icon.
 876  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_LOCAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 877  # typeset -g POWERLEVEL9K_PER_DIRECTORY_HISTORY_GLOBAL_VISUAL_IDENTIFIER_EXPANSION='⭐'
 878
 879  ################################[ cpu_arch: CPU architecture ]################################
 880  # CPU architecture color.
 881  typeset -g POWERLEVEL9K_CPU_ARCH_FOREGROUND=172
 882
 883  # Hide the segment when on a specific CPU architecture.
 884  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_CONTENT_EXPANSION=
 885  # typeset -g POWERLEVEL9K_CPU_ARCH_X86_64_VISUAL_IDENTIFIER_EXPANSION=
 886
 887  # Custom icon.
 888  # typeset -g POWERLEVEL9K_CPU_ARCH_VISUAL_IDENTIFIER_EXPANSION='⭐'
 889
 890  ##################################[ context: user@hostname ]##################################
 891  # Context color when running with privileges.
 892  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
 893  # Context color in SSH without privileges.
 894  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND=180
 895  # Default context color (no privileges, no SSH).
 896  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180
 897
 898  # Context format when running with privileges: bold user@hostname.
 899  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m'
 900  # Context format when in SSH without privileges: user@hostname.
 901  typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m'
 902  # Default context format (no privileges, no SSH): user@hostname.
 903  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
 904
 905  # Don't show context unless running with privileges or in SSH.
 906  # Tip: Remove the next line to always show context.
 907  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
 908
 909  # Custom icon.
 910  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
 911  # Custom prefix.
 912  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith '
 913
 914  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
 915  # Python virtual environment color.
 916  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
 917  # Don't show Python version next to the virtual environment name.
 918  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
 919  # If set to "false", won't show virtualenv if pyenv is already shown.
 920  # If set to "if-different", won't show virtualenv if it's the same as pyenv.
 921  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false
 922  # Separate environment name from Python version only with a space.
 923  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
 924  # Custom icon.
 925  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
 926
 927  #####################[ anaconda: conda environment (https://conda.io/) ]######################
 928  # Anaconda environment color.
 929  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
 930
 931  # Anaconda segment format. The following parameters are available within the expansion.
 932  #
 933  # - CONDA_PREFIX                 Absolute path to the active Anaconda/Miniconda environment.
 934  # - CONDA_DEFAULT_ENV            Name of the active Anaconda/Miniconda environment.
 935  # - CONDA_PROMPT_MODIFIER        Configurable prompt modifier (see below).
 936  # - P9K_ANACONDA_PYTHON_VERSION  Current python version (python --version).
 937  #
 938  # CONDA_PROMPT_MODIFIER can be configured with the following command:
 939  #
 940  #   conda config --set env_prompt '({default_env}) '
 941  #
 942  # The last argument is a Python format string that can use the following variables:
 943  #
 944  # - prefix       The same as CONDA_PREFIX.
 945  # - default_env  The same as CONDA_DEFAULT_ENV.
 946  # - name         The last segment of CONDA_PREFIX.
 947  # - stacked_env  Comma-separated list of names in the environment stack. The first element is
 948  #                always the same as default_env.
 949  #
 950  # Note: '({default_env}) ' is the default value of env_prompt.
 951  #
 952  # The default value of POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION expands to $CONDA_PROMPT_MODIFIER
 953  # without the surrounding parentheses, or to the last path component of CONDA_PREFIX if the former
 954  # is empty.
 955  typeset -g POWERLEVEL9K_ANACONDA_CONTENT_EXPANSION='${${${${CONDA_PROMPT_MODIFIER#\(}% }%\)}:-${CONDA_PREFIX:t}}'
 956
 957  # Custom icon.
 958  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
 959
 960  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
 961  # Pyenv color.
 962  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37
 963  # Hide python version if it doesn't come from one of these sources.
 964  typeset -g POWERLEVEL9K_PYENV_SOURCES=(shell local global)
 965  # If set to false, hide python version if it's the same as global:
 966  # $(pyenv version-name) == $(pyenv global).
 967  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
 968  # If set to false, hide python version if it's equal to "system".
 969  typeset -g POWERLEVEL9K_PYENV_SHOW_SYSTEM=true
 970
 971  # Pyenv segment format. The following parameters are available within the expansion.
 972  #
 973  # - P9K_CONTENT                Current pyenv environment (pyenv version-name).
 974  # - P9K_PYENV_PYTHON_VERSION   Current python version (python --version).
 975  #
 976  # The default format has the following logic:
 977  #
 978  # 1. Display just "$P9K_CONTENT" if it's equal to "$P9K_PYENV_PYTHON_VERSION" or
 979  #    starts with "$P9K_PYENV_PYTHON_VERSION/".
 980  # 2. Otherwise display "$P9K_CONTENT $P9K_PYENV_PYTHON_VERSION".
 981  typeset -g POWERLEVEL9K_PYENV_CONTENT_EXPANSION='${P9K_CONTENT}${${P9K_CONTENT:#$P9K_PYENV_PYTHON_VERSION(|/*)}:+ $P9K_PYENV_PYTHON_VERSION}'
 982
 983  # Custom icon.
 984  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
 985
 986  ################[ goenv: go environment (https://github.com/syndbg/goenv) ]################
 987  # Goenv color.
 988  typeset -g POWERLEVEL9K_GOENV_FOREGROUND=37
 989  # Hide go version if it doesn't come from one of these sources.
 990  typeset -g POWERLEVEL9K_GOENV_SOURCES=(shell local global)
 991  # If set to false, hide go version if it's the same as global:
 992  # $(goenv version-name) == $(goenv global).
 993  typeset -g POWERLEVEL9K_GOENV_PROMPT_ALWAYS_SHOW=false
 994  # If set to false, hide go version if it's equal to "system".
 995  typeset -g POWERLEVEL9K_GOENV_SHOW_SYSTEM=true
 996  # Custom icon.
 997  # typeset -g POWERLEVEL9K_GOENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
 998
 999  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
1000  # Nodenv color.
1001  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70
1002  # Hide node version if it doesn't come from one of these sources.
1003  typeset -g POWERLEVEL9K_NODENV_SOURCES=(shell local global)
1004  # If set to false, hide node version if it's the same as global:
1005  # $(nodenv version-name) == $(nodenv global).
1006  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
1007  # If set to false, hide node version if it's equal to "system".
1008  typeset -g POWERLEVEL9K_NODENV_SHOW_SYSTEM=true
1009  # Custom icon.
1010  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1011
1012  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
1013  # Nvm color.
1014  typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
1015  # If set to false, hide node version if it's the same as default:
1016  # $(nvm version current) == $(nvm version default).
1017  typeset -g POWERLEVEL9K_NVM_PROMPT_ALWAYS_SHOW=false
1018  # If set to false, hide node version if it's equal to "system".
1019  typeset -g POWERLEVEL9K_NVM_SHOW_SYSTEM=true
1020  # Custom icon.
1021  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
1022
1023  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
1024  # Nodeenv color.
1025  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70
1026  # Don't show Node version next to the environment name.
1027  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
1028  # Separate environment name from Node version only with a space.
1029  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
1030  # Custom icon.
1031  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1032
1033  ##############################[ node_version: node.js version ]###############################
1034  # Node version color.
1035  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70
1036  # Show node version only when in a directory tree containing package.json.
1037  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
1038  # Custom icon.
1039  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1040
1041  #######################[ go_version: go version (https://golang.org) ]########################
1042  # Go version color.
1043  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37
1044  # Show go version only when in a go project subdirectory.
1045  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
1046  # Custom icon.
1047  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1048
1049  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
1050  # Rust version color.
1051  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37
1052  # Show rust version only when in a rust project subdirectory.
1053  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
1054  # Custom icon.
1055  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1056
1057  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
1058  # .NET version color.
1059  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134
1060  # Show .NET version only when in a .NET project subdirectory.
1061  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
1062  # Custom icon.
1063  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1064
1065  #####################[ php_version: php version (https://www.php.net/) ]######################
1066  # PHP version color.
1067  typeset -g POWERLEVEL9K_PHP_VERSION_FOREGROUND=99
1068  # Show PHP version only when in a PHP project subdirectory.
1069  typeset -g POWERLEVEL9K_PHP_VERSION_PROJECT_ONLY=true
1070  # Custom icon.
1071  # typeset -g POWERLEVEL9K_PHP_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1072
1073  ##########[ laravel_version: laravel php framework version (https://laravel.com/) ]###########
1074  # Laravel version color.
1075  typeset -g POWERLEVEL9K_LARAVEL_VERSION_FOREGROUND=161
1076  # Custom icon.
1077  # typeset -g POWERLEVEL9K_LARAVEL_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1078
1079  ####################[ java_version: java version (https://www.java.com/) ]####################
1080  # Java version color.
1081  typeset -g POWERLEVEL9K_JAVA_VERSION_FOREGROUND=32
1082  # Show java version only when in a java project subdirectory.
1083  typeset -g POWERLEVEL9K_JAVA_VERSION_PROJECT_ONLY=true
1084  # Show brief version.
1085  typeset -g POWERLEVEL9K_JAVA_VERSION_FULL=false
1086  # Custom icon.
1087  # typeset -g POWERLEVEL9K_JAVA_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1088
1089  ###[ package: name@version from package.json (https://docs.npmjs.com/files/package.json) ]####
1090  # Package color.
1091  typeset -g POWERLEVEL9K_PACKAGE_FOREGROUND=117
1092  # Package format. The following parameters are available within the expansion.
1093  #
1094  # - P9K_PACKAGE_NAME     The value of `name` field in package.json.
1095  # - P9K_PACKAGE_VERSION  The value of `version` field in package.json.
1096  #
1097  # typeset -g POWERLEVEL9K_PACKAGE_CONTENT_EXPANSION='${P9K_PACKAGE_NAME//\%/%%}@${P9K_PACKAGE_VERSION//\%/%%}'
1098  # Custom icon.
1099  # typeset -g POWERLEVEL9K_PACKAGE_VISUAL_IDENTIFIER_EXPANSION='⭐'
1100
1101  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
1102  # Rbenv color.
1103  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168
1104  # Hide ruby version if it doesn't come from one of these sources.
1105  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
1106  # If set to false, hide ruby version if it's the same as global:
1107  # $(rbenv version-name) == $(rbenv global).
1108  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
1109  # If set to false, hide ruby version if it's equal to "system".
1110  typeset -g POWERLEVEL9K_RBENV_SHOW_SYSTEM=true
1111  # Custom icon.
1112  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1113
1114  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
1115  # Rvm color.
1116  typeset -g POWERLEVEL9K_RVM_FOREGROUND=168
1117  # Don't show @gemset at the end.
1118  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
1119  # Don't show ruby- at the front.
1120  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
1121  # Custom icon.
1122  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
1123
1124  ###########[ fvm: flutter version management (https://github.com/leoafarias/fvm) ]############
1125  # Fvm color.
1126  typeset -g POWERLEVEL9K_FVM_FOREGROUND=38
1127  # Custom icon.
1128  # typeset -g POWERLEVEL9K_FVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
1129
1130  ##########[ luaenv: lua version from luaenv (https://github.com/cehoffman/luaenv) ]###########
1131  # Lua color.
1132  typeset -g POWERLEVEL9K_LUAENV_FOREGROUND=32
1133  # Hide lua version if it doesn't come from one of these sources.
1134  typeset -g POWERLEVEL9K_LUAENV_SOURCES=(shell local global)
1135  # If set to false, hide lua version if it's the same as global:
1136  # $(luaenv version-name) == $(luaenv global).
1137  typeset -g POWERLEVEL9K_LUAENV_PROMPT_ALWAYS_SHOW=false
1138  # If set to false, hide lua version if it's equal to "system".
1139  typeset -g POWERLEVEL9K_LUAENV_SHOW_SYSTEM=true
1140  # Custom icon.
1141  # typeset -g POWERLEVEL9K_LUAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1142
1143  ###############[ jenv: java version from jenv (https://github.com/jenv/jenv) ]################
1144  # Java color.
1145  typeset -g POWERLEVEL9K_JENV_FOREGROUND=32
1146  # Hide java version if it doesn't come from one of these sources.
1147  typeset -g POWERLEVEL9K_JENV_SOURCES=(shell local global)
1148  # If set to false, hide java version if it's the same as global:
1149  # $(jenv version-name) == $(jenv global).
1150  typeset -g POWERLEVEL9K_JENV_PROMPT_ALWAYS_SHOW=false
1151  # If set to false, hide java version if it's equal to "system".
1152  typeset -g POWERLEVEL9K_JENV_SHOW_SYSTEM=true
1153  # Custom icon.
1154  # typeset -g POWERLEVEL9K_JENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1155
1156  ###########[ plenv: perl version from plenv (https://github.com/tokuhirom/plenv) ]############
1157  # Perl color.
1158  typeset -g POWERLEVEL9K_PLENV_FOREGROUND=67
1159  # Hide perl version if it doesn't come from one of these sources.
1160  typeset -g POWERLEVEL9K_PLENV_SOURCES=(shell local global)
1161  # If set to false, hide perl version if it's the same as global:
1162  # $(plenv version-name) == $(plenv global).
1163  typeset -g POWERLEVEL9K_PLENV_PROMPT_ALWAYS_SHOW=false
1164  # If set to false, hide perl version if it's equal to "system".
1165  typeset -g POWERLEVEL9K_PLENV_SHOW_SYSTEM=true
1166  # Custom icon.
1167  # typeset -g POWERLEVEL9K_PLENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1168
1169  ###########[ perlbrew: perl version from perlbrew (https://github.com/gugod/App-perlbrew) ]############
1170  # Perlbrew color.
1171  typeset -g POWERLEVEL9K_PERLBREW_FOREGROUND=67
1172  # Show perlbrew version only when in a perl project subdirectory.
1173  typeset -g POWERLEVEL9K_PERLBREW_PROJECT_ONLY=true
1174  # Don't show "perl-" at the front.
1175  typeset -g POWERLEVEL9K_PERLBREW_SHOW_PREFIX=false
1176  # Custom icon.
1177  # typeset -g POWERLEVEL9K_PERLBREW_VISUAL_IDENTIFIER_EXPANSION='⭐'
1178
1179  ############[ phpenv: php version from phpenv (https://github.com/phpenv/phpenv) ]############
1180  # PHP color.
1181  typeset -g POWERLEVEL9K_PHPENV_FOREGROUND=99
1182  # Hide php version if it doesn't come from one of these sources.
1183  typeset -g POWERLEVEL9K_PHPENV_SOURCES=(shell local global)
1184  # If set to false, hide php version if it's the same as global:
1185  # $(phpenv version-name) == $(phpenv global).
1186  typeset -g POWERLEVEL9K_PHPENV_PROMPT_ALWAYS_SHOW=false
1187  # If set to false, hide php version if it's equal to "system".
1188  typeset -g POWERLEVEL9K_PHPENV_SHOW_SYSTEM=true
1189  # Custom icon.
1190  # typeset -g POWERLEVEL9K_PHPENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1191
1192  #######[ scalaenv: scala version from scalaenv (https://github.com/scalaenv/scalaenv) ]#######
1193  # Scala color.
1194  typeset -g POWERLEVEL9K_SCALAENV_FOREGROUND=160
1195  # Hide scala version if it doesn't come from one of these sources.
1196  typeset -g POWERLEVEL9K_SCALAENV_SOURCES=(shell local global)
1197  # If set to false, hide scala version if it's the same as global:
1198  # $(scalaenv version-name) == $(scalaenv global).
1199  typeset -g POWERLEVEL9K_SCALAENV_PROMPT_ALWAYS_SHOW=false
1200  # If set to false, hide scala version if it's equal to "system".
1201  typeset -g POWERLEVEL9K_SCALAENV_SHOW_SYSTEM=true
1202  # Custom icon.
1203  # typeset -g POWERLEVEL9K_SCALAENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1204
1205  ##########[ haskell_stack: haskell version from stack (https://haskellstack.org/) ]###########
1206  # Haskell color.
1207  typeset -g POWERLEVEL9K_HASKELL_STACK_FOREGROUND=172
1208  # Hide haskell version if it doesn't come from one of these sources.
1209  #
1210  #   shell:  version is set by STACK_YAML
1211  #   local:  version is set by stack.yaml up the directory tree
1212  #   global: version is set by the implicit global project (~/.stack/global-project/stack.yaml)
1213  typeset -g POWERLEVEL9K_HASKELL_STACK_SOURCES=(shell local)
1214  # If set to false, hide haskell version if it's the same as in the implicit global project.
1215  typeset -g POWERLEVEL9K_HASKELL_STACK_ALWAYS_SHOW=true
1216  # Custom icon.
1217  # typeset -g POWERLEVEL9K_HASKELL_STACK_VISUAL_IDENTIFIER_EXPANSION='⭐'
1218
1219  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
1220  # Show kubecontext only when the command you are typing invokes one of these tools.
1221  # Tip: Remove the next line to always show kubecontext.
1222  typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile|flux|fluxctl|stern|kubeseal|skaffold|kubent|kubecolor|cmctl|sparkctl'
1223
1224  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
1225  # different contexts.
1226  #
1227  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
1228  # in each pair defines a pattern against which the current kubernetes context gets matched.
1229  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
1230  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
1231  # you'll see this value in your prompt. The second element of each pair in
1232  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
1233  # first match wins.
1234  #
1235  # For example, given these settings:
1236  #
1237  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
1238  #     '*prod*'  PROD
1239  #     '*test*'  TEST
1240  #     '*'       DEFAULT)
1241  #
1242  # If your current kubernetes context is "deathray-testing/default", its class is TEST
1243  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
1244  #
1245  # You can define different colors, icons and content expansions for different classes:
1246  #
1247  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28
1248  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
1249  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
1250  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
1251      # '*prod*'  PROD    # These values are examples that are unlikely
1252      # '*test*'  TEST    # to match your needs. Customize them as needed.
1253      '*'       DEFAULT)
1254  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134
1255  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
1256
1257  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
1258  # segment. Parameter expansions are very flexible and fast, too. See reference:
1259  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
1260  #
1261  # Within the expansion the following parameters are always available:
1262  #
1263  # - P9K_CONTENT                The content that would've been displayed if there was no content
1264  #                              expansion defined.
1265  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
1266  #                              output of `kubectl config get-contexts`.
1267  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
1268  #                              output of `kubectl config get-contexts`.
1269  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
1270  #                              in the output of `kubectl config get-contexts`. If there is no
1271  #                              namespace, the parameter is set to "default".
1272  # - P9K_KUBECONTEXT_USER       The current context's user. Corresponds to column AUTHINFO in the
1273  #                              output of `kubectl config get-contexts`.
1274  #
1275  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
1276  # the following extra parameters are available:
1277  #
1278  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
1279  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
1280  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
1281  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
1282  #
1283  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
1284  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
1285  #
1286  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
1287  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
1288  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
1289  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
1290  #
1291  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
1292  #
1293  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
1294  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
1295  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
1296  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
1297  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
1298  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
1299  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
1300  # Append the current context's namespace if it's not "default".
1301  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
1302
1303  # Custom prefix.
1304  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
1305
1306  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
1307  # Don't show terraform workspace if it's literally "default".
1308  typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false
1309  # POWERLEVEL9K_TERRAFORM_CLASSES is an array with even number of elements. The first element
1310  # in each pair defines a pattern against which the current terraform workspace gets matched.
1311  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
1312  # that gets matched. If you unset all POWERLEVEL9K_TERRAFORM_*CONTENT_EXPANSION parameters,
1313  # you'll see this value in your prompt. The second element of each pair in
1314  # POWERLEVEL9K_TERRAFORM_CLASSES defines the workspace class. Patterns are tried in order. The
1315  # first match wins.
1316  #
1317  # For example, given these settings:
1318  #
1319  #   typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
1320  #     '*prod*'  PROD
1321  #     '*test*'  TEST
1322  #     '*'       OTHER)
1323  #
1324  # If your current terraform workspace is "project_test", its class is TEST because "project_test"
1325  # doesn't match the pattern '*prod*' but does match '*test*'.
1326  #
1327  # You can define different colors, icons and content expansions for different classes:
1328  #
1329  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_FOREGROUND=28
1330  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
1331  #   typeset -g POWERLEVEL9K_TERRAFORM_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
1332  typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=(
1333      # '*prod*'  PROD    # These values are examples that are unlikely
1334      # '*test*'  TEST    # to match your needs. Customize them as needed.
1335      '*'         OTHER)
1336  typeset -g POWERLEVEL9K_TERRAFORM_OTHER_FOREGROUND=38
1337  # typeset -g POWERLEVEL9K_TERRAFORM_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
1338
1339  #############[ terraform_version: terraform version (https://www.terraform.io) ]##############
1340  # Terraform version color.
1341  typeset -g POWERLEVEL9K_TERRAFORM_VERSION_FOREGROUND=38
1342  # Custom icon.
1343  # typeset -g POWERLEVEL9K_TERRAFORM_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
1344
1345  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
1346  # Show aws only when the command you are typing invokes one of these tools.
1347  # Tip: Remove the next line to always show aws.
1348  typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|awless|cdk|terraform|pulumi|terragrunt'
1349
1350  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
1351  # in each pair defines a pattern against which the current AWS profile gets matched.
1352  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
1353  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
1354  # you'll see this value in your prompt. The second element of each pair in
1355  # POWERLEVEL9K_AWS_CLASSES defines the profile class. Patterns are tried in order. The
1356  # first match wins.
1357  #
1358  # For example, given these settings:
1359  #
1360  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
1361  #     '*prod*'  PROD
1362  #     '*test*'  TEST
1363  #     '*'       DEFAULT)
1364  #
1365  # If your current AWS profile is "company_test", its class is TEST
1366  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
1367  #
1368  # You can define different colors, icons and content expansions for different classes:
1369  #
1370  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
1371  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
1372  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
1373  typeset -g POWERLEVEL9K_AWS_CLASSES=(
1374      # '*prod*'  PROD    # These values are examples that are unlikely
1375      # '*test*'  TEST    # to match your needs. Customize them as needed.
1376      '*'       DEFAULT)
1377  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
1378  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
1379
1380  # AWS segment format. The following parameters are available within the expansion.
1381  #
1382  # - P9K_AWS_PROFILE  The name of the current AWS profile.
1383  # - P9K_AWS_REGION   The region associated with the current AWS profile.
1384  typeset -g POWERLEVEL9K_AWS_CONTENT_EXPANSION='${P9K_AWS_PROFILE//\%/%%}${P9K_AWS_REGION:+ ${P9K_AWS_REGION//\%/%%}}'
1385
1386  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
1387  # AWS Elastic Beanstalk environment color.
1388  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
1389  # Custom icon.
1390  # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
1391
1392  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
1393  # Show azure only when the command you are typing invokes one of these tools.
1394  # Tip: Remove the next line to always show azure.
1395  typeset -g POWERLEVEL9K_AZURE_SHOW_ON_COMMAND='az|terraform|pulumi|terragrunt'
1396
1397  # POWERLEVEL9K_AZURE_CLASSES is an array with even number of elements. The first element
1398  # in each pair defines a pattern against which the current azure account name gets matched.
1399  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
1400  # that gets matched. If you unset all POWERLEVEL9K_AZURE_*CONTENT_EXPANSION parameters,
1401  # you'll see this value in your prompt. The second element of each pair in
1402  # POWERLEVEL9K_AZURE_CLASSES defines the account class. Patterns are tried in order. The
1403  # first match wins.
1404  #
1405  # For example, given these settings:
1406  #
1407  #   typeset -g POWERLEVEL9K_AZURE_CLASSES=(
1408  #     '*prod*'  PROD
1409  #     '*test*'  TEST
1410  #     '*'       OTHER)
1411  #
1412  # If your current azure account is "company_test", its class is TEST because "company_test"
1413  # doesn't match the pattern '*prod*' but does match '*test*'.
1414  #
1415  # You can define different colors, icons and content expansions for different classes:
1416  #
1417  #   typeset -g POWERLEVEL9K_AZURE_TEST_FOREGROUND=28
1418  #   typeset -g POWERLEVEL9K_AZURE_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
1419  #   typeset -g POWERLEVEL9K_AZURE_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
1420  typeset -g POWERLEVEL9K_AZURE_CLASSES=(
1421      # '*prod*'  PROD    # These values are examples that are unlikely
1422      # '*test*'  TEST    # to match your needs. Customize them as needed.
1423      '*'         OTHER)
1424
1425  # Azure account name color.
1426  typeset -g POWERLEVEL9K_AZURE_OTHER_FOREGROUND=32
1427  # Custom icon.
1428  # typeset -g POWERLEVEL9K_AZURE_OTHER_VISUAL_IDENTIFIER_EXPANSION='⭐'
1429
1430  ##########[ gcloud: google cloud account and project (https://cloud.google.com/) ]###########
1431  # Show gcloud only when the command you are typing invokes one of these tools.
1432  # Tip: Remove the next line to always show gcloud.
1433  typeset -g POWERLEVEL9K_GCLOUD_SHOW_ON_COMMAND='gcloud|gcs|gsutil'
1434   # Google cloud color.
1435  typeset -g POWERLEVEL9K_GCLOUD_FOREGROUND=32
1436
1437  # Google cloud format. Change the value of POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION and/or
1438  # POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION if the default is too verbose or not informative
1439  # enough. You can use the following parameters in the expansions. Each of them corresponds to the
1440  # output of `gcloud` tool.
1441  #
1442  #   Parameter                | Source
1443  #   -------------------------|--------------------------------------------------------------------
1444  #   P9K_GCLOUD_CONFIGURATION | gcloud config configurations list --format='value(name)'
1445  #   P9K_GCLOUD_ACCOUNT       | gcloud config get-value account
1446  #   P9K_GCLOUD_PROJECT_ID    | gcloud config get-value project
1447  #   P9K_GCLOUD_PROJECT_NAME  | gcloud projects describe $P9K_GCLOUD_PROJECT_ID --format='value(name)'
1448  #
1449  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced with '%%'.
1450  #
1451  # Obtaining project name requires sending a request to Google servers. This can take a long time
1452  # and even fail. When project name is unknown, P9K_GCLOUD_PROJECT_NAME is not set and gcloud
1453  # prompt segment is in state PARTIAL. When project name gets known, P9K_GCLOUD_PROJECT_NAME gets
1454  # set and gcloud prompt segment transitions to state COMPLETE.
1455  #
1456  # You can customize the format, icon and colors of gcloud segment separately for states PARTIAL
1457  # and COMPLETE. You can also hide gcloud in state PARTIAL by setting
1458  # POWERLEVEL9K_GCLOUD_PARTIAL_VISUAL_IDENTIFIER_EXPANSION and
1459  # POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION to empty.
1460  typeset -g POWERLEVEL9K_GCLOUD_PARTIAL_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_ID//\%/%%}'
1461  typeset -g POWERLEVEL9K_GCLOUD_COMPLETE_CONTENT_EXPANSION='${P9K_GCLOUD_PROJECT_NAME//\%/%%}'
1462
1463  # Send a request to Google (by means of `gcloud projects describe ...`) to obtain project name
1464  # this often. Negative value disables periodic polling. In this mode project name is retrieved
1465  # only when the current configuration, account or project id changes.
1466  typeset -g POWERLEVEL9K_GCLOUD_REFRESH_PROJECT_NAME_SECONDS=60
1467
1468  # Custom icon.
1469  # typeset -g POWERLEVEL9K_GCLOUD_VISUAL_IDENTIFIER_EXPANSION='⭐'
1470
1471  #[ google_app_cred: google application credentials (https://cloud.google.com/docs/authentication/production) ]#
1472  # Show google_app_cred only when the command you are typing invokes one of these tools.
1473  # Tip: Remove the next line to always show google_app_cred.
1474  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_SHOW_ON_COMMAND='terraform|pulumi|terragrunt'
1475
1476  # Google application credentials classes for the purpose of using different colors, icons and
1477  # expansions with different credentials.
1478  #
1479  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES is an array with even number of elements. The first
1480  # element in each pair defines a pattern against which the current kubernetes context gets
1481  # matched. More specifically, it's P9K_CONTENT prior to the application of context expansion
1482  # (see below) that gets matched. If you unset all POWERLEVEL9K_GOOGLE_APP_CRED_*CONTENT_EXPANSION
1483  # parameters, you'll see this value in your prompt. The second element of each pair in
1484  # POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES defines the context class. Patterns are tried in order.
1485  # The first match wins.
1486  #
1487  # For example, given these settings:
1488  #
1489  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
1490  #     '*:*prod*:*'  PROD
1491  #     '*:*test*:*'  TEST
1492  #     '*'           DEFAULT)
1493  #
1494  # If your current Google application credentials is "service_account deathray-testing x@y.com",
1495  # its class is TEST because it doesn't match the pattern '* *prod* *' but does match '* *test* *'.
1496  #
1497  # You can define different colors, icons and content expansions for different classes:
1498  #
1499  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_FOREGROUND=28
1500  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
1501  #   typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_TEST_CONTENT_EXPANSION='$P9K_GOOGLE_APP_CRED_PROJECT_ID'
1502  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_CLASSES=(
1503      # '*:*prod*:*'  PROD    # These values are examples that are unlikely
1504      # '*:*test*:*'  TEST    # to match your needs. Customize them as needed.
1505      '*'             DEFAULT)
1506  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_FOREGROUND=32
1507  # typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
1508
1509  # Use POWERLEVEL9K_GOOGLE_APP_CRED_CONTENT_EXPANSION to specify the content displayed by
1510  # google_app_cred segment. Parameter expansions are very flexible and fast, too. See reference:
1511  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
1512  #
1513  # You can use the following parameters in the expansion. Each of them corresponds to one of the
1514  # fields in the JSON file pointed to by GOOGLE_APPLICATION_CREDENTIALS.
1515  #
1516  #   Parameter                        | JSON key file field
1517  #   ---------------------------------+---------------
1518  #   P9K_GOOGLE_APP_CRED_TYPE         | type
1519  #   P9K_GOOGLE_APP_CRED_PROJECT_ID   | project_id
1520  #   P9K_GOOGLE_APP_CRED_CLIENT_EMAIL | client_email
1521  #
1522  # Note: ${VARIABLE//\%/%%} expands to ${VARIABLE} with all occurrences of '%' replaced by '%%'.
1523  typeset -g POWERLEVEL9K_GOOGLE_APP_CRED_DEFAULT_CONTENT_EXPANSION='${P9K_GOOGLE_APP_CRED_PROJECT_ID//\%/%%}'
1524
1525  ##############[ toolbox: toolbox name (https://github.com/containers/toolbox) ]###############
1526  # Toolbox color.
1527  typeset -g POWERLEVEL9K_TOOLBOX_FOREGROUND=178
1528  # Don't display the name of the toolbox if it matches fedora-toolbox-*.
1529  typeset -g POWERLEVEL9K_TOOLBOX_CONTENT_EXPANSION='${P9K_TOOLBOX_NAME:#fedora-toolbox-*}'
1530  # Custom icon.
1531  # typeset -g POWERLEVEL9K_TOOLBOX_VISUAL_IDENTIFIER_EXPANSION='⭐'
1532  # Custom prefix.
1533  # typeset -g POWERLEVEL9K_TOOLBOX_PREFIX='%fin '
1534
1535  ###############################[ public_ip: public IP address ]###############################
1536  # Public IP color.
1537  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
1538  # Custom icon.
1539  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
1540
1541  ########################[ vpn_ip: virtual private network indicator ]#########################
1542  # VPN IP color.
1543  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81
1544  # When on VPN, show just an icon without the IP address.
1545  # Tip: To display the private IP address when on VPN, remove the next line.
1546  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
1547  # Regular expression for the VPN network interface. Run `ifconfig` or `ip -4 a show` while on VPN
1548  # to see the name of the interface.
1549  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(gpd|wg|(.*tun)|tailscale)[0-9]*|(zt.*)'
1550  # If set to true, show one segment per matching network interface. If set to false, show only
1551  # one segment corresponding to the first matching network interface.
1552  # Tip: If you set it to true, you'll probably want to unset POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION.
1553  typeset -g POWERLEVEL9K_VPN_IP_SHOW_ALL=false
1554  # Custom icon.
1555  # typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
1556
1557  ###########[ ip: ip address and bandwidth usage for a specified network interface ]###########
1558  # IP color.
1559  typeset -g POWERLEVEL9K_IP_FOREGROUND=38
1560  # The following parameters are accessible within the expansion:
1561  #
1562  #   Parameter             | Meaning
1563  #   ----------------------+-------------------------------------------
1564  #   P9K_IP_IP             | IP address
1565  #   P9K_IP_INTERFACE      | network interface
1566  #   P9K_IP_RX_BYTES       | total number of bytes received
1567  #   P9K_IP_TX_BYTES       | total number of bytes sent
1568  #   P9K_IP_RX_BYTES_DELTA | number of bytes received since last prompt
1569  #   P9K_IP_TX_BYTES_DELTA | number of bytes sent since last prompt
1570  #   P9K_IP_RX_RATE        | receive rate (since last prompt)
1571  #   P9K_IP_TX_RATE        | send rate (since last prompt)
1572  typeset -g POWERLEVEL9K_IP_CONTENT_EXPANSION='$P9K_IP_IP${P9K_IP_RX_RATE:+ %70F<$P9K_IP_RX_RATE}${P9K_IP_TX_RATE:+ %215F>$P9K_IP_TX_RATE}'
1573  # Show information for the first network interface whose name matches this regular expression.
1574  # Run `ifconfig` or `ip -4 a show` to see the names of all network interfaces.
1575  typeset -g POWERLEVEL9K_IP_INTERFACE='[ew].*'
1576  # Custom icon.
1577  # typeset -g POWERLEVEL9K_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
1578
1579  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
1580  # Proxy color.
1581  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68
1582  # Custom icon.
1583  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
1584
1585  ################################[ battery: internal battery ]#################################
1586  # Show battery in red when it's below this level and not connected to power supply.
1587  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
1588  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160
1589  # Show battery in green when it's charging or fully charged.
1590  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70
1591  # Show battery in yellow when it's discharging.
1592  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178
1593  # Battery pictograms going from low to high level of charge.
1594  typeset -g POWERLEVEL9K_BATTERY_STAGES=('battery')
1595  # Don't show the remaining time to charge/discharge.
1596  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
1597
1598  #####################################[ wifi: wifi speed ]#####################################
1599  # WiFi color.
1600  typeset -g POWERLEVEL9K_WIFI_FOREGROUND=68
1601  # Custom icon.
1602  # typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='⭐'
1603
1604  # Use different colors and icons depending on signal strength ($P9K_WIFI_BARS).
1605  #
1606  #   # Wifi colors and icons for different signal strength levels (low to high).
1607  #   typeset -g my_wifi_fg=(68 68 68 68 68)                           # <-- change these values
1608  #   typeset -g my_wifi_icon=('WiFi' 'WiFi' 'WiFi' 'WiFi' 'WiFi')     # <-- change these values
1609  #
1610  #   typeset -g POWERLEVEL9K_WIFI_CONTENT_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}$P9K_WIFI_LAST_TX_RATE Mbps'
1611  #   typeset -g POWERLEVEL9K_WIFI_VISUAL_IDENTIFIER_EXPANSION='%F{${my_wifi_fg[P9K_WIFI_BARS+1]}}${my_wifi_icon[P9K_WIFI_BARS+1]}'
1612  #
1613  # The following parameters are accessible within the expansions:
1614  #
1615  #   Parameter             | Meaning
1616  #   ----------------------+---------------
1617  #   P9K_WIFI_SSID         | service set identifier, a.k.a. network name
1618  #   P9K_WIFI_LINK_AUTH    | authentication protocol such as "wpa2-psk" or "none"; empty if unknown
1619  #   P9K_WIFI_LAST_TX_RATE | wireless transmit rate in megabits per second
1620  #   P9K_WIFI_RSSI         | signal strength in dBm, from -120 to 0
1621  #   P9K_WIFI_NOISE        | noise in dBm, from -120 to 0
1622  #   P9K_WIFI_BARS         | signal strength in bars, from 0 to 4 (derived from P9K_WIFI_RSSI and P9K_WIFI_NOISE)
1623
1624  ####################################[ time: current time ]####################################
1625  # Current time color.
1626  typeset -g POWERLEVEL9K_TIME_FOREGROUND=66
1627  # Format for the current time: 09:51:02. See `man 3 strftime`.
1628  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
1629  # If set to true, time will update when you hit enter. This way prompts for the past
1630  # commands will contain the start times of their commands as opposed to the default
1631  # behavior where they contain the end times of their preceding commands.
1632  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
1633  # Custom icon.
1634  typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION=
1635  # Custom prefix.
1636  # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat '
1637
1638  # Example of a user-defined prompt segment. Function prompt_example will be called on every
1639  # prompt if `example` prompt segment is added to POWERLEVEL9K_LEFT_PROMPT_ELEMENTS or
1640  # POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS. It displays an icon and orange text greeting the user.
1641  #
1642  ##################################[ signald_pet: ambient-companions ]##################################
1643  # The terminal-pet as one line: its face, and the keystroke rate.
1644  #
1645  # Costs about 3ms per prompt — one exec plus a Unix-socket read of signald's
1646  # last-value cache. Deliberately synchronous: async would buy back a couple of
1647  # milliseconds and cost a stale face.
1648  #
1649  # Renders nothing at all when the command is missing or signald is not
1650  # running, both of which exit non-zero with no output. A prompt segment must
1651  # never be the reason a shell looks broken.
1652  function prompt_signald_pet() {
1653    (( $+commands[terminal-pet] )) || return
1654    local pet
1655    pet="$(terminal-pet --oneline 2>/dev/null)" || return
1656    [[ -n $pet ]] || return
1657    # Colour tracks the mood, so the state worth noticing is the one that
1658    # stands out: sick red, strained yellow, otherwise dim.
1659    local colour=244
1660    case $pet in
1661      '(x_x)'*) colour=red    ;;
1662      '(>_<)'*|'(-_-)'*) colour=yellow ;;
1663    esac
1664    p10k segment -f $colour -t "${pet//\%/%%}"
1665  }
1666
1667  # Type `p10k help segment` for documentation and a more sophisticated example.
1668  function prompt_example() {
1669    p10k segment -f 208 -i '*' -t 'hello, %n'
1670  }
1671
1672  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
1673  # is to generate the prompt segment for display in instant prompt. See
1674  # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
1675  #
1676  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
1677  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
1678  # will replay these calls without actually calling instant_prompt_*. It is imperative that
1679  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
1680  # rule is not observed, the content of instant prompt will be incorrect.
1681  #
1682  # Usually, you should either not define instant_prompt_* or simply call prompt_* from it. If
1683  # instant_prompt_* is not defined for a segment, the segment won't be shown in instant prompt.
1684  function instant_prompt_example() {
1685    # Since prompt_example always makes the same `p10k segment` calls, we can call it from
1686    # instant_prompt_example. This will give us the same `example` prompt segment in the instant
1687    # and regular prompts.
1688    prompt_example
1689  }
1690
1691  # User-defined prompt segments can be customized the same way as built-in segments.
1692  # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208
1693  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
1694
1695  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
1696  # when accepting a command line. Supported values:
1697  #
1698  #   - off:      Don't change prompt when accepting a command line.
1699  #   - always:   Trim down prompt when accepting a command line.
1700  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
1701  #               typed after changing current working directory.
1702  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=always
1703
1704  # Instant prompt mode.
1705  #
1706  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
1707  #              it incompatible with your zsh configuration files.
1708  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
1709  #              during zsh initialization. Choose this if you've read and understood
1710  #              https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
1711  #   - verbose: Enable instant prompt and print a warning when detecting console output during
1712  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
1713  #              seen the warning, or if you are unsure what this all means.
1714  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
1715
1716  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
1717  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
1718  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
1719  # really need it.
1720  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
1721
1722  # If p10k is already loaded, reload configuration.
1723  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
1724  (( ! $+functions[p10k] )) || p10k reload
1725}
1726
1727# Tell `p10k configure` which file it should overwrite.
1728typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
1729
1730(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
1731'builtin' 'unset' 'p10k_config_opts'