aboutsummaryrefslogtreecommitdiff
path: root/functions
diff options
context:
space:
mode:
Diffstat (limited to 'functions')
-rw-r--r--functions/colors.zsh363
-rw-r--r--functions/icons.zsh96
-rw-r--r--functions/vcs.zsh2
3 files changed, 438 insertions, 23 deletions
diff --git a/functions/colors.zsh b/functions/colors.zsh
index c82af9ea..f421165c 100644
--- a/functions/colors.zsh
+++ b/functions/colors.zsh
@@ -6,6 +6,66 @@
# https://github.com/bhilburn/powerlevel9k
################################################################
+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() {
+ # no need to check numerical values
+ if [[ "$1" = <-> ]]; then
+ if [[ "$1" = <8-15> ]]; then
+ 1=$(($1 - 8))
+ fi
+ else
+ # named color added to parameter expansion print -P to test if the name exists in terminal
+ named="%K{$1}"
+ # https://misc.flogisoft.com/bash/tip_colors_and_formatting
+ default="$'\033'\[49m"
+ # http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html
+ quoted=$(printf "%q" $(print -P "$named"))
+ if [[ $quoted = "$'\033'\[49m" && $1 != "black" ]]; then
+ # color not found, so try to get the code
+ 1=$(getColorCode $1)
+ fi
+ fi
+ echo -n "$1"
+}
+
+# empty paramenter resets (stops) background color
+function backgroundColor() {
+ if [[ -z $1 ]]; then
+ echo -n "%k"
+ else
+ echo -n "%K{$(getColor $1)}"
+ fi
+}
+
+# empty paramenter resets (stops) foreground color
+function foregroundColor() {
+ if [[ -z $1 ]]; then
+ echo -n "%f"
+ else
+ echo -n "%F{$(getColor $1)}"
+ fi
+}
+
# Get numerical color codes. That way we translate ANSI codes
# into ZSH-Style color codes.
function getColorCode() {
@@ -15,30 +75,292 @@ function getColorCode() {
# and "background" colors. We don't need to do that,
# as ZSH uses a 256 color space anyway.
if [[ "$1" = <8-15> ]]; then
- echo $(($1 - 8))
+ echo -n $(($1 - 8))
else
- echo "$1"
+ echo -n "$1"
fi
else
typeset -A codes
- codes=(
- 'black' '000'
- 'red' '001'
- 'green' '002'
- 'yellow' '003'
- 'blue' '004'
- 'magenta' '005'
- 'cyan' '006'
- 'white' '007'
- )
-
- # Strip eventual "bg-" prefixes
- 1=${1#bg-}
- # Strip eventual "fg-" prefixes
- 1=${1#fg-}
- # Strip eventual "br" prefixes ("bright" colors)
- 1=${1#br}
- echo $codes[$1]
+ # https://jonasjacek.github.io/colors/
+ # use color names by default to allow dark/light themes to adjust colors based on names
+ codes[black]=000
+ codes[maroon]=001
+ codes[green]=002
+ codes[olive]=003
+ codes[navy]=004
+ codes[purple]=005
+ codes[teal]=006
+ codes[silver]=007
+ codes[grey]=008
+ codes[red]=009
+ codes[lime]=010
+ codes[yellow]=011
+ codes[blue]=012
+ codes[fuchsia]=013
+ codes[aqua]=014
+ codes[white]=015
+ codes[grey0]=016
+ codes[navyblue]=017
+ codes[darkblue]=018
+ codes[blue3]=019
+ codes[blue3]=020
+ codes[blue1]=021
+ codes[darkgreen]=022
+ codes[deepskyblue4]=023
+ codes[deepskyblue4]=024
+ codes[deepskyblue4]=025
+ codes[dodgerblue3]=026
+ codes[dodgerblue2]=027
+ codes[green4]=028
+ codes[springgreen4]=029
+ codes[turquoise4]=030
+ codes[deepskyblue3]=031
+ codes[deepskyblue3]=032
+ codes[dodgerblue1]=033
+ codes[green3]=034
+ codes[springgreen3]=035
+ codes[darkcyan]=036
+ codes[lightseagreen]=037
+ codes[deepskyblue2]=038
+ codes[deepskyblue1]=039
+ codes[green3]=040
+ codes[springgreen3]=041
+ codes[springgreen2]=042
+ codes[cyan3]=043
+ codes[darkturquoise]=044
+ codes[turquoise2]=045
+ codes[green1]=046
+ codes[springgreen2]=047
+ codes[springgreen1]=048
+ codes[mediumspringgreen]=049
+ codes[cyan2]=050
+ codes[cyan1]=051
+ codes[darkred]=052
+ codes[deeppink4]=053
+ codes[purple4]=054
+ codes[purple4]=055
+ codes[purple3]=056
+ codes[blueviolet]=057
+ codes[orange4]=058
+ codes[grey37]=059
+ codes[mediumpurple4]=060
+ codes[slateblue3]=061
+ codes[slateblue3]=062
+ codes[royalblue1]=063
+ codes[chartreuse4]=064
+ codes[darkseagreen4]=065
+ codes[paleturquoise4]=066
+ codes[steelblue]=067
+ codes[steelblue3]=068
+ codes[cornflowerblue]=069
+ codes[chartreuse3]=070
+ codes[darkseagreen4]=071
+ codes[cadetblue]=072
+ codes[cadetblue]=073
+ codes[skyblue3]=074
+ codes[steelblue1]=075
+ codes[chartreuse3]=076
+ codes[palegreen3]=077
+ codes[seagreen3]=078
+ codes[aquamarine3]=079
+ codes[mediumturquoise]=080
+ codes[steelblue1]=081
+ codes[chartreuse2]=082
+ codes[seagreen2]=083
+ codes[seagreen1]=084
+ codes[seagreen1]=085
+ codes[aquamarine1]=086
+ codes[darkslategray2]=087
+ codes[darkred]=088
+ codes[deeppink4]=089
+ codes[darkmagenta]=090
+ codes[darkmagenta]=091
+ codes[darkviolet]=092
+ codes[purple]=093
+ codes[orange4]=094
+ codes[lightpink4]=095
+ codes[plum4]=096
+ codes[mediumpurple3]=097
+ codes[mediumpurple3]=098
+ codes[slateblue1]=099
+ codes[yellow4]=100
+ codes[wheat4]=101
+ codes[grey53]=102
+ codes[lightslategrey]=103
+ codes[mediumpurple]=104
+ codes[lightslateblue]=105
+ codes[yellow4]=106
+ codes[darkolivegreen3]=107
+ codes[darkseagreen]=108
+ codes[lightskyblue3]=109
+ codes[lightskyblue3]=110
+ codes[skyblue2]=111
+ codes[chartreuse2]=112
+ codes[darkolivegreen3]=113
+ codes[palegreen3]=114
+ codes[darkseagreen3]=115
+ codes[darkslategray3]=116
+ codes[skyblue1]=117
+ codes[chartreuse1]=118
+ codes[lightgreen]=119
+ codes[lightgreen]=120
+ codes[palegreen1]=121
+ codes[aquamarine1]=122
+ codes[darkslategray1]=123
+ codes[red3]=124
+ codes[deeppink4]=125
+ codes[mediumvioletred]=126
+ codes[magenta3]=127
+ codes[darkviolet]=128
+ codes[purple]=129
+ codes[darkorange3]=130
+ codes[indianred]=131
+ codes[hotpink3]=132
+ codes[mediumorchid3]=133
+ codes[mediumorchid]=134
+ codes[mediumpurple2]=135
+ codes[darkgoldenrod]=136
+ codes[lightsalmon3]=137
+ codes[rosybrown]=138
+ codes[grey63]=139
+ codes[mediumpurple2]=140
+ codes[mediumpurple1]=141
+ codes[gold3]=142
+ codes[darkkhaki]=143
+ codes[navajowhite3]=144
+ codes[grey69]=145
+ codes[lightsteelblue3]=146
+ codes[lightsteelblue]=147
+ codes[yellow3]=148
+ codes[darkolivegreen3]=149
+ codes[darkseagreen3]=150
+ codes[darkseagreen2]=151
+ codes[lightcyan3]=152
+ codes[lightskyblue1]=153
+ codes[greenyellow]=154
+ codes[darkolivegreen2]=155
+ codes[palegreen1]=156
+ codes[darkseagreen2]=157
+ codes[darkseagreen1]=158
+ codes[paleturquoise1]=159
+ codes[red3]=160
+ codes[deeppink3]=161
+ codes[deeppink3]=162
+ codes[magenta3]=163
+ codes[magenta3]=164
+ codes[magenta2]=165
+ codes[darkorange3]=166
+ codes[indianred]=167
+ codes[hotpink3]=168
+ codes[hotpink2]=169
+ codes[orchid]=170
+ codes[mediumorchid1]=171
+ codes[orange3]=172
+ codes[lightsalmon3]=173
+ codes[lightpink3]=174
+ codes[pink3]=175
+ codes[plum3]=176
+ codes[violet]=177
+ codes[gold3]=178
+ codes[lightgoldenrod3]=179
+ codes[tan]=180
+ codes[mistyrose3]=181
+ codes[thistle3]=182
+ codes[plum2]=183
+ codes[yellow3]=184
+ codes[khaki3]=185
+ codes[lightgoldenrod2]=186
+ codes[lightyellow3]=187
+ codes[grey84]=188
+ codes[lightsteelblue1]=189
+ codes[yellow2]=190
+ codes[darkolivegreen1]=191
+ codes[darkolivegreen1]=192
+ codes[darkseagreen1]=193
+ codes[honeydew2]=194
+ codes[lightcyan1]=195
+ codes[red1]=196
+ codes[deeppink2]=197
+ codes[deeppink1]=198
+ codes[deeppink1]=199
+ codes[magenta2]=200
+ codes[magenta1]=201
+ codes[orangered1]=202
+ codes[indianred1]=203
+ codes[indianred1]=204
+ codes[hotpink]=205
+ codes[hotpink]=206
+ codes[mediumorchid1]=207
+ codes[darkorange]=208
+ codes[salmon1]=209
+ codes[lightcoral]=210
+ codes[palevioletred1]=211
+ codes[orchid2]=212
+ codes[orchid1]=213
+ codes[orange1]=214
+ codes[sandybrown]=215
+ codes[lightsalmon1]=216
+ codes[lightpink1]=217
+ codes[pink1]=218
+ codes[plum1]=219
+ codes[gold1]=220
+ codes[lightgoldenrod2]=221
+ codes[lightgoldenrod2]=222
+ codes[navajowhite1]=223
+ codes[mistyrose1]=224
+ codes[thistle1]=225
+ codes[yellow1]=226
+ codes[lightgoldenrod1]=227
+ codes[khaki1]=228
+ codes[wheat1]=229
+ codes[cornsilk1]=230
+ codes[grey100]=231
+ codes[grey3]=232
+ codes[grey7]=233
+ codes[grey11]=234
+ codes[grey15]=235
+ codes[grey19]=236
+ codes[grey23]=237
+ codes[grey27]=238
+ codes[grey30]=239
+ codes[grey35]=240
+ codes[grey39]=241
+ codes[grey42]=242
+ codes[grey46]=243
+ codes[grey50]=244
+ codes[grey54]=245
+ codes[grey58]=246
+ codes[grey62]=247
+ codes[grey66]=248
+ codes[grey70]=249
+ codes[grey74]=250
+ codes[grey78]=251
+ codes[grey82]=252
+ codes[grey85]=253
+ codes[grey89]=254
+ codes[grey93]=255
+
+ # for testing purposes in terminal
+ if [[ "$1" == "foreground" ]]; then
+ # call via `getColorCode foreground`
+ for i in "${(k@)codes}"; do
+ print -P "$(foregroundColor $i)$(getColor $i) - $i$(foregroundColor)"
+ done
+ elif [[ "$1" == "background" ]]; then
+ # call via `getColorCode background`
+ for i in "${(k@)codes}"; do
+ print -P "$(backgroundColor $i)$(getColor $i) - $i$(backgroundColor)"
+ done
+ else
+ #[[ -n "$1" ]] bg="%K{$1}" || bg="%k"
+ # Strip eventual "bg-" prefixes
+ 1=${1#bg-}
+ # Strip eventual "fg-" prefixes
+ 1=${1#fg-}
+ # Strip eventual "br" prefixes ("bright" colors)
+ 1=${1#br}
+ echo -n $codes[$1]
+ fi
fi
}
@@ -53,4 +375,3 @@ function isSameColor() {
return $(( color1 != color2 ))
}
-
diff --git a/functions/icons.zsh b/functions/icons.zsh
index 7124386b..ae2c5383 100644
--- a/functions/icons.zsh
+++ b/functions/icons.zsh
@@ -87,6 +87,9 @@ case $POWERLEVEL9K_MODE in
SSH_ICON '(ssh)'
VPN_ICON '(vpn)'
KUBERNETES_ICON $'\U2388' # ⎈
+ DROPBOX_ICON $'\UF16B' # 
+ DATE_ICON $'\uE184' # 
+ TIME_ICON $'\uE12E' # 
)
;;
'awesome-fontconfig')
@@ -158,11 +161,94 @@ case $POWERLEVEL9K_MODE in
SSH_ICON '(ssh)'
VPN_ICON $'\uF023'
KUBERNETES_ICON $'\U2388' # ⎈
+ DROPBOX_ICON $'\UF16B' # 
+ DATE_ICON $'\uF073 ' # 
+ TIME_ICON $'\uF017 ' # 
+ )
+ ;;
+ '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 # 
+ 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 # 
+ 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 # 
+ 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 ' # 
)
;;
'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=(
@@ -213,8 +299,8 @@ case $POWERLEVEL9K_MODE in
VCS_COMMIT_ICON $'\uE729 ' # 
VCS_BRANCH_ICON $'\uF126 ' # 
VCS_REMOTE_BRANCH_ICON $'\uE728 ' # 
- VCS_GIT_ICON $'\uF113 ' # 
- VCS_GIT_GITHUB_ICON $'\uE709 ' # 
+ VCS_GIT_ICON $'\uF1D3 ' # 
+ VCS_GIT_GITHUB_ICON $'\uF113 ' # 
VCS_GIT_BITBUCKET_ICON $'\uE703 ' # 
VCS_GIT_GITLAB_ICON $'\uF296 ' # 
VCS_HG_ICON $'\uF0C3 ' # 
@@ -229,6 +315,9 @@ case $POWERLEVEL9K_MODE in
SSH_ICON $'\uF489' # 
VPN_ICON '(vpn)'
KUBERNETES_ICON $'\U2388' # ⎈
+ DROPBOX_ICON $'\UF16B' # 
+ DATE_ICON $'\uF073 ' # 
+ TIME_ICON $'\uF017 ' # 
)
;;
*)
@@ -300,6 +389,9 @@ case $POWERLEVEL9K_MODE in
SSH_ICON '(ssh)'
VPN_ICON '(vpn)'
KUBERNETES_ICON $'\U2388' # ⎈
+ DROPBOX_ICON 'Dropbox'
+ DATE_ICON ''
+ TIME_ICON ''
)
;;
esac
diff --git a/functions/vcs.zsh b/functions/vcs.zsh
index 89f04143..e2e9f3a3 100644
--- a/functions/vcs.zsh
+++ b/functions/vcs.zsh
@@ -116,6 +116,8 @@ function +vi-vcs-detect-changes() {
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