123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568 |
- # vim: et ts=2 sw=2 colorcolumn=100
- # Generated by Powerlevel10k configuration wizard on 2020-11-26 at 18:36 EET.
- # Based on romkatv/powerlevel10k/config/p10k-pure.zsh, checksum 13301.
- # Wizard options: nerdfont-complete + powerline, small icons, pure, rpromt, 1 line,
- # compact, transient_prompt, instant_prompt=verbose.
- # Type `p10k configure` to generate another config.
- #
- # Config file for Powerlevel10k with the style of Pure (https://github.com/sindresorhus/pure).
- #
- # Differences from Pure:
- #
- # - Git:
- # - `@c4d3ec2c` instead of something like `v1.4.0~11` when in detached HEAD state.
- # - No automatic `git fetch` (the same as in Pure with `PURE_GIT_PULL=0`).
- #
- # Apart from the differences listed above, the replication of Pure prompt is exact. This includes
- # even the questionable parts. For example, just like in Pure, there is no indication of Git status
- # being stale; prompt symbol is the same in command, visual and overwrite vi modes; when prompt
- # doesn't fit on one line, it wraps around with no attempt to shorten it.
- #
- # If you like the general style of Pure but not particularly attached to all its quirks, type
- # `p10k configure` and pick "Lean" style. This will give you slick minimalist prompt while taking
- # advantage of Powerlevel10k features that aren't present in Pure.
- # Temporarily change options.
- 'builtin' 'local' '-a' 'p10k_config_opts'
- [[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
- [[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
- [[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
- 'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
- () {
- emulate -L zsh -o extended_glob
- # Unset all configuration options.
- unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR'
- # Zsh >= 5.1 is required.
- autoload -Uz is-at-least && is-at-least 5.1 || return
- # Prompt colors.
- {
- typeset -gr __red=1
- typeset -gr __blue=4
- typeset -gr __cyan=6
- typeset -gr __green=2
- typeset -gr __white=7
- typeset -gr __grey=242
- typeset -gr __yellow=3
- typeset -gr __magenta=5
- } 2>/dev/null ||:
- # convert 4 char hex to unicode char: `__u 21e3`
- __u() printf %b "\u${1:?}"
- # Left prompt segments.
- typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
- dir # current directory
- vcs # git status
- # command_execution_time # previous command duration
- # virtualenv # python virtual environment
- context # user@host
- prompt_char # prompt symbol
- )
- # Right prompt segments.
- typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
- background_jobs
- virtualenv # python virtual environment
- # time # current time
- ncdu
- lf
- bat
- command_execution_time # previous command duration
- torsocks
- status
- )
- # Basic style options that define the overall prompt look.
- typeset -g POWERLEVEL9K_BACKGROUND= # transparent background
- typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace
- typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space
- typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol
- # typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION= # no segment icons
- # Add an empty line before each prompt except the first. This doesn't emulate the bug
- # in Pure that makes prompt drift down whenever you use the Alt-C binding from fzf or similar.
- typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
- # Magenta prompt symbol if the last command succeeded.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND="${__magenta}"
- # Red prompt symbol if the last command failed.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND="${__red}"
- # Default prompt symbol.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$(__u 227b)
- # Prompt symbol in command vi mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION=$(__u 227a)
- # Prompt symbol in visual vi mode is the same as in command mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION=$(__u 22ce)
- # Prompt symbol in overwrite vi mode is the same as in command mode.
- typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION=$(__u 22cf)
- typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
- # Grey Python Virtual Environment.
- typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND="${__grey}"
- # Don't show Python version.
- typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
- typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
- # Blue current directory.
- typeset -g POWERLEVEL9K_DIR_FOREGROUND="${__blue}"
- # Context format when root: user@host. The first part white, the rest grey.
- typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{${__white}}%n%f%F{${__grey}}@%m%f"
- # Context format when not root: user@host. The whole thing grey.
- typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{${__grey}}%n@%m%f"
- # Don't show context unless root or in SSH.
- typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
- # Show previous command duration only if it's >= 5s.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5
- # Don't show fractional seconds. Thus, 7s rather than 7.3s.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
- # Duration format: 1d 2h 3m 4s.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
- # Yellow previous command duration.
- typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="${__yellow}"
- #####################################[ vcs: git status ]######################################
- # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
- typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
- # Untracked files icon. It's really a question mark, your font isn't broken.
- # Change the value of this parameter to show a different icon.
- typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
- # Formatter for Git status.
- #
- # Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
- #
- # You can edit the function to customize how Git status looks.
- #
- # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
- # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
- function my_git_formatter() {
- emulate -L zsh
- # if [[ -n $P9K_CONTENT ]]; then
- # # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
- # # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
- # typeset -g my_git_format=$P9K_CONTENT
- # return
- # fi
- if (( $1 )); then
- # Styling for up-to-date Git status.
- local meta="%${__grey}F" # grey foreground
- local clean="%${__green}F" # green foreground
- local modified="%${__yellow}F" # yellow foreground
- local untracked="%${__blue}F" # blue foreground
- local conflicted="%${__red}F" # red foreground
- else
- # Styling for incomplete and stale Git status.
- local meta="%${__grey}F" # grey foreground
- local clean="%${__grey}F" # grey foreground
- local modified="%${__grey}F" # grey foreground
- local untracked="%${__grey}F" # grey foreground
- local conflicted="%${__grey}F" # grey foreground
- fi
- local res
- local where # branch or tag
- if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
- res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}"
- where=${(V)VCS_STATUS_LOCAL_BRANCH}
- elif [[ -n $VCS_STATUS_TAG ]]; then
- res+="${meta}#"
- where=${(V)VCS_STATUS_TAG}
- fi
- # If local branch name or tag is at most 32 characters long, show it in full.
- # Otherwise show the first 12 … the last 12.
- # Tip: To always show local branch name in full without truncation, delete the next line.
- (( $#where > 32 )) && where[13,-13]="…"
- res+="${clean}${where//\%/%%}" # escape %
- # Display the current Git commit if there is no branch or tag.
- # Tip: To always display the current Git commit, remove `[[ -z $where ]] &&` from the next line.
- [[ -z $where ]] && res+="${meta}@${clean}${VCS_STATUS_COMMIT[1,8]}"
- # Show tracking branch name if it differs from local branch.
- if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
- res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}" # escape %
- fi
- # ⇣42 if behind the remote.
- (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
- # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
- (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
- (( VCS_STATUS_COMMITS_AHEAD )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
- # ⇠42 if behind the push remote.
- (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" ${clean}⇠${VCS_STATUS_PUSH_COMMITS_BEHIND}"
- (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && res+=" "
- # ⇢42 if ahead of the push remote; no leading space if also behind: ⇠42⇢42.
- (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && res+="${clean}⇢${VCS_STATUS_PUSH_COMMITS_AHEAD}"
- # *42 if have stashes.
- (( VCS_STATUS_STASHES )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
- # 'merge' if the repo is in an unusual state.
- [[ -n $VCS_STATUS_ACTION ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
- # ~42 if have merge conflicts.
- (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
- # +42 if have staged changes.
- (( VCS_STATUS_NUM_STAGED )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
- # !42 if have unstaged changes.
- (( VCS_STATUS_NUM_UNSTAGED )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
- # ?42 if have untracked files. It's really a question mark, your font isn't broken.
- # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
- # Remove the next line if you don't want to see untracked files at all.
- (( VCS_STATUS_NUM_UNTRACKED )) && res+=" ${untracked}${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
- # "─" if the number of unstaged files is unknown. This can happen due to
- # POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY (see below) being set to a non-negative number lower
- # than the number of files in the Git index, or due to bash.showDirtyState being set to false
- # in the repository config. The number of staged and untracked files may also be unknown
- # in this case.
- (( VCS_STATUS_HAS_UNSTAGED == -1 )) && res+=" ${modified}─"
- typeset -g my_git_format=$res
- }
- functions -M my_git_formatter 2>/dev/null
- # Don't count the number of unstaged, untracked and conflicted files in Git repositories with
- # more than this many files in the index. Negative value means infinity.
- #
- # If you are working in Git repositories with tens of millions of files and seeing performance
- # sagging, try setting POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY to a number lower than the output
- # of `git ls-files | wc -l`. Alternatively, add `bash.showDirtyState = false` to the repository's
- # config: `git config bash.showDirtyState false`.
- typeset -g POWERLEVEL9K_VCS_MAX_INDEX_SIZE_DIRTY=-1
- # Don't show Git status in prompt for repositories whose workdir matches this pattern.
- # For example, if set to '~', the Git repository at $HOME/.git will be ignored.
- # Multiple patterns can be combined with '|': '~(|/foo)|/bar/baz/*'.
- typeset -g POWERLEVEL9K_VCS_DISABLED_WORKDIR_PATTERN='~'
- # Disable the default Git status formatting.
- typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
- # Install our own Git status formatter.
- typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
- typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
- # Enable counters for staged, unstaged, etc.
- typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
- # Icon color.
- typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76
- typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
- # Custom icon.
- # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐'
- # Custom prefix.
- # typeset -g POWERLEVEL9K_VCS_PREFIX='%248Fon '
- # Show status of repositories of these types. You can add svn and/or hg if you are
- # using them. If you do, your prompt may become slow even when your current directory
- # isn't in an svn or hg reposotiry.
- typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
- # These settings are used for repositories other than Git or when gitstatusd fails and
- # Powerlevel10k has to fall back to using vcs_info.
- typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
- typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
- typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
- # # Grey Git prompt. This makes stale prompts indistinguishable from up-to-date ones.
- # typeset -g POWERLEVEL9K_VCS_FOREGROUND="${__grey}"
- #
- # # Disable async loading indicator to make directories that aren't Git repositories
- # # indistinguishable from large Git repositories without known state.
- # typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
- #
- # # Don't wait for Git status even for a millisecond, so that prompt always updates
- # # asynchronously when Git state changes.
- # typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
- #
- # # Cyan ahead/behind arrows.
- # typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND="${__cyan}"
- # # Don't show remote branch, current tag or stashes.
- # # typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
- # # Don't show the branch icon.
- # typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
- # # When in detached HEAD state, show @commit where branch normally goes.
- # # typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
- # # Don't show staged, unstaged, untracked indicators.
- # typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=
- # # Show '*' when there are staged, unstaged or untracked files.
- # typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*'
- #
- # local _d=$(__u 21e3) # down
- # local _u=$(__u 21e1) # up
- #
- # # Show '⇣' if local branch is behind remote.
- # typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=":${_d}"
- # # Show '⇡' if local branch is ahead of remote.
- # typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=":${_u}"
- # # Don't show the number of commits next to the ahead/behind arrows.
- # typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
- # # Remove space between '⇣' and '⇡' and all trailing spaces.
- #
- # local _exp="\${\${\${P9K_CONTENT/${_d}* :${_u}/${_d}${_u}}// }//:/ }"
- # typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION="${_exp}"
- # Grey current time.
- typeset -g POWERLEVEL9K_TIME_FOREGROUND="${__grey}"
- # Format for the current time: 09:51:02. See `man 3 strftime`.
- typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
- # If set to true, time will update when you hit enter. This way prompts for the past
- # commands will contain the start times of their commands rather than the end times of
- # their preceding commands.
- typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
- #######################[ background_jobs: presence of background jobs ]#######################
- typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION=$(__u f013)
- ##################################[ dir: current directory ]##################################
- # Default current directory color.
- typeset -g POWERLEVEL9K_DIR_FOREGROUND="${__blue}"
- # If directory is too long, shorten some of its segments to the shortest possible unique
- # prefix. The shortened directory can be tab-completed to the original.
- typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique
- # Replace removed segment suffixes with this symbol.
- typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
- # Color of the shortened directory segments.
- typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND="${__grey}"
- # Color of the anchor directory segments. Anchor segments are never shortened. The first
- # segment is always an anchor.
- typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND="${__cyan}"
- # Display anchor directory segments in bold.
- typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
- # Don't shorten directories that contain any of these files. They are anchors.
- local anchor_files=(
- .bzr
- .citc
- .git
- .hg
- .node-version
- .python-version
- .ruby-version
- .shorten_folder_marker
- .svn
- .terraform
- CVS
- Cargo.toml
- composer.json
- go.mod
- package.json
- )
- typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
- # Don't shorten this many last directory segments. They are anchors.
- typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
- # Shorten directory if it's longer than this even if there is space for it. The value can
- # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
- # directory will be shortened only when prompt doesn't fit or when other parameters demand it
- # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
- # If set to `0`, directory will always be shortened to its minimum length.
- typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
- # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
- # many columns for typing commands.
- typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
- # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
- # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
- typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
- # If set to true, embed a hyperlink into the directory. Useful for quickly
- # opening a directory in the file manager simply by clicking the link.
- # Can also be handy when the directory is shortened, as it allows you to see
- # the full directory that was used in previous commands.
- typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
- # Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and
- # POWERLEVEL9K_DIR_CLASSES below.
- typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2
- # The default icon shown next to non-writable directories when POWERLEVEL9K_DIR_SHOW_WRITABLE is
- # set to v2.
- typeset -g POWERLEVEL9K_LOCK_ICON=$(__u f023)
- # Custom prefix.
- typeset -g POWERLEVEL9K_DIR_PREFIX=' '
- # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons for different directories.
- # It must be an array with 3 * N elements. Each triplet consists of:
- #
- # 1. A pattern against which the current directory is matched. Matching is done with
- # extended_glob option enabled.
- # 2. Directory class for the purpose of styling.
- # 3. Icon.
- #
- # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. If there
- # are no matches, the directory will have no icon.
- #
- # Example:
- #
- # typeset -g POWERLEVEL9K_DIR_CLASSES=(
- # '~/work(|/*)' WORK '(╯°□°)╯︵ ┻━┻'
- # '~(|/*)' HOME '⌂'
- # '*' DEFAULT '')
- #
- # With these settings, the current directory in the prompt may look like this:
- #
- # (╯°□°)╯︵ ┻━┻ ~/work/projects/important/urgent
- #
- # Or like this:
- #
- # ⌂ ~/best/powerlevel10k
- #
- # You can also set different colors for directories of different classes. Remember to override
- # FOREGROUND, SHORTENED_FOREGROUND and ANCHOR_FOREGROUND for every directory class that you wish
- # to have its own color.
- #
- # typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
- # typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
- # typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
- #
- # typeset -g POWERLEVEL9K_DIR_CLASSES=(
- # '~/projects/C(|/*)' C $(__u e61e)
- # '~/projects/py(|/*)' PY $(__u e235)
- # '~/Downloads(|/*)' DL $(__u f661)
- # '~/Documents(|/*)' DOC $(__u f718)
- # '~/test(|/*)' TEST $(__u fb67)
- # '~/.config(|/*)' CFG $(__u f013)
- # )
- # typeset -g POWERLEVEL9K_DIR_C_FOREGROUND=69
- # typeset -g POWERLEVEL9K_DIR_PY_FOREGROUND=184
- # typeset -g POWERLEVEL9K_DIR_TEST_FOREGROUND=124
- # typeset -g POWERLEVEL9K_DIR_CFG_FOREGROUND=240
- ##########################[ status: exit code of the last command ]###########################
- local _ok=$(__u 2714)
- local _err=$(__u 2718)
- # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
- # style them independently from the regular OK and ERROR state.
- typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
- # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
- # it will signify success by turning green.
- typeset -g POWERLEVEL9K_STATUS_OK=true
- typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
- typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION=${_ok}
- # Status when some part of a pipe command fails but the overall exit status is zero. It may look
- # like this: 1|0.
- typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
- typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
- typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION=${_ok}
- # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
- # it will signify error by turning red.
- typeset -g POWERLEVEL9K_STATUS_ERROR=true
- typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
- typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION=${_err}
- # Status when the last command was terminated by a signal.
- typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
- typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
- # Use terse signal names: "INT" instead of "SIGINT(2)".
- typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
- typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION=${_err}
- # Status when some part of a pipe command fails and the overall exit status is also non-zero.
- # It may look like this: 1|0.
- typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
- typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
- typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION=${_err}
- # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
- # when accepting a command line. Supported values:
- #
- # - off: Don't change prompt when accepting a command line.
- # - always: Trim down prompt when accepting a command line.
- # - same-dir: Trim down prompt when accepting a command line unless this is the first command
- # typed after changing current working directory.
- typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
- # Instant prompt mode.
- #
- # - off: Disable instant prompt. Choose this if you've tried instant prompt and found
- # it incompatible with your zsh configuration files.
- # - quiet: Enable instant prompt and don't print warnings when detecting console output
- # during zsh initialization. Choose this if you've read and understood
- # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
- # - verbose: Enable instant prompt and print a warning when detecting console output during
- # zsh initialization. Choose this if you've never tried instant prompt, haven't
- # seen the warning, or if you are unsure what this all means.
- typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
- # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
- # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
- # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
- # really need it.
- typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
- typeset -g POWERLEVEL9K_LF_FOREGROUND=72
- # my #
- typeset -g POWERLEVEL9K_TORSOCKS_ICON="$(__u fa29)"
- typeset -gr __POWERLEVEL9K_TORSOCKS_LIB="$(
- source=/usr/bin/torsocks \
- && [ -r "${source}" ] \
- && source "${source}" on >/dev/null \
- && printf %s "${SHLIB}"
- )"
- function prompt_torsocks() {
- [ "${__POWERLEVEL9K_TORSOCKS_LIB:-}" ] || return
- case "x${LD_PRELOAD:-}x" in *"${__POWERLEVEL9K_TORSOCKS_LIB:-}"*)
- p10k segment -f 93 -i "${POWERLEVEL9K_TORSOCKS_ICON:-t}"
- esac
- }
- function prompt_ncdu() {
- [ -n "${NCDU_LEVEL}" ] && p10k segment -f 240 -t "${NCDU_LEVEL} ncdu"
- }
- typeset -g POWERLEVEL9K_BATTERY_ICON="$(__u f582)"
- function prompt_bat() {
- local icon="${POWERLEVEL9K_BATTERY_ICON:-b}"
- local bat=/sys/class/power_supply/BAT0
- local IFS='' __status=''
- read -r __status < "${bat}/status"
- [ "${__status}" = 'Charging' ] && return
- local capacity="$(< "${bat}/capacity")"
- if [ "${capacity}" -le 20 ]; then
- p10k segment -f "${__red}" -i "${icon}" -t "${capacity}%%"
- elif [ "${capacity}" -le 30 ]; then
- p10k segment -f "${__yellow}" -i "${icon}" -t "${capacity}%%"
- fi
- }
- # my instant #
- function instant_prompt_torsocks() prompt_torsocks
- function instant_prompt_bat() prompt_bat
- function instant_prompt_ncdu() prompt_ncdu
- unset -f __u
- # If p10k is already loaded, reload configuration.
- # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
- (( ! $+functions[p10k] )) || p10k reload
- }
- # Tell `p10k configure` which file it should overwrite.
- typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
- (( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
- 'builtin' 'unset' 'p10k_config_opts'
|