From 4949188076d9145ea53e780fbe7d942c25185428 Mon Sep 17 00:00:00 2001 From: Bartek Stalewski Date: Sat, 2 Nov 2024 23:23:27 +0100 Subject: [PATCH] Let's try p10k once again. --- config/zsh/.zshrc | 9 ++- config/zsh/p10k.zsh | 166 ++++++++++++++++++++++++++++++++++++++++++++ install.sh | 2 +- 3 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 config/zsh/p10k.zsh diff --git a/config/zsh/.zshrc b/config/zsh/.zshrc index 58854e4..1b747ca 100644 --- a/config/zsh/.zshrc +++ b/config/zsh/.zshrc @@ -43,8 +43,13 @@ if [[ $(command -v vivid) ]]; then else unset LS_COLORS fi -if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then - eval "$(oh-my-posh --config "${XDG_CONFIG_HOME}/omp/omp.toml" init zsh)" +# if [ "$TERM_PROGRAM" != "Apple_Terminal" ]; then +# eval "$(oh-my-posh --config "${XDG_CONFIG_HOME}/omp/omp.toml" init zsh)" +# fi +source "${ZDOTDIR}/p10k.zsh" +source ~/.local/git/zsh_modules/powerlevel10k/powerlevel10k.zsh-theme +if [[ -r "${XDG_CACHE_HOME}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then + source "${XDG_CACHE_HOME}/p10k-instant-prompt-${(%):-%n}.zsh" fi # completion diff --git a/config/zsh/p10k.zsh b/config/zsh/p10k.zsh new file mode 100644 index 0000000..e5413ad --- /dev/null +++ b/config/zsh/p10k.zsh @@ -0,0 +1,166 @@ +'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 -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + autoload -Uz is-at-least && is-at-least 5.1 || return + + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + # aws + # terraform + # kubecontext + # newline + virtualenv + context + dir + vcs + background_jobs + prompt_char + ) + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + command_execution_time + vi_mode + ) + + typeset -g POWERLEVEL9K_MODE=nerdfont-complete + typeset -g POWERLEVEL9K_ICON_PADDING=none + typeset -g POWERLEVEL9K_BACKGROUND= + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=false + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + typeset -g POWERLEVEL9K_SHOW_RULER=false + typeset -g POWERLEVEL9K_RULER_CHAR='─' + typeset -g POWERLEVEL9K_RULER_FOREGROUND=240 + + # prompt symbol + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76 + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196 + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❯' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='❯' + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='❯' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + + # working directory + typeset -g POWERLEVEL9K_DIR_FOREGROUND=37 + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103 + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=37 + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false + local anchor_files=( + .git + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=last + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2 + typeset -g POWERLEVEL9K_DIR_CLASSES=() + + # vcs + typeset -g POWERLEVEL9K_VCS_FOREGROUND=246 + typeset -g POWERLEVEL9K_VCS_LOADING_FOREGROUND=240 + typeset -g POWERLEVEL9K_VCS_LOADING_TEXT= + typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0 + typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND= + typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind git-stash) + typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='' + typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@' + typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON= + typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*' + typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣' + typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡' + typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1 + typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }' + typeset -g POWERLEVEL9K_VCS_STASH_ICON='≡' + typeset -g POWERLEVEL9K_VCS_GIT_ICON='\uF126' + typeset -g POWERLEVEL9K_VCS_GIT_GITHUB_ICON='\uF126' + typeset -g POWERLEVEL9K_VCS_GIT_GITLAB_ICON='\uF126' + typeset -g POWERLEVEL9K_VCS_GIT_BITBUCKET_ICON='\uF126' + + # command_execution_time + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=2 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=220 + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s' + typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='' + + # background_jobs + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70 + typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⇶' + + # context (username/hostname) + typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=196 + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_FOREGROUND= + typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND= + typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m' + typeset -g POWERLEVEL9K_CONTEXT_{REMOTE,REMOTE_SUDO}_TEMPLATE='%n@%m' + typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m' + typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION= + + # virtualenv + typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=15 + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false + typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV=false + typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER= + + # kubecontext + #typeset -g POWERLEVEL9K_KUBECONTEXT_SHOW_ON_COMMAND='kubectl|helm|kubens|kubectx|oc|istioctl|kogito|k9s|helmfile' + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION="☸" + typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + '*' DEFAULT) + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=38 + typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION= + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}' + POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}' + + # terraform + typeset -g POWERLEVEL9K_TERRAFORM_SHOW_DEFAULT=false + typeset -g POWERLEVEL9K_TERRAFORM_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + '*' DEFAULT) + typeset -g POWERLEVEL9K_TERRAFORM_DEFAULT_FOREGROUND=38 + + # aws + #typeset -g POWERLEVEL9K_AWS_SHOW_ON_COMMAND='aws|terraform|aws-mfa' + typeset -g POWERLEVEL9K_AWS_CLASSES=( + # '*prod*' PROD # These values are examples that are unlikely + '*' DEFAULT) + typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208 + + # vi_mode + typeset -g POWERLEVEL9K_VI_INSERT_MODE_STRING= + typeset -g POWERLEVEL9K_VI_COMMAND_MODE_STRING='CMD ' + typeset -g POWERLEVEL9K_VI_MODE_NORMAL_FOREGROUND=15 + typeset -g POWERLEVEL9K_VI_MODE_NORMAL_BACKGROUND=1 + + # other settings + typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=same-dir + typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose + typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true + (( ! $+functions[p10k] )) || p10k reload +} + +typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a} + +(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]} +'builtin' 'unset' 'p10k_config_opts' diff --git a/install.sh b/install.sh index 73ec9b7..1794174 100644 --- a/install.sh +++ b/install.sh @@ -21,7 +21,7 @@ git clone https://git.insomniac.pl/ftpd/dotfiles $LOCAL_GIT_DIR/dotfiles # zsh modules mkdir -p ${LOCAL_GIT_DIR}/zsh_modules rm -rf ${LOCAL_GIT_DIR}/zsh_modules/* -for module in mfaerevaag/wd zdharma-continuum/fast-syntax-highlighting; do +for module in mfaerevaag/wd romkatv/powerlevel10k zdharma-continuum/fast-syntax-highlighting; do git clone https://github.com/${module} $LOCAL_GIT_DIR/zsh_modules/${module#*/} done