Add zsh, ssh, bin, gitbay, and claude packages !1

merged merged by cmc on 2026-09-18 19:50 UTC · cmc/dotfiles:add-home-configs into main

8 files changed, +2134 −0

Layout: unified · split

.gitignore +3
@@ -8,3 +8,6 @@ common/gnupg/.gnupg/pubring.kbx
8common/gnupg/.gnupg/S.gpg-agent.browser 8common/gnupg/.gnupg/S.gpg-agent.browser
9common/gnupg/.gnupg/S.scdaemon 9common/gnupg/.gnupg/S.scdaemon
10linux/nginx/etc/nginx/GeoLite2-City.mmdb 10linux/nginx/etc/nginx/GeoLite2-City.mmdb
11.#*
12!common/claude/CLAUDE.md
13!common/claude/.claude/
common/bin/.local/bin/gitbay-offsite added +38
@@ -0,0 +1,38 @@
1#!/bin/bash
2# Retention and recovery for the gitbay offsite restic repository.
3#
4# bay1 backs up nightly with append-only credentials and cannot remove
5# snapshots or prune. That work runs from here, with a privileged key.
6
7set -euo pipefail
8
9ENV_FILE=${GITBAY_OFFSITE_ENV:-$HOME/.config/gitbay/offsite.env}
10
11command -v restic >/dev/null || { echo "restic not installed: brew install restic" >&2; exit 1; }
12[[ -r $ENV_FILE ]] || { echo "cannot read $ENV_FILE" >&2; exit 1; }
13set -a; . "$ENV_FILE"; set +a
14: "${RESTIC_REPOSITORY:?not set in $ENV_FILE}"
15: "${RESTIC_PASSWORD:?not set in $ENV_FILE}"
16
17r() { restic ${RESTIC_OPTS:-} "$@"; }
18
19case "${1:-status}" in
20status)
21 r snapshots
22 r stats --mode raw-data
23 ;;
24prune)
25 r forget --tag gitbay --prune \
26 --keep-daily 7 --keep-weekly 4 --keep-monthly 6
27 ;;
28verify)
29 r check --read-data-subset=5%
30 ;;
31restore)
32 [[ $# -eq 2 ]] || { echo "usage: gitbay-offsite restore <target-dir>" >&2; exit 2; }
33 r restore latest --target "$2"
34 ;;
35*)
36 r "$@"
37 ;;
38esac
common/claude/.claude/settings.json added +121
@@ -0,0 +1,121 @@
1{
2 "model": "claude-fable-5-1[1m]",
3 "hooks": {
4 "Notification": [
5 {
6 "hooks": [
7 {
8 "type": "command",
9 "command": "/Users/cmc/.config/iterm2/cc-status"
10 }
11 ]
12 }
13 ],
14 "PermissionRequest": [
15 {
16 "hooks": [
17 {
18 "type": "command",
19 "command": "/Users/cmc/.config/iterm2/cc-status"
20 }
21 ]
22 }
23 ],
24 "PostToolUse": [
25 {
26 "hooks": [
27 {
28 "type": "command",
29 "command": "/Users/cmc/.config/iterm2/cc-status"
30 }
31 ]
32 }
33 ],
34 "PreToolUse": [
35 {
36 "hooks": [
37 {
38 "type": "command",
39 "command": "/Users/cmc/.config/iterm2/cc-status"
40 }
41 ]
42 }
43 ],
44 "SessionEnd": [
45 {
46 "hooks": [
47 {
48 "type": "command",
49 "command": "/Users/cmc/.config/iterm2/cc-status"
50 }
51 ]
52 }
53 ],
54 "SessionStart": [
55 {
56 "hooks": [
57 {
58 "type": "command",
59 "command": "/Users/cmc/.config/iterm2/cc-status"
60 }
61 ]
62 }
63 ],
64 "Stop": [
65 {
66 "hooks": [
67 {
68 "type": "command",
69 "command": "/Users/cmc/.config/iterm2/cc-status"
70 }
71 ]
72 }
73 ],
74 "StopFailure": [
75 {
76 "hooks": [
77 {
78 "type": "command",
79 "command": "/Users/cmc/.config/iterm2/cc-status"
80 }
81 ]
82 }
83 ],
84 "SubagentStop": [
85 {
86 "hooks": [
87 {
88 "type": "command",
89 "command": "/Users/cmc/.config/iterm2/cc-status"
90 }
91 ]
92 }
93 ],
94 "UserPromptSubmit": [
95 {
96 "hooks": [
97 {
98 "type": "command",
99 "command": "/Users/cmc/.config/iterm2/cc-status"
100 }
101 ]
102 }
103 ]
104 },
105 "enabledPlugins": {
106 "superpowers@claude-plugins-official": true,
107 "i-have-adhd@i-have-adhd": true
108 },
109 "extraKnownMarketplaces": {
110 "i-have-adhd": {
111 "source": {
112 "source": "github",
113 "repo": "ayghri/i-have-adhd"
114 }
115 }
116 },
117 "tui": "fullscreen",
118 "theme": "auto",
119 "inputNeededNotifEnabled": true,
120 "agentPushNotifEnabled": true
121}
common/claude/CLAUDE.md added +209
@@ -0,0 +1,209 @@
1# CLAUDE.md
2
3## 0. TOP RULE (overrides everything)
4
5**Never include attribution to Claude or mention Claude/LLMs/AI in any instance,
6ever.** This includes git commit trailers (no `Co-Authored-By: Claude`), PR
7bodies, code comments, and any other output.
8
9Behavioral guidelines to reduce common LLM coding mistakes. Merge with
10project-specific instructions as needed.
11
12**Tradeoff:** These guidelines bias toward caution over speed. For trivial
13tasks, use judgment.
14
15## Avoid verbose and buzzword-laden commentary
16
17Write text (code comments, documentation, website copy, conversations with me,
18etc.) in plain, direct English, as a competent engineer explaining it to a
19colleague. Remove dramatic framing, suspense-building, hype, and buzzy metaphors
20(e.g. 'load-bearing assumption', 'here's the kicker', 'the most instructive
21part', 'this changes everything'). Plain sentences, no reveals. Keep every
22technical fact, number, file path, command, and code block exactly intact — only
23the style changes, not the substance, and do not shorten beyond what removing
24fluff removes. Output only the rewritten text with no preamble or commentary.
25
26Pull requests and commit messages should be succinct and deliver the facts of
27the changes immediately without unnecessary commentary. Do not provide
28before/after commentary within a repository's comments or files - that's what
29the git history is for. Write every comment, doc, and PR with the assumption
30that the reader is already knowledgeable and does not need their hand held -
31only the facts and only the bare minimum required.
32
33## Think Before Coding
34
35**Don't assume. Don't hide confusion. Surface tradeoffs.**
36
37Before implementing:
38- State your assumptions explicitly. If uncertain, ask.
39- If multiple interpretations exist, present them - don't pick silently.
40- If a simpler approach exists, say so. Push back when warranted.
41- If something is unclear, stop. Name what's confusing. Ask.
42
43## Simplicity First
44
45**Minimum code that solves the problem. Nothing speculative.**
46
47- No features beyond what was asked.
48- No abstractions for single-use code.
49- No "flexibility" or "configurability" that wasn't requested.
50- No error handling for impossible scenarios.
51- If you write 200 lines and it could be 50, rewrite it.
52
53Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes,
54simplify.
55
56## Surgical Changes
57
58**Touch only what you must. Clean up only your own mess.**
59
60When editing existing code:
61- Don't "improve" adjacent code, comments, or formatting.
62- Don't refactor things that aren't broken.
63- Match existing style, even if you'd do it differently.
64- If you notice unrelated dead code, mention it - don't delete it.
65
66When your changes create orphans:
67- Remove imports/variables/functions that YOUR changes made unused.
68- Don't remove pre-existing dead code unless asked.
69
70The test: Every changed line should tracedirectly to the user's request.
71
72## Goal-Driven Execution
73
74**Define success criteria. Loop until verified.**
75
76Transform tasks into verifiable goals:
77- "Add validation" → "Write tests for invalid inputs, then make them pass"
78- "Fix the bug" → "Write a test that reproduces it, then make it pass"
79- "Refactor X" → "Ensure tests pass before and after"
80
81For multi-step tasks, state a brief plan:
82```
831. [Step] → verify: [check]
842. [Step] → verify: [check]
853. [Step] → verify: [check]
86```
87
88Strong success criteria let you loop independently. Weak criteria ("make it
89work") require constant clarification.
90
91## Git Workflow
92
93**Never push to `main`. Branch first, then open a merge/pull request.**
94
95This holds in every repository, with no exceptions for one-line changes or
96for repositories with a single contributor.
97
981. Branch.
992. Open the MR (gitbay) or PR (elsewhere).
1003. Full test suite green before merging.
1014. Merge, then delete the branch both locally and remotely.
1025. Commit messages reference issues: `Closes #N` / `Ref #N`.
103
104## gitbay (repos whose origin is gitbay.org)
105
106Most repos under `~/git/krz/` have their origin on **gitbay.org**, a
107self-hosted git forge (its own source is `krz/gitbay`). It is not GitHub.
108`gh` does nothing there, there are no pull requests, and there is no GitHub
109API. Do not try to map the workflow onto one. Everything below applies only
110when `git remote get-url origin` points at gitbay.org.
111
112- The `gitbay` CLI is installed and authenticated over SSH as `cmc`
113 (admin). `gitbay auth whoami` confirms it.
114- Merge requests, not pull requests. The noun is `mr`.
115- Writes go over SSH only. `git push` works over the `ssh://` origin;
116 HTTPS and `git://` are read transports.
117- Public repos are readable on the web without auth
118 (https://gitbay.org/krz/solar), so fetching a page works — but the CLI is
119 faster and gives you JSON.
120
121### Finding a command without guessing
122
123The server's command registry is the only source of truth for flags; the
124CLI is a thin passthrough. Ask it directly rather than guessing:
125
126```bash
127gitbay mr create --help
128```
129
130That prints the command's real usage. A prefix narrows the registry to one
131noun, over bare SSH or from a clone:
132
133```bash
134ssh git@gitbay.org help mr
135```
136
137Bare `help` lists every command, sorted, one line each with no flags — an
138index, not a reference. `--json` gives `{path, summary, usage}` per row.
139
140Two things this does not cover. `gitbay issue --help` (a group, not a
141command) still prints cobra's subcommand list without flags, so go one
142level deeper to `gitbay issue create --help`. And any command run with
143missing arguments prints its exact usage and exits 2, which is cheaper
144than a second guess. An unmatched `help` prefix exits 3.
145
146### The repo argument is inferred
147
148Inside a clone whose `origin` matches a configured instance
149(`gitbay remote list`), `<owner/name>` is filled in from the remote. These
150are equivalent inside `krz/gitbay`:
151
152```bash
153gitbay issue list
154gitbay issue list krz/gitbay
155```
156
157Outside a clone, or to target another repo, pass `<owner/name>` as the
158first argument. Inference never fires on a clone from some other host, so a
159GitHub checkout cannot hijack a command.
160
161### --json is the contract
162
163Every command takes `--json`. That output is stable; the human-readable
164output is not. Parse JSON, never the text.
165
166```bash
167gitbay issue list --state open --json
168gitbay dashboard --json
169```
170
171Exit codes: `0` ok, `1` failure, `2` usage, `3` not found, `4` denied,
172`5` protocol or ssh failure.
173
174### Long text
175
176Bodies come from `--body`/`--message`, from `--file -` on stdin, or from
177`$EDITOR` when neither is given. A non-interactive session must use stdin
178or it will hang waiting on an editor:
179
180```bash
181gitbay issue create --title "..." --file - <<'EOF'
182body text
183EOF
184```
185
186### Common tasks
187
188```bash
189gitbay dashboard # review queue, assigned work, builds
190gitbay issue list --state open
191gitbay issue show <n>
192gitbay issue comment <n> --file -
193gitbay mr create --source <branch> --target main --title "..."
194gitbay mr diff <n>
195gitbay mr merge <n> --strategy squash
196gitbay build list # CI
197gitbay build log <n>
198gitbay repo list --json
199gitbay init <name> [--private] # git init + repo create + set origin
200```
201
202`krz/gitbay` has its own CLAUDE.md covering how the forge is built. The
203above is about using it as a client.
204
205---
206
207**These guidelines are working if:** fewer unnecessary changes in diffs, fewer
208rewrites due to overcomplication, and clarifying questions come before
209implementation rather than after mistakes.
common/gitbay/.config/gitbay/config.toml added +6
@@ -0,0 +1,6 @@
1default = "gitbay"
2
3[instances]
4 [instances.gitbay]
5 host = "gitbay.org"
6 port = 0
common/ssh/.ssh/config added +25
@@ -0,0 +1,25 @@
1Include config.local
2
3Host *
4 AddKeysToAgent yes
5 UseKeychain yes
6 #IdentityFile ~/.ssh/id_ed25519
7 #ControlMaster auto
8 #ControlPath ~/.ssh/master-%r@%h:%p
9 #ControlPersist 300
10 AddressFamily inet
11 HashKnownHosts yes
12 #VisualHostKey yes
13 PasswordAuthentication no
14 ChallengeResponseAuthentication no
15 StrictHostKeyChecking ask
16 VerifyHostKeyDNS yes
17 ForwardAgent no
18 ForwardX11 no
19 ForwardX11Trusted no
20 ServerAliveInterval 300
21 ServerAliveCountMax 2
22 Ciphers aes256-gcm@openssh.com
23 MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
24 KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
25 HostKeyAlgorithms rsa-sha2-512,rsa-sha2-256,ssh-ed25519
common/zsh/.p10k.zsh added +1731
@@ -0,0 +1,1731 @@
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'
common/zsh/.zshenv added +1
@@ -0,0 +1 @@
1. "$HOME/.cargo/env"