diff options
author | romkatv <roman.perepelitsa@gmail.com> | 2019-03-13 19:04:27 +0300 |
---|---|---|
committer | romkatv <roman.perepelitsa@gmail.com> | 2019-03-13 19:04:27 +0300 |
commit | 5ee0054298263d0043d2f6da35d3ea949b04f434 (patch) | |
tree | cf9aaac53d3b7ca404b5c8084b5887d4c0809060 /functions | |
parent | 696290fb22a5775e130f49fc608cf141422d5f46 (diff) |
don't read configuration options until the first precmd; plus massive refactoring and cleanup
Diffstat (limited to 'functions')
-rwxr-xr-x | functions/colors.zsh | 109 | ||||
-rwxr-xr-x | functions/icons.zsh | 1034 | ||||
-rwxr-xr-x | functions/utilities.zsh | 255 |
3 files changed, 565 insertions, 833 deletions
diff --git a/functions/colors.zsh b/functions/colors.zsh index 80abb6be..d8b7cbe8 100755 --- a/functions/colors.zsh +++ b/functions/colors.zsh @@ -6,10 +6,9 @@ # https://github.com/bhilburn/powerlevel9k ################################################################ -typeset -gAh __P9K_COLORS # https://jonasjacek.github.io/colors/ # use color names by default to allow dark/light themes to adjust colors based on names -__P9K_COLORS=( +typeset -gAh __P9K_COLORS=( black 000 red 001 green 002 @@ -270,89 +269,29 @@ __P9K_COLORS=( grey93 255 ) -function termColors() { - if [[ $POWERLEVEL9K_IGNORE_TERM_COLORS == true ]]; then - return - fi - - local term_colors - - if which tput &>/dev/null; then - term_colors=$(tput colors) - else - term_colors=$(echotc Co) - fi - if (( ! $? && ${term_colors:-0} < 256 )); then - print -P "%F{red}WARNING!%f Your terminal appears to support fewer than 256 colors!" - print -P "If your terminal supports 256 colors, please export the appropriate environment variable" - print -P "_before_ loading this theme in your \~\/.zshrc. In most terminal emulators, putting" - print -P "%F{blue}export TERM=\"xterm-256color\"%f at the top of your \~\/.zshrc is sufficient." - fi -} - -# get the proper color code if it does not exist as a name. -function getColor() { - # If Color is not numerical, try to get the color code. - if [[ "$1" != <-> ]]; then - 1=$(getColorCode $1) - fi - echo -n "$1" -} - -# empty paramenter resets (stops) background color -function backgroundColor() { - echo -n "%K{$(getColor $1)}" -} - -# empty paramenter resets (stops) foreground color -function foregroundColor() { - echo -n "%F{$(getColor $1)}" -} - -# Get numerical color codes. That way we translate ANSI codes -# into ZSH-Style color codes. +# For user convenience: type `getColorCode background` or `getColorCode foreground` to see +# the list of predefined colors. function getColorCode() { - # Early exit: Check if given value is already numerical - if [[ "$1" == <-> ]]; then - # Pad color with zeroes - echo -n "${(l:3::0:)1}" - return - fi - - local colorName="${1}" - # Check if value is none with any case. - if [[ "${(L)colorName}" == "none" ]]; then - echo -n 'none' - elif [[ "${colorName}" == "foreground" ]]; then - # for testing purposes in terminal - # call via `getColorCode foreground` - for i in "${(k@)__P9K_COLORS}"; do - print -P "$(foregroundColor $i)$(getColor $i) - $i%f" - done - elif [[ "${colorName}" == "background" ]]; then - # call via `getColorCode background` - for i in "${(k@)__P9K_COLORS}"; do - print -P "$(backgroundColor $i)$(getColor $i) - $i%k" - done - else - # Strip eventual "bg-" prefixes - colorName=${colorName#bg-} - # Strip eventual "fg-" prefixes - colorName=${colorName#fg-} - # Strip eventual "br" prefixes ("bright" colors) - colorName=${colorName#br} - echo -n $__P9K_COLORS[$colorName] + if (( ARGC == 1 )); then + case $1 in + foreground) + local k + for k in "${(k@)__P9K_COLORS}"; do + local v=${__P9K_COLORS[$k]} + print -P "%F{$v}$v - $k%f" + done + return + ;; + background) + local k + for k in "${(k@)__P9K_COLORS}"; do + local v=${__P9K_COLORS[$k]} + print -P "%K{$v}$v - $k%k" + done + return + ;; + esac fi -} - -# Check if two colors are equal, even if one is specified as ANSI code. -function isSameColor() { - if [[ "$1" == "NONE" || "$2" == "NONE" ]]; then - return 1 - fi - - local color1=$(getColorCode "$1") - local color2=$(getColorCode "$2") - - return $(( color1 != color2 )) + echo "Usage: getColorCode background|foreground" >&2 + return 1 } diff --git a/functions/icons.zsh b/functions/icons.zsh index 28cbb709..2147add8 100755 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -13,530 +13,534 @@ # Initialize the icon list according to the user's `POWERLEVEL9K_MODE`. typeset -gAH icons -() { # add scope to protect the users locale and not overwrite LC_CTYPE! -case $POWERLEVEL9K_MODE in - 'flat'|'awesome-patched') - # Awesome-Patched Font required! See: - # https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons=( - LEFT_SEGMENT_SEPARATOR $'\uE0B0' # - RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # - LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace - LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # - RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # - CARRIAGE_RETURN_ICON $'\u21B5' # ↵ - ROOT_ICON $'\uE801' # - SUDO_ICON $'\uF09C' # - RUBY_ICON $'\uE847 ' # - AWS_ICON $'\uE895' # - AWS_EB_ICON $'\U1F331 ' # 🌱 - BACKGROUND_JOBS_ICON $'\uE82F ' # - TEST_ICON $'\uE891' # - TODO_ICON $'\u2611' # ☑ - BATTERY_ICON $'\uE894' # - DISK_ICON $'\uE1AE ' # - OK_ICON $'\u2714' # ✔ - FAIL_ICON $'\u2718' # ✘ - SYMFONY_ICON 'SF' - NODE_ICON $'\u2B22' # ⬢ - MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ - MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ - MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ - APPLE_ICON $'\uE26E' # - WINDOWS_ICON $'\uE26F' # - FREEBSD_ICON $'\U1F608 ' # 😈 - ANDROID_ICON $'\uE270' # - LINUX_ICON $'\uE271' # - LINUX_ARCH_ICON $'\uE271' # - LINUX_DEBIAN_ICON $'\uE271' # - LINUX_UBUNTU_ICON $'\uE271' # - LINUX_CENTOS_ICON $'\uE271' # - LINUX_COREOS_ICON $'\uE271' # - LINUX_ELEMENTARY_ICON $'\uE271' # - LINUX_MINT_ICON $'\uE271' # - LINUX_FEDORA_ICON $'\uE271' # - LINUX_GENTOO_ICON $'\uE271' # - LINUX_MAGEIA_ICON $'\uE271' # - LINUX_NIXOS_ICON $'\uE271' # - LINUX_MANJARO_ICON $'\uE271' # - LINUX_DEVUAN_ICON $'\uE271' # - LINUX_ALPINE_ICON $'\uE271' # - LINUX_AOSC_ICON $'\uE271' # - LINUX_OPENSUSE_ICON $'\uE271' # - LINUX_SABAYON_ICON $'\uE271' # - LINUX_SLACKWARE_ICON $'\uE271' # - SUNOS_ICON $'\U1F31E ' # 🌞 - HOME_ICON $'\uE12C' # - HOME_SUB_ICON $'\uE18D' # - FOLDER_ICON $'\uE818' # - NETWORK_ICON $'\uE1AD' # - ETC_ICON $'\uE82F' # - LOAD_ICON $'\uE190 ' # - SWAP_ICON $'\uE87D' # - RAM_ICON $'\uE1E2 ' # - SERVER_ICON $'\uE895' # - VCS_UNTRACKED_ICON $'\uE16C' # - VCS_UNSTAGED_ICON $'\uE17C' # - VCS_STAGED_ICON $'\uE168' # - VCS_STASH_ICON $'\uE133 ' # - #VCS_INCOMING_CHANGES_ICON $'\uE1EB ' # - #VCS_INCOMING_CHANGES_ICON $'\uE80D ' # - VCS_INCOMING_CHANGES_ICON $'\uE131 ' # - #VCS_OUTGOING_CHANGES_ICON $'\uE1EC ' # - #VCS_OUTGOING_CHANGES_ICON $'\uE80E ' # - VCS_OUTGOING_CHANGES_ICON $'\uE132 ' # - VCS_TAG_ICON $'\uE817 ' # - VCS_BOOKMARK_ICON $'\uE87B' # - VCS_COMMIT_ICON $'\uE821 ' # - VCS_BRANCH_ICON $'\uE220 ' # - VCS_REMOTE_BRANCH_ICON $'\u2192' # → - VCS_GIT_ICON $'\uE20E ' # - VCS_GIT_GITHUB_ICON $'\uE20E ' # - VCS_GIT_BITBUCKET_ICON $'\uE20E ' # - VCS_GIT_GITLAB_ICON $'\uE20E ' # - VCS_HG_ICON $'\uE1C3 ' # - VCS_SVN_ICON '(svn) ' - RUST_ICON '(rust)' - PYTHON_ICON $'\ue63c' # - SWIFT_ICON '' - GO_ICON '' - PUBLIC_IP_ICON '' - LOCK_ICON $'\UE138' # - EXECUTION_TIME_ICON $'\UE89C' # - SSH_ICON '(ssh)' - VPN_ICON '(vpn)' - KUBERNETES_ICON $'\U2388' # ⎈ - DROPBOX_ICON $'\UF16B' # - DATE_ICON $'\uE184' # - TIME_ICON $'\uE12E' # - JAVA_ICON $'\U2615' # ☕︎ - LARAVEL_ICON '' - ) - ;; - 'awesome-fontconfig') - # fontconfig with awesome-font required! See - # https://github.com/gabrielelana/awesome-terminal-fonts - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons=( - LEFT_SEGMENT_SEPARATOR $'\uE0B0' # - RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # - LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace - LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # - RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # - CARRIAGE_RETURN_ICON $'\u21B5' # ↵ - ROOT_ICON $'\uF201' # - SUDO_ICON $'\uF09C' # - RUBY_ICON $'\uF219 ' # - AWS_ICON $'\uF270' # - AWS_EB_ICON $'\U1F331 ' # 🌱 - BACKGROUND_JOBS_ICON $'\uF013 ' # - TEST_ICON $'\uF291' # - TODO_ICON $'\u2611' # ☑ - BATTERY_ICON $'\U1F50B' # 🔋 - DISK_ICON $'\uF0A0 ' # - OK_ICON $'\u2714' # ✔ - FAIL_ICON $'\u2718' # ✘ - SYMFONY_ICON 'SF' - NODE_ICON $'\u2B22' # ⬢ - MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ - MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ - MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ - APPLE_ICON $'\uF179' # - WINDOWS_ICON $'\uF17A' # - FREEBSD_ICON $'\U1F608 ' # 😈 - ANDROID_ICON $'\uE17B' # - LINUX_ICON $'\uF17C' # - LINUX_ARCH_ICON $'\uF17C' # - LINUX_DEBIAN_ICON $'\uF17C' # - LINUX_UBUNTU_ICON $'\uF17C' # - LINUX_CENTOS_ICON $'\uF17C' # - LINUX_COREOS_ICON $'\uF17C' # - LINUX_ELEMENTARY_ICON $'\uF17C' # - LINUX_MINT_ICON $'\uF17C' # - LINUX_FEDORA_ICON $'\uF17C' # - LINUX_GENTOO_ICON $'\uF17C' # - LINUX_MAGEIA_ICON $'\uF17C' # - LINUX_NIXOS_ICON $'\uF17C' # - LINUX_MANJARO_ICON $'\uF17C' # - LINUX_DEVUAN_ICON $'\uF17C' # - LINUX_ALPINE_ICON $'\uF17C' # - LINUX_AOSC_ICON $'\uF17C' # - LINUX_OPENSUSE_ICON $'\uF17C' # - LINUX_SABAYON_ICON $'\uF17C' # - LINUX_SLACKWARE_ICON $'\uF17C' # - SUNOS_ICON $'\uF185 ' # - HOME_ICON $'\uF015' # - HOME_SUB_ICON $'\uF07C' # - FOLDER_ICON $'\uF115' # - ETC_ICON $'\uF013 ' # - NETWORK_ICON $'\uF09E' # - LOAD_ICON $'\uF080 ' # - SWAP_ICON $'\uF0E4' # - RAM_ICON $'\uF0E4' # - SERVER_ICON $'\uF233' # - VCS_UNTRACKED_ICON $'\uF059' # - VCS_UNSTAGED_ICON $'\uF06A' # - VCS_STAGED_ICON $'\uF055' # - VCS_STASH_ICON $'\uF01C ' # - VCS_INCOMING_CHANGES_ICON $'\uF01A ' # - VCS_OUTGOING_CHANGES_ICON $'\uF01B ' # - VCS_TAG_ICON $'\uF217 ' # - VCS_BOOKMARK_ICON $'\uF27B' # - VCS_COMMIT_ICON $'\uF221 ' # - VCS_BRANCH_ICON $'\uF126 ' # - VCS_REMOTE_BRANCH_ICON $'\u2192' # → - VCS_GIT_ICON $'\uF1D3 ' # - VCS_GIT_GITHUB_ICON $'\uF113 ' # - VCS_GIT_BITBUCKET_ICON $'\uF171 ' # - VCS_GIT_GITLAB_ICON $'\uF296 ' # - VCS_HG_ICON $'\uF0C3 ' # - VCS_SVN_ICON '(svn) ' - RUST_ICON $'\uE6A8' # - PYTHON_ICON $'\ue63c' # - SWIFT_ICON '' - GO_ICON '' - PUBLIC_IP_ICON '' - LOCK_ICON $'\UF023' # - EXECUTION_TIME_ICON $'\uF253' - SSH_ICON '(ssh)' - VPN_ICON $'\uF023' - KUBERNETES_ICON $'\U2388' # ⎈ - DROPBOX_ICON $'\UF16B' # - DATE_ICON $'\uF073 ' # - TIME_ICON $'\uF017 ' # - JAVA_ICON $'\U2615' # ☕︎ - LARAVEL_ICON '' - ) - ;; - 'awesome-mapped-fontconfig') - # mapped fontconfig with awesome-font required! See - # https://github.com/gabrielelana/awesome-terminal-fonts - # don't forget to source the font maps in your startup script - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - if [ -z "$AWESOME_GLYPHS_LOADED" ]; then - echo "Powerlevel9k warning: Awesome-Font mappings have not been loaded. - Source a font mapping in your shell config, per the Awesome-Font docs - (https://github.com/gabrielelana/awesome-terminal-fonts), - Or use a different Powerlevel9k font configuration."; - fi +set_default POWERLEVEL9K_HIDE_BRANCH_ICON false +set_default POWERLEVEL9K_MODE "" + +function _p9k_init_icons() { + case $POWERLEVEL9K_MODE in + 'flat'|'awesome-patched') + # Awesome-Patched Font required! See: + # https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + icons=( + LEFT_SEGMENT_SEPARATOR $'\uE0B0' # + RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # + LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace + LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # + RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # + CARRIAGE_RETURN_ICON $'\u21B5' # ↵ + ROOT_ICON $'\uE801' # + SUDO_ICON $'\uF09C' # + RUBY_ICON $'\uE847 ' # + AWS_ICON $'\uE895' # + AWS_EB_ICON $'\U1F331 ' # 🌱 + BACKGROUND_JOBS_ICON $'\uE82F ' # + TEST_ICON $'\uE891' # + TODO_ICON $'\u2611' # ☑ + BATTERY_ICON $'\uE894' # + DISK_ICON $'\uE1AE ' # + OK_ICON $'\u2714' # ✔ + FAIL_ICON $'\u2718' # ✘ + SYMFONY_ICON 'SF' + NODE_ICON $'\u2B22' # ⬢ + MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ + MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ + MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ + APPLE_ICON $'\uE26E' # + WINDOWS_ICON $'\uE26F' # + FREEBSD_ICON $'\U1F608 ' # 😈 + ANDROID_ICON $'\uE270' # + LINUX_ICON $'\uE271' # + LINUX_ARCH_ICON $'\uE271' # + LINUX_DEBIAN_ICON $'\uE271' # + LINUX_UBUNTU_ICON $'\uE271' # + LINUX_CENTOS_ICON $'\uE271' # + LINUX_COREOS_ICON $'\uE271' # + LINUX_ELEMENTARY_ICON $'\uE271' # + LINUX_MINT_ICON $'\uE271' # + LINUX_FEDORA_ICON $'\uE271' # + LINUX_GENTOO_ICON $'\uE271' # + LINUX_MAGEIA_ICON $'\uE271' # + LINUX_NIXOS_ICON $'\uE271' # + LINUX_MANJARO_ICON $'\uE271' # + LINUX_DEVUAN_ICON $'\uE271' # + LINUX_ALPINE_ICON $'\uE271' # + LINUX_AOSC_ICON $'\uE271' # + LINUX_OPENSUSE_ICON $'\uE271' # + LINUX_SABAYON_ICON $'\uE271' # + LINUX_SLACKWARE_ICON $'\uE271' # + SUNOS_ICON $'\U1F31E ' # 🌞 + HOME_ICON $'\uE12C' # + HOME_SUB_ICON $'\uE18D' # + FOLDER_ICON $'\uE818' # + NETWORK_ICON $'\uE1AD' # + ETC_ICON $'\uE82F' # + LOAD_ICON $'\uE190 ' # + SWAP_ICON $'\uE87D' # + RAM_ICON $'\uE1E2 ' # + SERVER_ICON $'\uE895' # + VCS_UNTRACKED_ICON $'\uE16C' # + VCS_UNSTAGED_ICON $'\uE17C' # + VCS_STAGED_ICON $'\uE168' # + VCS_STASH_ICON $'\uE133 ' # + #VCS_INCOMING_CHANGES_ICON $'\uE1EB ' # + #VCS_INCOMING_CHANGES_ICON $'\uE80D ' # + VCS_INCOMING_CHANGES_ICON $'\uE131 ' # + #VCS_OUTGOING_CHANGES_ICON $'\uE1EC ' # + #VCS_OUTGOING_CHANGES_ICON $'\uE80E ' # + VCS_OUTGOING_CHANGES_ICON $'\uE132 ' # + VCS_TAG_ICON $'\uE817 ' # + VCS_BOOKMARK_ICON $'\uE87B' # + VCS_COMMIT_ICON $'\uE821 ' # + VCS_BRANCH_ICON $'\uE220 ' # + VCS_REMOTE_BRANCH_ICON $'\u2192' # → + VCS_GIT_ICON $'\uE20E ' # + VCS_GIT_GITHUB_ICON $'\uE20E ' # + VCS_GIT_BITBUCKET_ICON $'\uE20E ' # + VCS_GIT_GITLAB_ICON $'\uE20E ' # + VCS_HG_ICON $'\uE1C3 ' # + VCS_SVN_ICON '(svn) ' + RUST_ICON '(rust)' + PYTHON_ICON $'\ue63c' # + SWIFT_ICON '' + GO_ICON '' + PUBLIC_IP_ICON '' + LOCK_ICON $'\UE138' # + EXECUTION_TIME_ICON $'\UE89C' # + SSH_ICON '(ssh)' + VPN_ICON '(vpn)' + KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' # + DATE_ICON $'\uE184' # + TIME_ICON $'\uE12E' # + JAVA_ICON $'\U2615' # ☕︎ + LARAVEL_ICON '' + ) + ;; + 'awesome-fontconfig') + # fontconfig with awesome-font required! See + # https://github.com/gabrielelana/awesome-terminal-fonts + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + icons=( + LEFT_SEGMENT_SEPARATOR $'\uE0B0' # + RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # + LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace + LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # + RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # + CARRIAGE_RETURN_ICON $'\u21B5' # ↵ + ROOT_ICON $'\uF201' # + SUDO_ICON $'\uF09C' # + RUBY_ICON $'\uF219 ' # + AWS_ICON $'\uF270' # + AWS_EB_ICON $'\U1F331 ' # 🌱 + BACKGROUND_JOBS_ICON $'\uF013 ' # + TEST_ICON $'\uF291' # + TODO_ICON $'\u2611' # ☑ + BATTERY_ICON $'\U1F50B' # 🔋 + DISK_ICON $'\uF0A0 ' # + OK_ICON $'\u2714' # ✔ + FAIL_ICON $'\u2718' # ✘ + SYMFONY_ICON 'SF' + NODE_ICON $'\u2B22' # ⬢ + MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ + MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ + MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ + APPLE_ICON $'\uF179' # + WINDOWS_ICON $'\uF17A' # + FREEBSD_ICON $'\U1F608 ' # 😈 + ANDROID_ICON $'\uE17B' # + LINUX_ICON $'\uF17C' # + LINUX_ARCH_ICON $'\uF17C' # + LINUX_DEBIAN_ICON $'\uF17C' # + LINUX_UBUNTU_ICON $'\uF17C' # + LINUX_CENTOS_ICON $'\uF17C' # + LINUX_COREOS_ICON $'\uF17C' # + LINUX_ELEMENTARY_ICON $'\uF17C' # + LINUX_MINT_ICON $'\uF17C' # + LINUX_FEDORA_ICON $'\uF17C' # + LINUX_GENTOO_ICON $'\uF17C' # + LINUX_MAGEIA_ICON $'\uF17C' # + LINUX_NIXOS_ICON $'\uF17C' # + LINUX_MANJARO_ICON $'\uF17C' # + LINUX_DEVUAN_ICON $'\uF17C' # + LINUX_ALPINE_ICON $'\uF17C' # + LINUX_AOSC_ICON $'\uF17C' # + LINUX_OPENSUSE_ICON $'\uF17C' # + LINUX_SABAYON_ICON $'\uF17C' # + LINUX_SLACKWARE_ICON $'\uF17C' # + SUNOS_ICON $'\uF185 ' # + HOME_ICON $'\uF015' # + HOME_SUB_ICON $'\uF07C' # + FOLDER_ICON $'\uF115' # + ETC_ICON $'\uF013 ' # + NETWORK_ICON $'\uF09E' # + LOAD_ICON $'\uF080 ' # + SWAP_ICON $'\uF0E4' # + RAM_ICON $'\uF0E4' # + SERVER_ICON $'\uF233' # + VCS_UNTRACKED_ICON $'\uF059' # + VCS_UNSTAGED_ICON $'\uF06A' # + VCS_STAGED_ICON $'\uF055' # + VCS_STASH_ICON $'\uF01C ' # + VCS_INCOMING_CHANGES_ICON $'\uF01A ' # + VCS_OUTGOING_CHANGES_ICON $'\uF01B ' # + VCS_TAG_ICON $'\uF217 ' # + VCS_BOOKMARK_ICON $'\uF27B' # + VCS_COMMIT_ICON $'\uF221 ' # + VCS_BRANCH_ICON $'\uF126 ' # + VCS_REMOTE_BRANCH_ICON $'\u2192' # → + VCS_GIT_ICON $'\uF1D3 ' # + VCS_GIT_GITHUB_ICON $'\uF113 ' # + VCS_GIT_BITBUCKET_ICON $'\uF171 ' # + VCS_GIT_GITLAB_ICON $'\uF296 ' # + VCS_HG_ICON $'\uF0C3 ' # + VCS_SVN_ICON '(svn) ' + RUST_ICON $'\uE6A8' # + PYTHON_ICON $'\ue63c' # + SWIFT_ICON '' + GO_ICON '' + PUBLIC_IP_ICON '' + LOCK_ICON $'\UF023' # + EXECUTION_TIME_ICON $'\uF253' + SSH_ICON '(ssh)' + VPN_ICON $'\uF023' + KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' # + DATE_ICON $'\uF073 ' # + TIME_ICON $'\uF017 ' # + JAVA_ICON $'\U2615' # ☕︎ + LARAVEL_ICON '' + ) + ;; + 'awesome-mapped-fontconfig') + # mapped fontconfig with awesome-font required! See + # https://github.com/gabrielelana/awesome-terminal-fonts + # don't forget to source the font maps in your startup script + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons=( - LEFT_SEGMENT_SEPARATOR $'\uE0B0' # - RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # - LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace - LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # - RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # - CARRIAGE_RETURN_ICON $'\u21B5' # ↵ - ROOT_ICON '\u'$CODEPOINT_OF_OCTICONS_ZAP # - SUDO_ICON '\u'$CODEPOINT_OF_AWESOME_UNLOCK # - RUBY_ICON '\u'$CODEPOINT_OF_OCTICONS_RUBY' ' # - AWS_ICON '\u'$CODEPOINT_OF_AWESOME_SERVER # - AWS_EB_ICON $'\U1F331 ' # 🌱 - BACKGROUND_JOBS_ICON '\u'$CODEPOINT_OF_AWESOME_COG' ' # - TEST_ICON '\u'$CODEPOINT_OF_AWESOME_BUG # - TODO_ICON '\u'$CODEPOINT_OF_AWESOME_CHECK_SQUARE_O # - BATTERY_ICON '\U'$CODEPOINT_OF_AWESOME_BATTERY_FULL # - DISK_ICON '\u'$CODEPOINT_OF_AWESOME_HDD_O' ' # - OK_ICON '\u'$CODEPOINT_OF_AWESOME_CHECK # - FAIL_ICON '\u'$CODEPOINT_OF_AWESOME_TIMES # - SYMFONY_ICON 'SF' - NODE_ICON $'\u2B22' # ⬢ - MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ - MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ - APPLE_ICON '\u'$CODEPOINT_OF_AWESOME_APPLE # - FREEBSD_ICON $'\U1F608 ' # 😈 - LINUX_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_ARCH_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_DEBIAN_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_UBUNTU_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_CENTOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_COREOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_ELEMENTARY_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_MINT_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_FEDORA_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_GENTOO_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_MAGEIA_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_NIXOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_MANJARO_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_DEVUAN_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_ALPINE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_AOSC_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_OPENSUSE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_SABAYON_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - LINUX_SLACKWARE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # - SUNOS_ICON '\u'$CODEPOINT_OF_AWESOME_SUN_O' ' # - HOME_ICON '\u'$CODEPOINT_OF_AWESOME_HOME # - HOME_SUB_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_OPEN # - FOLDER_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_O # - ETC_ICON '\u'$CODEPOINT_OF_AWESOME_COG' ' # - NETWORK_ICON '\u'$CODEPOINT_OF_AWESOME_RSS # - LOAD_ICON '\u'$CODEPOINT_OF_AWESOME_BAR_CHART' ' # - SWAP_ICON '\u'$CODEPOINT_OF_AWESOME_DASHBOARD # - RAM_ICON '\u'$CODEPOINT_OF_AWESOME_DASHBOARD # - SERVER_ICON '\u'$CODEPOINT_OF_AWESOME_SERVER # - VCS_UNTRACKED_ICON '\u'$CODEPOINT_OF_AWESOME_QUESTION_CIRCLE # - VCS_UNSTAGED_ICON '\u'$CODEPOINT_OF_AWESOME_EXCLAMATION_CIRCLE # - VCS_STAGED_ICON '\u'$CODEPOINT_OF_AWESOME_PLUS_CIRCLE # - VCS_STASH_ICON '\u'$CODEPOINT_OF_AWESOME_INBOX' ' # - VCS_INCOMING_CHANGES_ICON '\u'$CODEPOINT_OF_AWESOME_ARROW_CIRCLE_DOWN' ' # - VCS_OUTGOING_CHANGES_ICON '\u'$CODEPOINT_OF_AWESOME_ARROW_CIRCLE_UP' ' # - VCS_TAG_ICON '\u'$CODEPOINT_OF_AWESOME_TAG' ' # - VCS_BOOKMARK_ICON '\u'$CODEPOINT_OF_OCTICONS_BOOKMARK # - VCS_COMMIT_ICON '\u'$CODEPOINT_OF_OCTICONS_GIT_COMMIT' ' # - VCS_BRANCH_ICON '\u'$CODEPOINT_OF_OCTICONS_GIT_BRANCH' ' # - VCS_REMOTE_BRANCH_ICON '\u'$CODEPOINT_OF_OCTICONS_REPO_PUSH # - VCS_GIT_ICON '\u'$CODEPOINT_OF_AWESOME_GIT' ' # - VCS_GIT_GITHUB_ICON '\u'$CODEPOINT_OF_AWESOME_GITHUB_ALT' ' # - VCS_GIT_BITBUCKET_ICON '\u'$CODEPOINT_OF_AWESOME_BITBUCKET' ' # - VCS_GIT_GITLAB_ICON '\u'$CODEPOINT_OF_AWESOME_GITLAB' ' # - VCS_HG_ICON '\u'$CODEPOINT_OF_AWESOME_FLASK' ' # - VCS_SVN_ICON '(svn) ' - RUST_ICON $'\uE6A8' # - PYTHON_ICON $'\U1F40D' # 🐍 - SWIFT_ICON $'\uE655' # - PUBLIC_IP_ICON '\u'$CODEPOINT_OF_AWESOME_GLOBE # - LOCK_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK # - EXECUTION_TIME_ICON '\u'$CODEPOINT_OF_AWESOME_HOURGLASS_END # - SSH_ICON '(ssh)' - VPN_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK - KUBERNETES_ICON $'\U2388' # ⎈ - DROPBOX_ICON '\u'$CODEPOINT_OF_AWESOME_DROPBOX # - DATE_ICON $'\uF073 ' # - TIME_ICON $'\uF017 ' # - JAVA_ICON $'\U2615' # ☕︎ - LARAVEL_ICON '' - ) - ;; - 'nerdfont-complete'|'nerdfont-fontconfig') - # nerd-font patched (complete) font required! See - # https://github.com/ryanoasis/nerd-fonts - # http://nerdfonts.com/#cheat-sheet - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons=( - LEFT_SEGMENT_SEPARATOR $'\uE0B0' # - RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # - LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace - LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # - RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # - CARRIAGE_RETURN_ICON $'\u21B5' # ↵ - ROOT_ICON $'\uE614 ' # - SUDO_ICON $'\uF09C' # - RUBY_ICON $'\uF219 ' # - AWS_ICON $'\uF270' # - AWS_EB_ICON $'\UF1BD ' # - BACKGROUND_JOBS_ICON $'\uF013 ' # - TEST_ICON $'\uF188' # - TODO_ICON $'\uF133' # - BATTERY_ICON $'\UF240 ' # - DISK_ICON $'\uF0A0' # - OK_ICON $'\uF00C' # - FAIL_ICON $'\uF00D' # - SYMFONY_ICON $'\uE757' # - NODE_ICON $'\uE617 ' # - MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ - MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ - MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ - APPLE_ICON $'\uF179' # - WINDOWS_ICON $'\uF17A' # - FREEBSD_ICON $'\UF30C ' # - ANDROID_ICON $'\uF17B' # - LINUX_ARCH_ICON $'\uF303' # - LINUX_CENTOS_ICON $'\uF304' # - LINUX_COREOS_ICON $'\uF305' # - LINUX_DEBIAN_ICON $'\uF306' # - LINUX_ELEMENTARY_ICON $'\uF309' # - LINUX_FEDORA_ICON $'\uF30a' # - LINUX_GENTOO_ICON $'\uF30d' # - LINUX_MAGEIA_ICON $'\uF310' # - LINUX_MINT_ICON $'\uF30e' # - LINUX_NIXOS_ICON $'\uF313' # - LINUX_MANJARO_ICON $'\uF312' # - LINUX_DEVUAN_ICON $'\uF307' # - LINUX_ALPINE_ICON $'\uF300' # - LINUX_AOSC_ICON $'\uF301' # - LINUX_OPENSUSE_ICON $'\uF314' # - LINUX_SABAYON_ICON $'\uF317' # - LINUX_SLACKWARE_ICON $'\uF319' # - LINUX_UBUNTU_ICON $'\uF31b' # - LINUX_ICON $'\uF17C' # - SUNOS_ICON $'\uF185 ' # - HOME_ICON $'\uF015' # - HOME_SUB_ICON $'\uF07C' # - FOLDER_ICON $'\uF115' # - ETC_ICON $'\uF013' # - NETWORK_ICON $'\uF1EB' # - LOAD_ICON $'\uF080 ' # - SWAP_ICON $'\uF464' # - RAM_ICON $'\uF0E4' # - SERVER_ICON $'\uF0AE' # - VCS_UNTRACKED_ICON $'\uF059' # - VCS_UNSTAGED_ICON $'\uF06A' # - VCS_STAGED_ICON $'\uF055' # - VCS_STASH_ICON $'\uF01C ' # - VCS_INCOMING_CHANGES_ICON $'\uF01A ' # - VCS_OUTGOING_CHANGES_ICON $'\uF01B ' # - VCS_TAG_ICON $'\uF02B ' # - VCS_BOOKMARK_ICON $'\uF461 ' # - VCS_COMMIT_ICON $'\uE729 ' # - VCS_BRANCH_ICON $'\uF126 ' # - VCS_REMOTE_BRANCH_ICON $'\uE728 ' # - VCS_GIT_ICON $'\uF1D3 ' # - VCS_GIT_GITHUB_ICON $'\uF113 ' # - VCS_GIT_BITBUCKET_ICON $'\uE703 ' # - VCS_GIT_GITLAB_ICON $'\uF296 ' # - VCS_HG_ICON $'\uF0C3 ' # - VCS_SVN_ICON $'\uE72D ' # - RUST_ICON $'\uE7A8 ' # - PYTHON_ICON $'\UE73C ' # - SWIFT_ICON $'\uE755' # - GO_ICON $'\uE626' # - PUBLIC_IP_ICON $'\UF0AC' # - LOCK_ICON $'\UF023' # - EXECUTION_TIME_ICON $'\uF252' # - SSH_ICON $'\uF489' # - VPN_ICON '(vpn)' - KUBERNETES_ICON $'\U2388' # ⎈ - DROPBOX_ICON $'\UF16B' # - DATE_ICON $'\uF073 ' # - TIME_ICON $'\uF017 ' # - JAVA_ICON $'\U2615' # ☕︎ - LARAVEL_ICON $'\ue73f ' # - ) - ;; - *) - # Powerline-Patched Font required! - # See https://github.com/Lokaltog/powerline-fonts - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons=( - LEFT_SEGMENT_SEPARATOR $'\uE0B0' # - RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # - LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace - LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # - RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # - CARRIAGE_RETURN_ICON $'\u21B5' # ↵ - ROOT_ICON $'\u26A1' # ⚡ - SUDO_ICON $'\uE0A2' # - RUBY_ICON '' - AWS_ICON 'AWS:' - AWS_EB_ICON $'\U1F331 ' # 🌱 - BACKGROUND_JOBS_ICON $'\u2699' # ⚙ - TEST_ICON '' - TODO_ICON $'\u2611' # ☑ - BATTERY_ICON $'\U1F50B' # 🔋 - DISK_ICON $'hdd ' - OK_ICON $'\u2714' # ✔ - FAIL_ICON $'\u2718' # ✘ - SYMFONY_ICON 'SF' - NODE_ICON $'\u2B22' # ⬢ - MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ - MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ - MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ - APPLE_ICON 'OSX' - WINDOWS_ICON 'WIN' - FREEBSD_ICON 'BSD' - ANDROID_ICON 'And' - LINUX_ICON 'Lx' - LINUX_ARCH_ICON 'Arc' - LINUX_DEBIAN_ICON 'Deb' - LINUX_UBUNTU_ICON 'Ubu' - LINUX_CENTOS_ICON 'Cen' - LINUX_COREOS_ICON 'Cor' - LINUX_ELEMENTARY_ICON 'Elm' - LINUX_MINT_ICON 'LMi' - LINUX_FEDORA_ICON 'Fed' - LINUX_GENTOO_ICON 'Gen' - LINUX_MAGEIA_ICON 'Mag' - LINUX_NIXOS_ICON 'Nix' - LINUX_MANJARO_ICON 'Man' - LINUX_DEVUAN_ICON 'Dev' - LINUX_ALPINE_ICON 'Alp' - LINUX_AOSC_ICON 'Aos' - LINUX_OPENSUSE_ICON 'OSu' - LINUX_SABAYON_ICON 'Sab' - LINUX_SLACKWARE_ICON 'Sla' - SUNOS_ICON 'Sun' - HOME_ICON '' - HOME_SUB_ICON '' - FOLDER_ICON '' - ETC_ICON $'\u2699' # ⚙ - NETWORK_ICON 'IP' - LOAD_ICON 'L' - SWAP_ICON 'SWP' - RAM_ICON 'RAM' - SERVER_ICON '' - VCS_UNTRACKED_ICON '?' - VCS_UNSTAGED_ICON $'\u25CF' # ● - VCS_STAGED_ICON $'\u271A' # ✚ - VCS_STASH_ICON $'\u235F' # ⍟ - VCS_INCOMING_CHANGES_ICON $'\u2193' # ↓ - VCS_OUTGOING_CHANGES_ICON $'\u2191' # ↑ - VCS_TAG_ICON '' - VCS_BOOKMARK_ICON $'\u263F' # ☿ - VCS_COMMIT_ICON '' - VCS_BRANCH_ICON $'\uE0A0 ' # - VCS_REMOTE_BRANCH_ICON $'\u2192' # → - VCS_GIT_ICON '' - VCS_GIT_GITHUB_ICON '' - VCS_GIT_BITBUCKET_ICON '' - VCS_GIT_GITLAB_ICON '' - VCS_HG_ICON '' - VCS_SVN_ICON '' - RUST_ICON 'Rust' - PYTHON_ICON '' - SWIFT_ICON 'Swift' - GO_ICON 'Go' - PUBLIC_IP_ICON '' - LOCK_ICON $'\UE0A2' - EXECUTION_TIME_ICON 'Dur' - SSH_ICON '(ssh)' - VPN_ICON '(vpn)' - KUBERNETES_ICON $'\U2388' # ⎈ - DROPBOX_ICON 'Dropbox' - DATE_ICON '' - TIME_ICON '' - JAVA_ICON $'\U2615' # ☕︎ - LARAVEL_ICON '' - ) - ;; -esac + if [ -z "$AWESOME_GLYPHS_LOADED" ]; then + echo "Powerlevel9k warning: Awesome-Font mappings have not been loaded. + Source a font mapping in your shell config, per the Awesome-Font docs + (https://github.com/gabrielelana/awesome-terminal-fonts), + Or use a different Powerlevel9k font configuration."; + fi -# Override the above icon settings with any user-defined variables. -case $POWERLEVEL9K_MODE in - 'flat') - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons[LEFT_SEGMENT_SEPARATOR]='' - icons[RIGHT_SEGMENT_SEPARATOR]='' - icons[LEFT_SUBSEGMENT_SEPARATOR]='|' - icons[RIGHT_SUBSEGMENT_SEPARATOR]='|' - ;; - 'compatible') - # Set the right locale to protect special characters - local LC_ALL="" LC_CTYPE="en_US.UTF-8" - icons[LEFT_SEGMENT_SEPARATOR]=$'\u2B80' # ⮀ - icons[RIGHT_SEGMENT_SEPARATOR]=$'\u2B82' # ⮂ - icons[VCS_BRANCH_ICON]='@' - ;; -esac + icons=( + LEFT_SEGMENT_SEPARATOR $'\uE0B0' # + RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # + LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace + LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # + RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # + CARRIAGE_RETURN_ICON $'\u21B5' # ↵ + ROOT_ICON '\u'$CODEPOINT_OF_OCTICONS_ZAP # + SUDO_ICON '\u'$CODEPOINT_OF_AWESOME_UNLOCK # + RUBY_ICON '\u'$CODEPOINT_OF_OCTICONS_RUBY' ' # + AWS_ICON '\u'$CODEPOINT_OF_AWESOME_SERVER # + AWS_EB_ICON $'\U1F331 ' # 🌱 + BACKGROUND_JOBS_ICON '\u'$CODEPOINT_OF_AWESOME_COG' ' # + TEST_ICON '\u'$CODEPOINT_OF_AWESOME_BUG # + TODO_ICON '\u'$CODEPOINT_OF_AWESOME_CHECK_SQUARE_O # + BATTERY_ICON '\U'$CODEPOINT_OF_AWESOME_BATTERY_FULL # + DISK_ICON '\u'$CODEPOINT_OF_AWESOME_HDD_O' ' # + OK_ICON '\u'$CODEPOINT_OF_AWESOME_CHECK # + FAIL_ICON '\u'$CODEPOINT_OF_AWESOME_TIMES # + SYMFONY_ICON 'SF' + NODE_ICON $'\u2B22' # ⬢ + MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ + MULTILINE_SECOND_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ + APPLE_ICON '\u'$CODEPOINT_OF_AWESOME_APPLE # + FREEBSD_ICON $'\U1F608 ' # 😈 + LINUX_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_ARCH_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_DEBIAN_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_UBUNTU_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_CENTOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_COREOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_ELEMENTARY_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_MINT_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_FEDORA_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_GENTOO_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_MAGEIA_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_NIXOS_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_MANJARO_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_DEVUAN_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_ALPINE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_AOSC_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_OPENSUSE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_SABAYON_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + LINUX_SLACKWARE_ICON '\u'$CODEPOINT_OF_AWESOME_LINUX # + SUNOS_ICON '\u'$CODEPOINT_OF_AWESOME_SUN_O' ' # + HOME_ICON '\u'$CODEPOINT_OF_AWESOME_HOME # + HOME_SUB_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_OPEN # + FOLDER_ICON '\u'$CODEPOINT_OF_AWESOME_FOLDER_O # + ETC_ICON '\u'$CODEPOINT_OF_AWESOME_COG' ' # + NETWORK_ICON '\u'$CODEPOINT_OF_AWESOME_RSS # + LOAD_ICON '\u'$CODEPOINT_OF_AWESOME_BAR_CHART' ' # + SWAP_ICON '\u'$CODEPOINT_OF_AWESOME_DASHBOARD # + RAM_ICON '\u'$CODEPOINT_OF_AWESOME_DASHBOARD # + SERVER_ICON '\u'$CODEPOINT_OF_AWESOME_SERVER # + VCS_UNTRACKED_ICON '\u'$CODEPOINT_OF_AWESOME_QUESTION_CIRCLE # + VCS_UNSTAGED_ICON '\u'$CODEPOINT_OF_AWESOME_EXCLAMATION_CIRCLE # + VCS_STAGED_ICON '\u'$CODEPOINT_OF_AWESOME_PLUS_CIRCLE # + VCS_STASH_ICON '\u'$CODEPOINT_OF_AWESOME_INBOX' ' # + VCS_INCOMING_CHANGES_ICON '\u'$CODEPOINT_OF_AWESOME_ARROW_CIRCLE_DOWN' ' # + VCS_OUTGOING_CHANGES_ICON '\u'$CODEPOINT_OF_AWESOME_ARROW_CIRCLE_UP' ' # + VCS_TAG_ICON '\u'$CODEPOINT_OF_AWESOME_TAG' ' # + VCS_BOOKMARK_ICON '\u'$CODEPOINT_OF_OCTICONS_BOOKMARK # + VCS_COMMIT_ICON '\u'$CODEPOINT_OF_OCTICONS_GIT_COMMIT' ' # + VCS_BRANCH_ICON '\u'$CODEPOINT_OF_OCTICONS_GIT_BRANCH' ' # + VCS_REMOTE_BRANCH_ICON '\u'$CODEPOINT_OF_OCTICONS_REPO_PUSH # + VCS_GIT_ICON '\u'$CODEPOINT_OF_AWESOME_GIT' ' # + VCS_GIT_GITHUB_ICON '\u'$CODEPOINT_OF_AWESOME_GITHUB_ALT' ' # + VCS_GIT_BITBUCKET_ICON '\u'$CODEPOINT_OF_AWESOME_BITBUCKET' ' # + VCS_GIT_GITLAB_ICON '\u'$CODEPOINT_OF_AWESOME_GITLAB' ' # + VCS_HG_ICON '\u'$CODEPOINT_OF_AWESOME_FLASK' ' # + VCS_SVN_ICON '(svn) ' + RUST_ICON $'\uE6A8' # + PYTHON_ICON $'\U1F40D' # 🐍 + SWIFT_ICON $'\uE655' # + PUBLIC_IP_ICON '\u'$CODEPOINT_OF_AWESOME_GLOBE # + LOCK_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK # + EXECUTION_TIME_ICON '\u'$CODEPOINT_OF_AWESOME_HOURGLASS_END # + SSH_ICON '(ssh)' + VPN_ICON '\u'$CODEPOINT_OF_AWESOME_LOCK + KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON '\u'$CODEPOINT_OF_AWESOME_DROPBOX # + DATE_ICON $'\uF073 ' # + TIME_ICON $'\uF017 ' # + JAVA_ICON $'\U2615' # ☕︎ + LARAVEL_ICON '' + ) + ;; + 'nerdfont-complete'|'nerdfont-fontconfig') + # nerd-font patched (complete) font required! See + # https://github.com/ryanoasis/nerd-fonts + # http://nerdfonts.com/#cheat-sheet + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + icons=( + LEFT_SEGMENT_SEPARATOR $'\uE0B0' # + RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # + LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace + LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # + RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # + CARRIAGE_RETURN_ICON $'\u21B5' # ↵ + ROOT_ICON $'\uE614 ' # + SUDO_ICON $'\uF09C' # + RUBY_ICON $'\uF219 ' # + AWS_ICON $'\uF270' # + AWS_EB_ICON $'\UF1BD ' # + BACKGROUND_JOBS_ICON $'\uF013 ' # + TEST_ICON $'\uF188' # + TODO_ICON $'\uF133' # + BATTERY_ICON $'\UF240 ' # + DISK_ICON $'\uF0A0' # + OK_ICON $'\uF00C' # + FAIL_ICON $'\uF00D' # + SYMFONY_ICON $'\uE757' # + NODE_ICON $'\uE617 ' # + MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ + MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ + MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ + APPLE_ICON $'\uF179' # + WINDOWS_ICON $'\uF17A' # + FREEBSD_ICON $'\UF30C ' # + ANDROID_ICON $'\uF17B' # + LINUX_ARCH_ICON $'\uF303' # + LINUX_CENTOS_ICON $'\uF304' # + LINUX_COREOS_ICON $'\uF305' # + LINUX_DEBIAN_ICON $'\uF306' # + LINUX_ELEMENTARY_ICON $'\uF309' # + LINUX_FEDORA_ICON $'\uF30a' # + LINUX_GENTOO_ICON $'\uF30d' # + LINUX_MAGEIA_ICON $'\uF310' # + LINUX_MINT_ICON $'\uF30e' # + LINUX_NIXOS_ICON $'\uF313' # + LINUX_MANJARO_ICON $'\uF312' # + LINUX_DEVUAN_ICON $'\uF307' # + LINUX_ALPINE_ICON $'\uF300' # + LINUX_AOSC_ICON $'\uF301' # + LINUX_OPENSUSE_ICON $'\uF314' # + LINUX_SABAYON_ICON $'\uF317' # + LINUX_SLACKWARE_ICON $'\uF319' # + LINUX_UBUNTU_ICON $'\uF31b' # + LINUX_ICON $'\uF17C' # + SUNOS_ICON $'\uF185 ' # + HOME_ICON $'\uF015' # + HOME_SUB_ICON $'\uF07C' # + FOLDER_ICON $'\uF115' # + ETC_ICON $'\uF013' # + NETWORK_ICON $'\uF1EB' # + LOAD_ICON $'\uF080 ' # + SWAP_ICON $'\uF464' # + RAM_ICON $'\uF0E4' # + SERVER_ICON $'\uF0AE' # + VCS_UNTRACKED_ICON $'\uF059' # + VCS_UNSTAGED_ICON $'\uF06A' # + VCS_STAGED_ICON $'\uF055' # + VCS_STASH_ICON $'\uF01C ' # + VCS_INCOMING_CHANGES_ICON $'\uF01A ' # + VCS_OUTGOING_CHANGES_ICON $'\uF01B ' # + VCS_TAG_ICON $'\uF02B ' # + VCS_BOOKMARK_ICON $'\uF461 ' # + VCS_COMMIT_ICON $'\uE729 ' # + VCS_BRANCH_ICON $'\uF126 ' # + VCS_REMOTE_BRANCH_ICON $'\uE728 ' # + VCS_GIT_ICON $'\uF1D3 ' # + VCS_GIT_GITHUB_ICON $'\uF113 ' # + VCS_GIT_BITBUCKET_ICON $'\uE703 ' # + VCS_GIT_GITLAB_ICON $'\uF296 ' # + VCS_HG_ICON $'\uF0C3 ' # + VCS_SVN_ICON $'\uE72D ' # + RUST_ICON $'\uE7A8 ' # + PYTHON_ICON $'\UE73C ' # + SWIFT_ICON $'\uE755' # + GO_ICON $'\uE626' # + PUBLIC_IP_ICON $'\UF0AC' # + LOCK_ICON $'\UF023' # + EXECUTION_TIME_ICON $'\uF252' # + SSH_ICON $'\uF489' # + VPN_ICON '(vpn)' + KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON $'\UF16B' # + DATE_ICON $'\uF073 ' # + TIME_ICON $'\uF017 ' # + JAVA_ICON $'\U2615' # ☕︎ + LARAVEL_ICON $'\ue73f ' # + ) + ;; + *) + # Powerline-Patched Font required! + # See https://github.com/Lokaltog/powerline-fonts + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + icons=( + LEFT_SEGMENT_SEPARATOR $'\uE0B0' # + RIGHT_SEGMENT_SEPARATOR $'\uE0B2' # + LEFT_SEGMENT_END_SEPARATOR ' ' # Whitespace + LEFT_SUBSEGMENT_SEPARATOR $'\uE0B1' # + RIGHT_SUBSEGMENT_SEPARATOR $'\uE0B3' # + CARRIAGE_RETURN_ICON $'\u21B5' # ↵ + ROOT_ICON $'\u26A1' # ⚡ + SUDO_ICON $'\uE0A2' # + RUBY_ICON '' + AWS_ICON 'AWS:' + AWS_EB_ICON $'\U1F331 ' # 🌱 + BACKGROUND_JOBS_ICON $'\u2699' # ⚙ + TEST_ICON '' + TODO_ICON $'\u2611' # ☑ + BATTERY_ICON $'\U1F50B' # 🔋 + DISK_ICON $'hdd ' + OK_ICON $'\u2714' # ✔ + FAIL_ICON $'\u2718' # ✘ + SYMFONY_ICON 'SF' + NODE_ICON $'\u2B22' # ⬢ + MULTILINE_FIRST_PROMPT_PREFIX $'\u256D'$'\U2500' # ╭─ + MULTILINE_NEWLINE_PROMPT_PREFIX $'\u251C'$'\U2500' # ├─ + MULTILINE_LAST_PROMPT_PREFIX $'\u2570'$'\U2500 ' # ╰─ + APPLE_ICON 'OSX' + WINDOWS_ICON 'WIN' + FREEBSD_ICON 'BSD' + ANDROID_ICON 'And' + LINUX_ICON 'Lx' + LINUX_ARCH_ICON 'Arc' + LINUX_DEBIAN_ICON 'Deb' + LINUX_UBUNTU_ICON 'Ubu' + LINUX_CENTOS_ICON 'Cen' + LINUX_COREOS_ICON 'Cor' + LINUX_ELEMENTARY_ICON 'Elm' + LINUX_MINT_ICON 'LMi' + LINUX_FEDORA_ICON 'Fed' + LINUX_GENTOO_ICON 'Gen' + LINUX_MAGEIA_ICON 'Mag' + LINUX_NIXOS_ICON 'Nix' + LINUX_MANJARO_ICON 'Man' + LINUX_DEVUAN_ICON 'Dev' + LINUX_ALPINE_ICON 'Alp' + LINUX_AOSC_ICON 'Aos' + LINUX_OPENSUSE_ICON 'OSu' + LINUX_SABAYON_ICON 'Sab' + LINUX_SLACKWARE_ICON 'Sla' + SUNOS_ICON 'Sun' + HOME_ICON '' + HOME_SUB_ICON '' + FOLDER_ICON '' + ETC_ICON $'\u2699' # ⚙ + NETWORK_ICON 'IP' + LOAD_ICON 'L' + SWAP_ICON 'SWP' + RAM_ICON 'RAM' + SERVER_ICON '' + VCS_UNTRACKED_ICON '?' + VCS_UNSTAGED_ICON $'\u25CF' # ● + VCS_STAGED_ICON $'\u271A' # ✚ + VCS_STASH_ICON $'\u235F' # ⍟ + VCS_INCOMING_CHANGES_ICON $'\u2193' # ↓ + VCS_OUTGOING_CHANGES_ICON $'\u2191' # ↑ + VCS_TAG_ICON '' + VCS_BOOKMARK_ICON $'\u263F' # ☿ + VCS_COMMIT_ICON '' + VCS_BRANCH_ICON $'\uE0A0 ' # + VCS_REMOTE_BRANCH_ICON $'\u2192' # → + VCS_GIT_ICON '' + VCS_GIT_GITHUB_ICON '' + VCS_GIT_BITBUCKET_ICON '' + VCS_GIT_GITLAB_ICON '' + VCS_HG_ICON '' + VCS_SVN_ICON '' + RUST_ICON 'Rust' + PYTHON_ICON '' + SWIFT_ICON 'Swift' + GO_ICON 'Go' + PUBLIC_IP_ICON '' + LOCK_ICON $'\UE0A2' + EXECUTION_TIME_ICON 'Dur' + SSH_ICON '(ssh)' + VPN_ICON '(vpn)' + KUBERNETES_ICON $'\U2388' # ⎈ + DROPBOX_ICON 'Dropbox' + DATE_ICON '' + TIME_ICON '' + JAVA_ICON $'\U2615' # ☕︎ + LARAVEL_ICON '' + ) + ;; + esac -if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then - icons[VCS_BRANCH_ICON]='' -fi + # Override the above icon settings with any user-defined variables. + case $POWERLEVEL9K_MODE in + 'flat') + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + icons[LEFT_SEGMENT_SEPARATOR]='' + icons[RIGHT_SEGMENT_SEPARATOR]='' + icons[LEFT_SUBSEGMENT_SEPARATOR]='|' + icons[RIGHT_SUBSEGMENT_SEPARATOR]='|' + ;; + 'compatible') + # Set the right locale to protect special characters + local LC_ALL="" LC_CTYPE="en_US.UTF-8" + icons[LEFT_SEGMENT_SEPARATOR]=$'\u2B80' # ⮀ + icons[RIGHT_SEGMENT_SEPARATOR]=$'\u2B82' # ⮂ + icons[VCS_BRANCH_ICON]='@' + ;; + esac + + if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then + icons[VCS_BRANCH_ICON]='' + fi } # Safety function for printing icons # Prints the named icon, or if that icon is undefined, the string name. function print_icon() { local icon_name=$1 - local ICON_USER_VARIABLE=POWERLEVEL9K_${icon_name} - if defined "$ICON_USER_VARIABLE"; then + local var_name=POWERLEVEL9K_${icon_name} + if [[ -v "$var_name" ]]; then echo -n "${(P)ICON_USER_VARIABLE}" else echo -n "${icons[$icon_name]}" @@ -547,7 +551,7 @@ function print_icon() { # * $1 string - If "original", then the original icons are printed, # otherwise "print_icon" is used, which takes the users # overrides into account. -get_icon_names() { +function get_icon_names() { # Iterate over a ordered list of keys of the icons array for key in ${(@kon)icons}; do echo -n "POWERLEVEL9K_$key: " diff --git a/functions/utilities.zsh b/functions/utilities.zsh index 8c18bb44..3a77eaca 100755 --- a/functions/utilities.zsh +++ b/functions/utilities.zsh @@ -6,22 +6,28 @@ # https://github.com/bhilburn/powerlevel9k ################################################################ -# Exits with 0 if a variable has been previously defined (even if empty) -# Takes the name of a variable that should be checked. -function defined() { - [[ ! -z "${(tP)1}" ]] -} - -# Given the name of a variable and a default value, sets the variable -# value to the default only if it has not been defined. +# Usage: set_default [OPTION]... NAME [VALUE]... # -# Typeset cannot set the value for an array, so this will only work -# for scalar values. +# Options are the same as in `typeset`. function set_default() { - local varname="$1" - local default_value="$2" + local -a flags=(-g) + while true; do + case $1 in + --) shift; break;; + -*) flags+=$1; shift;; + *) break; + esac + done - defined "$varname" || typeset -g "$varname"="$default_value" + local varname=$1 + shift + if [[ -v $varname ]]; then + typeset $flags $varname + elif [[ "$flags" == *[aA]* ]]; then + eval "typeset ${(@q)flags} ${(q)varname}=(${(qq)@})" + else + typeset $flags $varname="$*" + fi } # Converts large memory values into a human-readable unit (e.g., bytes --> GB) @@ -54,224 +60,15 @@ printSizeHumanReadable() { echo "$size${extension[$index]}" } -# Gets the first value out of a list of items that is not empty. -# The items are examined by a callback-function. -# Takes two arguments: -# * $list - A list of items -# * $callback - A callback function to examine if the item is -# worthy. The callback function has access to -# the inner variable $item. -function getRelevantItem() { - local -a list - local callback - # Explicitly split the elements by whitespace. - list=(${=1}) - callback=$2 - - for item in $list; do - # The first non-empty item wins - try=$(eval "$callback") - if [[ -n "$try" ]]; then - echo "$try" - break; - fi - done -} - -# OS detection -case $(uname) in - Darwin) - OS='OSX' - OS_ICON=$(print_icon 'APPLE_ICON') - ;; - CYGWIN_NT-* | MSYS_NT-*) - OS='Windows' - OS_ICON=$(print_icon 'WINDOWS_ICON') - ;; - FreeBSD) - OS='BSD' - OS_ICON=$(print_icon 'FREEBSD_ICON') - ;; - OpenBSD) - OS='BSD' - OS_ICON=$(print_icon 'FREEBSD_ICON') - ;; - DragonFly) - OS='BSD' - OS_ICON=$(print_icon 'FREEBSD_ICON') - ;; - Linux) - OS='Linux' - if [ -f /etc/os-release ]; then - [[ ${(f)"$((</etc/os-release) 2>/dev/null)"} =~ "ID=([A-Za-z]+)" ]] && os_release_id="${match[1]}" - fi - case "$os_release_id" in - *arch*) - OS_ICON=$(print_icon 'LINUX_ARCH_ICON') - ;; - *debian*) - OS_ICON=$(print_icon 'LINUX_DEBIAN_ICON') - ;; - *ubuntu*) - OS_ICON=$(print_icon 'LINUX_UBUNTU_ICON') - ;; - *elementary*) - OS_ICON=$(print_icon 'LINUX_ELEMENTARY_ICON') - ;; - *fedora*) - OS_ICON=$(print_icon 'LINUX_FEDORA_ICON') - ;; - *coreos*) - OS_ICON=$(print_icon 'LINUX_COREOS_ICON') - ;; - *gentoo*) - OS_ICON=$(print_icon 'LINUX_GENTOO_ICON') - ;; - *mageia*) - OS_ICON=$(print_icon 'LINUX_MAGEIA_ICON') - ;; - *centos*) - OS_ICON=$(print_icon 'LINUX_CENTOS_ICON') - ;; - *opensuse*|*tumbleweed*) - OS_ICON=$(print_icon 'LINUX_OPENSUSE_ICON') - ;; - *sabayon*) - OS_ICON=$(print_icon 'LINUX_SABAYON_ICON') - ;; - *slackware*) - OS_ICON=$(print_icon 'LINUX_SLACKWARE_ICON') - ;; - *linuxmint*) - OS_ICON=$(print_icon 'LINUX_MINT_ICON') - ;; - *alpine*) - OS_ICON=$(print_icon 'LINUX_ALPINE_ICON') - ;; - *aosc*) - OS_ICON=$(print_icon 'LINUX_AOSC_ICON') - ;; - *nixos*) - OS_ICON=$(print_icon 'LINUX_NIXOS_ICON') - ;; - *devuan*) - OS_ICON=$(print_icon 'LINUX_DEVUAN_ICON') - ;; - *manjaro*) - OS_ICON=$(print_icon 'LINUX_MANJARO_ICON') - ;; - *) - OS='Linux' - OS_ICON=$(print_icon 'LINUX_ICON') - ;; - esac - - # Check if we're running on Android - case $(uname -o 2>/dev/null) in - Android) - OS='Android' - OS_ICON=$(print_icon 'ANDROID_ICON') - ;; - esac - ;; - SunOS) - OS='Solaris' - OS_ICON=$(print_icon 'SUNOS_ICON') - ;; - *) - OS='' - OS_ICON='' - ;; -esac - -# Determine the correct sed parameter. -# -# `sed` is unfortunately not consistent across OSes when it comes to flags. -SED_EXTENDED_REGEX_PARAMETER="-r" -if [[ "$OS" == 'OSX' ]]; then - local IS_BSD_SED="$(sed --version &>> /dev/null || echo "BSD sed")" - if [[ -n "$IS_BSD_SED" ]]; then - SED_EXTENDED_REGEX_PARAMETER="-E" - fi -fi - # Determine if the passed segment is used in the prompt # # Pass the name of the segment to this function to test for its presence in # either the LEFT or RIGHT prompt arrays. # * $1: The segment to be tested. segment_in_use() { - local key=$1 - if [[ -n "${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[(r)$key]}" ]] || [[ -n "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[(r)$key]}" ]]; then - return 0 - else - return 1 - fi -} - -# Print a deprecation warning if an old segment is in use. -# Takes the name of an associative array that contains the -# deprecated segments as keys, the values contain the new -# segment names. -print_deprecation_warning() { - typeset -AH raw_deprecated_segments - raw_deprecated_segments=(${(kvP@)1}) - - for key in ${(@k)raw_deprecated_segments}; do - if segment_in_use $key; then - # segment is deprecated - print -P "%F{yellow}Warning!%f The '$key' segment is deprecated. Use '%F{blue}${raw_deprecated_segments[$key]}%f' instead. For more informations, have a look at the CHANGELOG.md." - fi - done -} - -# A helper function to determine if a segment should be -# joined or promoted to a full one. -# Takes three arguments: -# * $1: The array index of the current segment -# * $2: The array index of the last printed segment -# * $3: The array of segments of the left or right prompt -function segmentShouldBeJoined() { - local current_index=$1 - local last_segment_index=$2 - # Explicitly split the elements by whitespace. - local -a elements - elements=(${=3}) - - local current_segment=${elements[$current_index]} - local joined=false - if [[ ${current_segment[-7,-1]} == '_joined' ]]; then - joined=true - # promote segment to a full one, if the predecessing full segment - # was conditional. So this can only be the case for segments that - # are not our direct predecessor. - if (( $(($current_index - $last_segment_index)) > 1)); then - # Now we have to examine every previous segment, until we reach - # the last printed one (found by its index). This is relevant if - # all previous segments are joined. Then we want to join our - # segment as well. - local examined_index=$((current_index - 1)) - while (( $examined_index > $last_segment_index )); do - local previous_segment=${elements[$examined_index]} - # If one of the examined segments is not joined, then we know - # that the current segment should not be joined, as the target - # segment is the wrong one. - if [[ ${previous_segment[-7,-1]} != '_joined' ]]; then - joined=false - break - fi - examined_index=$((examined_index - 1)) - done - fi - fi - - # Return 1 means error; return 0 means no error. So we have - # to invert $joined - if [[ "$joined" == "true" ]]; then - return 0 - else - return 1 - fi + local key=$1 + [[ -n "${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[(r)$key]}" || + -n "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[(r)$key]}" ]] } ################################################################ @@ -350,14 +147,6 @@ function truncatePath() { fi } -# Given a directory path, truncate it according to the settings for -# `truncate_from_right` -function truncatePathFromRight() { - local delim_len=${#POWERLEVEL9K_SHORTEN_DELIMITER:-1} - echo $1 | sed $SED_EXTENDED_REGEX_PARAMETER \ - "s@(([^/]{$((POWERLEVEL9K_SHORTEN_DIR_LENGTH))})([^/]{$delim_len}))[^/]+/@\2$POWERLEVEL9K_SHORTEN_DELIMITER/@g" -} - # Search recursively in parent folders for given file. function upsearch () { if [[ "$PWD" == "$HOME" || "$PWD" == "/" ]]; then |