ohmyzsh
This commit is contained in:
358
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/colors.zsh
Executable file
358
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/colors.zsh
Executable file
@ -0,0 +1,358 @@
|
||||
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
################################################################
|
||||
# Color functions
|
||||
# This file holds some color-functions for
|
||||
# the powerlevel9k-ZSH-theme
|
||||
# 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=(
|
||||
black 000
|
||||
red 001
|
||||
green 002
|
||||
yellow 003
|
||||
blue 004
|
||||
magenta 005
|
||||
cyan 006
|
||||
white 007
|
||||
grey 008
|
||||
maroon 009
|
||||
lime 010
|
||||
olive 011
|
||||
navy 012
|
||||
fuchsia 013
|
||||
purple 013
|
||||
aqua 014
|
||||
teal 014
|
||||
silver 015
|
||||
grey0 016
|
||||
navyblue 017
|
||||
darkblue 018
|
||||
blue3 019
|
||||
blue3 020
|
||||
blue1 021
|
||||
darkgreen 022
|
||||
deepskyblue4 023
|
||||
deepskyblue4 024
|
||||
deepskyblue4 025
|
||||
dodgerblue3 026
|
||||
dodgerblue2 027
|
||||
green4 028
|
||||
springgreen4 029
|
||||
turquoise4 030
|
||||
deepskyblue3 031
|
||||
deepskyblue3 032
|
||||
dodgerblue1 033
|
||||
green3 034
|
||||
springgreen3 035
|
||||
darkcyan 036
|
||||
lightseagreen 037
|
||||
deepskyblue2 038
|
||||
deepskyblue1 039
|
||||
green3 040
|
||||
springgreen3 041
|
||||
springgreen2 042
|
||||
cyan3 043
|
||||
darkturquoise 044
|
||||
turquoise2 045
|
||||
green1 046
|
||||
springgreen2 047
|
||||
springgreen1 048
|
||||
mediumspringgreen 049
|
||||
cyan2 050
|
||||
cyan1 051
|
||||
darkred 052
|
||||
deeppink4 053
|
||||
purple4 054
|
||||
purple4 055
|
||||
purple3 056
|
||||
blueviolet 057
|
||||
orange4 058
|
||||
grey37 059
|
||||
mediumpurple4 060
|
||||
slateblue3 061
|
||||
slateblue3 062
|
||||
royalblue1 063
|
||||
chartreuse4 064
|
||||
darkseagreen4 065
|
||||
paleturquoise4 066
|
||||
steelblue 067
|
||||
steelblue3 068
|
||||
cornflowerblue 069
|
||||
chartreuse3 070
|
||||
darkseagreen4 071
|
||||
cadetblue 072
|
||||
cadetblue 073
|
||||
skyblue3 074
|
||||
steelblue1 075
|
||||
chartreuse3 076
|
||||
palegreen3 077
|
||||
seagreen3 078
|
||||
aquamarine3 079
|
||||
mediumturquoise 080
|
||||
steelblue1 081
|
||||
chartreuse2 082
|
||||
seagreen2 083
|
||||
seagreen1 084
|
||||
seagreen1 085
|
||||
aquamarine1 086
|
||||
darkslategray2 087
|
||||
darkred 088
|
||||
deeppink4 089
|
||||
darkmagenta 090
|
||||
darkmagenta 091
|
||||
darkviolet 092
|
||||
purple 093
|
||||
orange4 094
|
||||
lightpink4 095
|
||||
plum4 096
|
||||
mediumpurple3 097
|
||||
mediumpurple3 098
|
||||
slateblue1 099
|
||||
yellow4 100
|
||||
wheat4 101
|
||||
grey53 102
|
||||
lightslategrey 103
|
||||
mediumpurple 104
|
||||
lightslateblue 105
|
||||
yellow4 106
|
||||
darkolivegreen3 107
|
||||
darkseagreen 108
|
||||
lightskyblue3 109
|
||||
lightskyblue3 110
|
||||
skyblue2 111
|
||||
chartreuse2 112
|
||||
darkolivegreen3 113
|
||||
palegreen3 114
|
||||
darkseagreen3 115
|
||||
darkslategray3 116
|
||||
skyblue1 117
|
||||
chartreuse1 118
|
||||
lightgreen 119
|
||||
lightgreen 120
|
||||
palegreen1 121
|
||||
aquamarine1 122
|
||||
darkslategray1 123
|
||||
red3 124
|
||||
deeppink4 125
|
||||
mediumvioletred 126
|
||||
magenta3 127
|
||||
darkviolet 128
|
||||
purple 129
|
||||
darkorange3 130
|
||||
indianred 131
|
||||
hotpink3 132
|
||||
mediumorchid3 133
|
||||
mediumorchid 134
|
||||
mediumpurple2 135
|
||||
darkgoldenrod 136
|
||||
lightsalmon3 137
|
||||
rosybrown 138
|
||||
grey63 139
|
||||
mediumpurple2 140
|
||||
mediumpurple1 141
|
||||
gold3 142
|
||||
darkkhaki 143
|
||||
navajowhite3 144
|
||||
grey69 145
|
||||
lightsteelblue3 146
|
||||
lightsteelblue 147
|
||||
yellow3 148
|
||||
darkolivegreen3 149
|
||||
darkseagreen3 150
|
||||
darkseagreen2 151
|
||||
lightcyan3 152
|
||||
lightskyblue1 153
|
||||
greenyellow 154
|
||||
darkolivegreen2 155
|
||||
palegreen1 156
|
||||
darkseagreen2 157
|
||||
darkseagreen1 158
|
||||
paleturquoise1 159
|
||||
red3 160
|
||||
deeppink3 161
|
||||
deeppink3 162
|
||||
magenta3 163
|
||||
magenta3 164
|
||||
magenta2 165
|
||||
darkorange3 166
|
||||
indianred 167
|
||||
hotpink3 168
|
||||
hotpink2 169
|
||||
orchid 170
|
||||
mediumorchid1 171
|
||||
orange3 172
|
||||
lightsalmon3 173
|
||||
lightpink3 174
|
||||
pink3 175
|
||||
plum3 176
|
||||
violet 177
|
||||
gold3 178
|
||||
lightgoldenrod3 179
|
||||
tan 180
|
||||
mistyrose3 181
|
||||
thistle3 182
|
||||
plum2 183
|
||||
yellow3 184
|
||||
khaki3 185
|
||||
lightgoldenrod2 186
|
||||
lightyellow3 187
|
||||
grey84 188
|
||||
lightsteelblue1 189
|
||||
yellow2 190
|
||||
darkolivegreen1 191
|
||||
darkolivegreen1 192
|
||||
darkseagreen1 193
|
||||
honeydew2 194
|
||||
lightcyan1 195
|
||||
red1 196
|
||||
deeppink2 197
|
||||
deeppink1 198
|
||||
deeppink1 199
|
||||
magenta2 200
|
||||
magenta1 201
|
||||
orangered1 202
|
||||
indianred1 203
|
||||
indianred1 204
|
||||
hotpink 205
|
||||
hotpink 206
|
||||
mediumorchid1 207
|
||||
darkorange 208
|
||||
salmon1 209
|
||||
lightcoral 210
|
||||
palevioletred1 211
|
||||
orchid2 212
|
||||
orchid1 213
|
||||
orange1 214
|
||||
sandybrown 215
|
||||
lightsalmon1 216
|
||||
lightpink1 217
|
||||
pink1 218
|
||||
plum1 219
|
||||
gold1 220
|
||||
lightgoldenrod2 221
|
||||
lightgoldenrod2 222
|
||||
navajowhite1 223
|
||||
mistyrose1 224
|
||||
thistle1 225
|
||||
yellow1 226
|
||||
lightgoldenrod1 227
|
||||
khaki1 228
|
||||
wheat1 229
|
||||
cornsilk1 230
|
||||
grey100 231
|
||||
grey3 232
|
||||
grey7 233
|
||||
grey11 234
|
||||
grey15 235
|
||||
grey19 236
|
||||
grey23 237
|
||||
grey27 238
|
||||
grey30 239
|
||||
grey35 240
|
||||
grey39 241
|
||||
grey42 242
|
||||
grey46 243
|
||||
grey50 244
|
||||
grey54 245
|
||||
grey58 246
|
||||
grey62 247
|
||||
grey66 248
|
||||
grey70 249
|
||||
grey74 250
|
||||
grey78 251
|
||||
grey82 252
|
||||
grey85 253
|
||||
grey89 254
|
||||
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.
|
||||
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]
|
||||
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 ))
|
||||
}
|
562
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/icons.zsh
Executable file
562
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/icons.zsh
Executable file
@ -0,0 +1,562 @@
|
||||
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
################################################################
|
||||
# icons
|
||||
# This file holds the icon definitions and
|
||||
# icon-functions for the powerlevel9k-ZSH-theme
|
||||
# https://github.com/bhilburn/powerlevel9k
|
||||
################################################################
|
||||
|
||||
# These characters require the Powerline fonts to work properly. If you see
|
||||
# boxes or bizarre characters below, your fonts are not correctly installed. If
|
||||
# you do not want to install a special font, you can set `POWERLEVEL9K_MODE` to
|
||||
# `compatible`. This shows all icons in regular symbols.
|
||||
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
# 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
|
||||
echo -n "${(P)ICON_USER_VARIABLE}"
|
||||
else
|
||||
echo -n "${icons[$icon_name]}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get a list of configured icons
|
||||
# * $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() {
|
||||
# Iterate over a ordered list of keys of the icons array
|
||||
for key in ${(@kon)icons}; do
|
||||
echo -n "POWERLEVEL9K_$key: "
|
||||
if [[ "${1}" == "original" ]]; then
|
||||
# print the original icons as they are defined in the array above
|
||||
echo "${icons[$key]}"
|
||||
else
|
||||
# print the icons as they are configured by the user
|
||||
echo "$(print_icon "$key")"
|
||||
fi
|
||||
done
|
||||
}
|
429
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/utilities.zsh
Executable file
429
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/utilities.zsh
Executable file
@ -0,0 +1,429 @@
|
||||
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
################################################################
|
||||
# Utility functions
|
||||
# This file holds some utility-functions for
|
||||
# the powerlevel9k-ZSH-theme
|
||||
# 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.
|
||||
#
|
||||
# Typeset cannot set the value for an array, so this will only work
|
||||
# for scalar values.
|
||||
function set_default() {
|
||||
local varname="$1"
|
||||
local default_value="$2"
|
||||
|
||||
defined "$varname" || typeset -g "$varname"="$default_value"
|
||||
}
|
||||
|
||||
# Converts large memory values into a human-readable unit (e.g., bytes --> GB)
|
||||
# Takes two arguments:
|
||||
# * $size - The number which should be prettified
|
||||
# * $base - The base of the number (default Bytes)
|
||||
printSizeHumanReadable() {
|
||||
typeset -F 2 size
|
||||
size="$1"+0.00001
|
||||
local extension
|
||||
extension=('B' 'K' 'M' 'G' 'T' 'P' 'E' 'Z' 'Y')
|
||||
local index=1
|
||||
|
||||
# if the base is not Bytes
|
||||
if [[ -n $2 ]]; then
|
||||
local idx
|
||||
for idx in "${extension[@]}"; do
|
||||
if [[ "$2" == "$idx" ]]; then
|
||||
break
|
||||
fi
|
||||
index=$(( index + 1 ))
|
||||
done
|
||||
fi
|
||||
|
||||
while (( (size / 1024) > 0.1 )); do
|
||||
size=$(( size / 1024 ))
|
||||
index=$(( index + 1 ))
|
||||
done
|
||||
|
||||
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
|
||||
[[ -n "${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[(r)${key}]}" ||
|
||||
-n "${POWERLEVEL9K_LEFT_PROMPT_ELEMENTS[(r)${key}_joined]}" ||
|
||||
-n "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[(r)${key}]}" ||
|
||||
-n "${POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS[(r)${key}_joined]}" ]]
|
||||
}
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Given a directory path, truncate it according to the settings.
|
||||
# Parameters:
|
||||
# * $1 Path: string - the directory path to be truncated
|
||||
# * $2 Length: integer - length to truncate to
|
||||
# * $3 Delimiter: string - the delimiter to use
|
||||
# * $4 From: string - "right" | "middle". If omited, assumes right.
|
||||
function truncatePath() {
|
||||
# if the current path is not 1 character long (e.g. "/" or "~")
|
||||
if (( ${#1} > 1 )); then
|
||||
# convert $2 from string to integer
|
||||
2=$(( $2 ))
|
||||
# set $3 to "" if not defined
|
||||
[[ -z $3 ]] && 3="" || 3=$(echo -n $3)
|
||||
# set $4 to "right" if not defined
|
||||
[[ -z $4 ]] && 4="right"
|
||||
# create a variable for the truncated path.
|
||||
local trunc_path
|
||||
# if the path is in the home folder, add "~/" to the start otherwise "/"
|
||||
[[ $1 == "~"* ]] && trunc_path='~/' || trunc_path='/'
|
||||
# split the path into an array using "/" as the delimiter
|
||||
local paths=$1
|
||||
paths=(${(s:/:)${paths//"~\/"/}})
|
||||
# declare locals for the directory being tested and its length
|
||||
local test_dir test_dir_length
|
||||
# do the needed truncation
|
||||
case $4 in
|
||||
right)
|
||||
# include the delimiter length in the threshhold
|
||||
local threshhold=$(( $2 + ${#3} ))
|
||||
# loop through the paths
|
||||
for (( i=1; i<${#paths}; i++ )); do
|
||||
# get the current directory value
|
||||
test_dir=$paths[$i]
|
||||
test_dir_length=${#test_dir}
|
||||
# only truncate if the resulting truncation will be shorter than
|
||||
# the truncation + delimiter length and at least 3 characters
|
||||
if (( $test_dir_length > $threshhold )) && (( $test_dir_length > 3 )); then
|
||||
# use the first $2 characters and the delimiter
|
||||
trunc_path+="${test_dir:0:$2}$3/"
|
||||
else
|
||||
# use the full path
|
||||
trunc_path+="${test_dir}/"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
middle)
|
||||
# we need double the length for start and end truncation + delimiter length
|
||||
local threshhold=$(( $2 * 2 ))
|
||||
# create a variable for the start of the end truncation
|
||||
local last_pos
|
||||
# loop through the paths
|
||||
for (( i=1; i<${#paths}; i++ )); do
|
||||
# get the current directory value
|
||||
test_dir=$paths[$i]
|
||||
test_dir_length=${#test_dir}
|
||||
# only truncate if the resulting truncation will be shorter than
|
||||
# the truncation + delimiter length
|
||||
if (( $test_dir_length > $threshhold )); then
|
||||
# use the first $2 characters, the delimiter and the last $2 characters
|
||||
last_pos=$(( $test_dir_length - $2 ))
|
||||
trunc_path+="${test_dir:0:$2}$3${test_dir:$last_pos:$test_dir_length}/"
|
||||
else
|
||||
# use the full path
|
||||
trunc_path+="${test_dir}/"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
# return the truncated path + the current directory
|
||||
echo $trunc_path${1:t}
|
||||
else # current path is 1 character long (e.g. "/" or "~")
|
||||
echo $1
|
||||
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
|
||||
echo "$PWD"
|
||||
elif test -e "$1"; then
|
||||
pushd .. > /dev/null
|
||||
upsearch "$1"
|
||||
popd > /dev/null
|
||||
echo "$PWD"
|
||||
else
|
||||
pushd .. > /dev/null
|
||||
upsearch "$1"
|
||||
popd > /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse IP address from ifconfig on OSX and from IP on Linux
|
||||
# Parameters:
|
||||
# $1 - string The desired Interface
|
||||
# $2 - string A root prefix for testing purposes
|
||||
function p9k::parseIp() {
|
||||
local desiredInterface="${1}"
|
||||
|
||||
if [[ -z "${desiredInterface}" ]]; then
|
||||
desiredInterface="^[^ ]+"
|
||||
fi
|
||||
|
||||
local ROOT_PREFIX="${2}"
|
||||
if [[ "$OS" == "OSX" ]]; then
|
||||
# Get a plain list of all interfaces
|
||||
local rawInterfaces="$(${ROOT_PREFIX}/sbin/ifconfig -l 2>/dev/null)"
|
||||
# Parse into array (split by whitespace)
|
||||
local -a interfaces
|
||||
interfaces=(${=rawInterfaces})
|
||||
# Parse only relevant interface names
|
||||
local pattern="${desiredInterface}[^ ]?"
|
||||
local -a relevantInterfaces
|
||||
for rawInterface in $interfaces; do
|
||||
[[ "$rawInterface" =~ $pattern ]] && relevantInterfaces+=( $MATCH )
|
||||
done
|
||||
local newline=$'\n'
|
||||
for interfaceName in $relevantInterfaces; do
|
||||
local interface="$(${ROOT_PREFIX}/sbin/ifconfig $interfaceName 2>/dev/null)"
|
||||
if [[ "${interface}" =~ "lo[0-9]*" ]]; then
|
||||
continue
|
||||
fi
|
||||
# Check if interface is UP.
|
||||
if [[ "${interface//${newline}/}" =~ "<([^>]*)>(.*)inet[ ]+([^ ]*)" ]]; then
|
||||
local ipFound="${match[3]}"
|
||||
local -a interfaceStates=(${(s:,:)match[1]})
|
||||
if [[ "${interfaceStates[(r)UP]}" == "UP" ]]; then
|
||||
echo "${ipFound}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
local -a interfaces
|
||||
interfaces=( "${(f)$(${ROOT_PREFIX}/sbin/ip -brief -4 a show 2>/dev/null)}" )
|
||||
local pattern="^${desiredInterface}[ ]+UP[ ]+([^/ ]+)"
|
||||
for interface in "${(@)interfaces}"; do
|
||||
if [[ "$interface" =~ $pattern ]]; then
|
||||
echo "${match[1]}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
167
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/vcs.zsh
Executable file
167
zsh/.oh-my-zsh/custom/themes/powerlevel9k/functions/vcs.zsh
Executable file
@ -0,0 +1,167 @@
|
||||
# vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8
|
||||
################################################################
|
||||
# vcs
|
||||
# This file holds supplemental VCS functions
|
||||
# for the powerlevel9k-ZSH-theme
|
||||
# https://github.com/bhilburn/powerlevel9k
|
||||
################################################################
|
||||
|
||||
set_default POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY false
|
||||
function +vi-git-untracked() {
|
||||
[[ -z "${vcs_comm[gitdir]}" || "${vcs_comm[gitdir]}" == "." ]] && return
|
||||
|
||||
# get the root for the current repo or submodule
|
||||
local repoTopLevel="$(command git rev-parse --show-toplevel 2> /dev/null)"
|
||||
# dump out if we're outside a git repository (which includes being in the .git folder)
|
||||
[[ $? != 0 || -z $repoTopLevel ]] && return
|
||||
|
||||
local untrackedFiles=$(command git ls-files --others --exclude-standard "${repoTopLevel}" 2> /dev/null)
|
||||
|
||||
if [[ -z $untrackedFiles && "$POWERLEVEL9K_VCS_SHOW_SUBMODULE_DIRTY" == "true" ]]; then
|
||||
untrackedFiles+=$(command git submodule foreach --quiet --recursive 'command git ls-files --others --exclude-standard' 2> /dev/null)
|
||||
fi
|
||||
|
||||
[[ -z $untrackedFiles ]] && return
|
||||
|
||||
hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')"
|
||||
VCS_WORKDIR_HALF_DIRTY=true
|
||||
}
|
||||
|
||||
function +vi-git-aheadbehind() {
|
||||
local ahead behind
|
||||
local -a gitstatus
|
||||
|
||||
# for git prior to 1.7
|
||||
# ahead=$(command git rev-list origin/${hook_com[branch]}..HEAD | wc -l)
|
||||
ahead=$(command git rev-list --count "${hook_com[branch]}"@{upstream}..HEAD 2>/dev/null)
|
||||
(( ahead )) && gitstatus+=( " $(print_icon 'VCS_OUTGOING_CHANGES_ICON')${ahead// /}" )
|
||||
|
||||
# for git prior to 1.7
|
||||
# behind=$(command git rev-list HEAD..origin/${hook_com[branch]} | wc -l)
|
||||
behind=$(command git rev-list --count HEAD.."${hook_com[branch]}"@{upstream} 2>/dev/null)
|
||||
(( behind )) && gitstatus+=( " $(print_icon 'VCS_INCOMING_CHANGES_ICON')${behind// /}" )
|
||||
|
||||
hook_com[misc]+=${(j::)gitstatus}
|
||||
}
|
||||
|
||||
function +vi-git-remotebranch() {
|
||||
local remote
|
||||
local branch_name="${hook_com[branch]}"
|
||||
|
||||
# Are we on a remote-tracking branch?
|
||||
remote=${$(command git rev-parse --verify HEAD@{upstream} --symbolic-full-name 2>/dev/null)/refs\/(remotes|heads)\/}
|
||||
|
||||
if [[ -n "$POWERLEVEL9K_VCS_SHORTEN_LENGTH" ]] && [[ -n "$POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH" ]]; then
|
||||
set_default POWERLEVEL9K_VCS_SHORTEN_DELIMITER $'\U2026'
|
||||
|
||||
if [ ${#hook_com[branch]} -gt ${POWERLEVEL9K_VCS_SHORTEN_MIN_LENGTH} ] && [ ${#hook_com[branch]} -gt ${POWERLEVEL9K_VCS_SHORTEN_LENGTH} ]; then
|
||||
case "$POWERLEVEL9K_VCS_SHORTEN_STRATEGY" in
|
||||
truncate_middle)
|
||||
hook_com[branch]="${branch_name:0:$POWERLEVEL9K_VCS_SHORTEN_LENGTH}${POWERLEVEL9K_VCS_SHORTEN_DELIMITER}${branch_name: -$POWERLEVEL9K_VCS_SHORTEN_LENGTH}"
|
||||
;;
|
||||
truncate_from_right)
|
||||
hook_com[branch]="${branch_name:0:$POWERLEVEL9K_VCS_SHORTEN_LENGTH}${POWERLEVEL9K_VCS_SHORTEN_DELIMITER}"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
hook_com[branch]="$(print_icon 'VCS_BRANCH_ICON')${hook_com[branch]}"
|
||||
# Always show the remote
|
||||
#if [[ -n ${remote} ]] ; then
|
||||
# Only show the remote if it differs from the local
|
||||
if [[ -n ${remote} ]] && [[ "${remote#*/}" != "${branch_name}" ]] ; then
|
||||
hook_com[branch]+="$(print_icon 'VCS_REMOTE_BRANCH_ICON')${remote// /}"
|
||||
fi
|
||||
}
|
||||
|
||||
set_default POWERLEVEL9K_VCS_HIDE_TAGS false
|
||||
function +vi-git-tagname() {
|
||||
if [[ "$POWERLEVEL9K_VCS_HIDE_TAGS" == "false" ]]; then
|
||||
# If we are on a tag, append the tagname to the current branch string.
|
||||
local tag
|
||||
tag=$(command git describe --tags --exact-match HEAD 2>/dev/null)
|
||||
|
||||
if [[ -n "${tag}" ]] ; then
|
||||
# There is a tag that points to our current commit. Need to determine if we
|
||||
# are also on a branch, or are in a DETACHED_HEAD state.
|
||||
if [[ -z $(command git symbolic-ref HEAD 2>/dev/null) ]]; then
|
||||
# DETACHED_HEAD state. We want to append the tag name to the commit hash
|
||||
# and print it. Unfortunately, `vcs_info` blows away the hash when a tag
|
||||
# exists, so we have to manually retrieve it and clobber the branch
|
||||
# string.
|
||||
local revision
|
||||
revision=$(command git rev-list -n 1 --abbrev-commit --abbrev=${POWERLEVEL9K_VCS_INTERNAL_HASH_LENGTH} HEAD)
|
||||
hook_com[branch]="$(print_icon 'VCS_BRANCH_ICON')${revision} $(print_icon 'VCS_TAG_ICON')${tag}"
|
||||
else
|
||||
# We are on both a tag and a branch; print both by appending the tag name.
|
||||
hook_com[branch]+=" $(print_icon 'VCS_TAG_ICON')${tag}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Show count of stashed changes
|
||||
# Port from https://github.com/whiteinge/dotfiles/blob/5dfd08d30f7f2749cfc60bc55564c6ea239624d9/.zsh_shouse_prompt#L268
|
||||
function +vi-git-stash() {
|
||||
if [[ -s "${vcs_comm[gitdir]}/logs/refs/stash" ]] ; then
|
||||
local -a stashes=( "${(@f)"$(<${vcs_comm[gitdir]}/logs/refs/stash)"}" )
|
||||
hook_com[misc]+=" $(print_icon 'VCS_STASH_ICON')${#stashes}"
|
||||
fi
|
||||
}
|
||||
|
||||
function +vi-hg-bookmarks() {
|
||||
if [[ -n "${hgbmarks[@]}" ]]; then
|
||||
hook_com[hg-bookmark-string]=" $(print_icon 'VCS_BOOKMARK_ICON')${hgbmarks[@]}"
|
||||
|
||||
# To signal that we want to use the sting we just generated, set the special
|
||||
# variable `ret' to something other than the default zero:
|
||||
ret=1
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
function +vi-vcs-detect-changes() {
|
||||
if [[ "${hook_com[vcs]}" == "git" ]]; then
|
||||
|
||||
local remote=$(command git ls-remote --get-url 2> /dev/null)
|
||||
if [[ "$remote" =~ "github" ]] then
|
||||
vcs_visual_identifier='VCS_GIT_GITHUB_ICON'
|
||||
elif [[ "$remote" =~ "bitbucket" ]] then
|
||||
vcs_visual_identifier='VCS_GIT_BITBUCKET_ICON'
|
||||
elif [[ "$remote" =~ "stash" ]] then
|
||||
vcs_visual_identifier='VCS_GIT_BITBUCKET_ICON'
|
||||
elif [[ "$remote" =~ "gitlab" ]] then
|
||||
vcs_visual_identifier='VCS_GIT_GITLAB_ICON'
|
||||
else
|
||||
vcs_visual_identifier='VCS_GIT_ICON'
|
||||
fi
|
||||
|
||||
elif [[ "${hook_com[vcs]}" == "hg" ]]; then
|
||||
vcs_visual_identifier='VCS_HG_ICON'
|
||||
elif [[ "${hook_com[vcs]}" == "svn" ]]; then
|
||||
vcs_visual_identifier='VCS_SVN_ICON'
|
||||
fi
|
||||
|
||||
if [[ -n "${hook_com[staged]}" ]] || [[ -n "${hook_com[unstaged]}" ]]; then
|
||||
VCS_WORKDIR_DIRTY=true
|
||||
else
|
||||
VCS_WORKDIR_DIRTY=false
|
||||
fi
|
||||
}
|
||||
|
||||
function +vi-svn-detect-changes() {
|
||||
local svn_status="$(svn status)"
|
||||
if [[ -n "$(echo "$svn_status" | \grep \^\?)" ]]; then
|
||||
hook_com[unstaged]+=" $(print_icon 'VCS_UNTRACKED_ICON')"
|
||||
VCS_WORKDIR_HALF_DIRTY=true
|
||||
fi
|
||||
if [[ -n "$(echo "$svn_status" | \grep \^\M)" ]]; then
|
||||
hook_com[unstaged]+=" $(print_icon 'VCS_UNSTAGED_ICON')"
|
||||
VCS_WORKDIR_DIRTY=true
|
||||
fi
|
||||
if [[ -n "$(echo "$svn_status" | \grep \^\A)" ]]; then
|
||||
hook_com[staged]+=" $(print_icon 'VCS_STAGED_ICON')"
|
||||
VCS_WORKDIR_DIRTY=true
|
||||
fi
|
||||
}
|
Reference in New Issue
Block a user