mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-16 09:50:06 +00:00
Merge branch 'next' into master
This commit is contained in:
commit
f17a715610
10 changed files with 690 additions and 136 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
test-vm/.vagrant
|
||||
*.swp
|
||||
.idea
|
30
README.md
30
README.md
|
@ -88,6 +88,7 @@ The segments that are currently available are:
|
|||
* [`background_jobs`](#background_jobs) - Indicator for background jobs.
|
||||
* [`battery`](#battery) - Current battery status.
|
||||
* [`context`](#context) - Your username and host, conditionalized based on $USER and SSH status.
|
||||
* [`date`](#date) - System date.
|
||||
* [`dir`](#dir) - Your current working directory.
|
||||
* `dir_writable` - Displays a lock icon, if you do not have write permissions on the current folder.
|
||||
* [`disk_usage`](#disk_usage) - Disk usage of your current partition.
|
||||
|
@ -140,6 +141,7 @@ The segments that are currently available are:
|
|||
* `aws_eb_env` - The current Elastic Beanstalk Environment.
|
||||
* `docker_machine` - The current Docker Machine.
|
||||
* `kubecontext` - The current context of your `kubectl` configuration.
|
||||
* `dropbox` - Indicates Dropbox directory and syncing status using `dropbox-cli`
|
||||
|
||||
**Other:**
|
||||
* [`custom_command`](#custom_command) - Create a custom segment to display the
|
||||
|
@ -148,6 +150,7 @@ The segments that are currently available are:
|
|||
* [`todo`](http://todotxt.com/) - Shows the number of tasks in your todo.txt tasks file.
|
||||
* `detect_virt` - Virtualization detection with systemd
|
||||
* `newline` - Continues the prompt on a new line.
|
||||
* `openfoam` - Shows the currently sourced [OpenFOAM](https://openfoam.org/) environment.
|
||||
|
||||
---------------------------------------------------------------------------------
|
||||
|
||||
|
@ -186,6 +189,7 @@ your `~/.zshrc`:
|
|||
| Variable | Default Value | Description |
|
||||
|----------|---------------|-------------|
|
||||
|`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE`|`true`|If there is more than one background job, this segment will show the number of jobs. Set this to `false` to turn this feature off.|
|
||||
`POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS`|`false`|Always show the jobs count (even if it's zero).|
|
||||
|
||||
##### battery
|
||||
|
||||
|
@ -243,7 +247,7 @@ battery level. This will override the following variables:
|
|||
`POWERLEVEL9K_BATTERY_DISCONNECTED`, and `POWERLEVEL9K_BATTERY_LOW_COLOR`. In
|
||||
order to do this, define a color array, from low to high, as shown below:
|
||||
```zsh
|
||||
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND=(196 202 208 214 220 226 190 154 118 82 46)
|
||||
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND=(red1 orangered1 darkorange orange1 gold1 yellow1 yellow2 greenyellow chartreuse1 chartreuse2 green1)
|
||||
```
|
||||
|
||||
As with the battery stages, you can use any number of colors and Powerlevel9k
|
||||
|
@ -251,9 +255,9 @@ will automatically use all of them appropriately.
|
|||
|
||||
Some example settings:
|
||||
|Brightness|Possible Array|
|
||||
|Bright Colors|(196 202 208 214 220 226 190 154 118 82 46)|
|
||||
|Normal Colors|(124 130 136 142 148 112 76 40 34 28 22)|
|
||||
|Subdued Colors|( 88 94 100 106 70 34 28 22)|
|
||||
|Bright Colors|(red1 orangered1 darkorange orange1 gold1 yellow1 yellow2 greenyellow chartreuse1 chartreuse2 green1)|
|
||||
|Normal Colors|(red3 darkorange3 darkgoldenrod gold3 yellow3 chartreuse2 mediumspringgreen green3 green3 green4 darkgreen)|
|
||||
|Subdued Colors|(darkred orange4 yellow4 yellow4 chartreuse3 green3 green4 darkgreen)|
|
||||
|
||||
##### command_execution_time
|
||||
|
||||
|
@ -334,6 +338,14 @@ end of the hostname.
|
|||
|`POWERLEVEL9K_ALWAYS_SHOW_USER`|false|Always show the username, but conditionalize the hostname.|
|
||||
|`POWERLEVEL9K_CONTEXT_TEMPLATE`|%n@%m|Default context prompt (username@machine). Refer to the [ZSH Documentation](http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html) for all possible expansions, including deeper host depths.|
|
||||
|
||||
##### date
|
||||
|
||||
The `date` segment shows the current system date.
|
||||
|
||||
| Variable | Default Value | Description |
|
||||
|----------|---------------|-------------|
|
||||
|`POWERLEVEL9K_DATE_FORMAT`|`%D{%d.%m.%y}`|[ZSH time format](http://zsh.sourceforge.net/Doc/Release Prompt-Expansion.html) to use in this segment.|
|
||||
|
||||
##### dir
|
||||
|
||||
The `dir` segment shows the current working directory. When using the "Awesome
|
||||
|
@ -388,7 +400,7 @@ The `truncate_with_package_name` strategy gives your directory path relative to
|
|||
}
|
||||
```
|
||||
|
||||
the path shown would be `my-cool-project`. If you navigate to `$HOME/projects/my-project/src`, then the path shown would be `my-cool-project/src`. Please note that this currently looks for `.git` directory to determine the root of the project.
|
||||
The path shown would be `my-cool-project`. If you navigate to `$HOME/projects/my-project/src`, then the path shown would be `my-cool-project/src`. Please note that this currently looks for `.git` directory to determine the root of the project.
|
||||
|
||||
If you want to customize the directory separator, you could set:
|
||||
```zsh
|
||||
|
@ -467,6 +479,8 @@ also specify which method you would like it to use. The methods available are di
|
|||
curl, or wget. The host used for wget and curl is http://ident.me by default but can be set to
|
||||
another host if you prefer.
|
||||
|
||||
If you activate a VPN, the icon for this segment will change to the defined VPN icon.
|
||||
|
||||
The public_ip segment will attempt to update your public IP address every 5 minutes by default(also
|
||||
configurable by the user). If you lose connection your cached IP address will be displayed until
|
||||
your timeout expires at which point every time your prompt is generated a new attempt will be made.
|
||||
|
@ -509,7 +523,11 @@ This segment shows the version of Ruby being used when using `rbenv` to change y
|
|||
It figures out the version being used by taking the output of the `rbenv version-name` command.
|
||||
|
||||
* If `rbenv` is not in $PATH, nothing will be shown.
|
||||
* If the current Ruby version is the same as the global Ruby version, nothing will be shown.
|
||||
* By default, if the current local Ruby version is the same as the global Ruby version, nothing will be shown. See the configuration variable, below, to modify this behavior.
|
||||
|
||||
Variable | Default Value | Description |
|
||||
|----------|---------------|-------------|
|
||||
|`POWERLEVEL9K_RBENV_ALWAYS`|'false'|Always show the `rbenv` segment, even if the local version matches the global.|
|
||||
|
||||
##### rspec_stats
|
||||
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
# 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
|
||||
|
||||
# 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]
|
||||
# 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 ))
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
################################################################
|
||||
|
||||
## Turn on for Debugging
|
||||
#PS4='%s%f%b%k%F{blue}%{λ%}%L %F{240}%N:%i%(?.. %F{red}%?) %1(_.%F{yellow}%-1_ .)%s%f%b%k '
|
||||
#PS4='%s%f%b%k%F{blue}%{λ%}%L %F{240}%N:%i%(?.. %F{red}%?) %1(_.%F{yellow}%-1_ .)%s%f%b%k '
|
||||
#zstyle ':vcs_info:*+*:*' debug true
|
||||
#set -o xtrace
|
||||
|
||||
|
@ -127,8 +127,8 @@ left_prompt_segment() {
|
|||
[[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER"
|
||||
|
||||
local bg fg
|
||||
[[ -n "$3" ]] && bg="%K{$3}" || bg="%k"
|
||||
[[ -n "$4" ]] && fg="%F{$4}" || fg="%f"
|
||||
[[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)"
|
||||
[[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)"
|
||||
|
||||
if [[ $CURRENT_BG != 'NONE' ]] && ! isSameColor "$3" "$CURRENT_BG"; then
|
||||
echo -n "$bg%F{$CURRENT_BG}"
|
||||
|
@ -142,8 +142,8 @@ left_prompt_segment() {
|
|||
# subsegment (or the default color). This should have
|
||||
# enough contrast.
|
||||
local complement
|
||||
[[ -n "$4" ]] && complement="$4" || complement=$DEFAULT_COLOR
|
||||
echo -n "$bg%F{$complement}"
|
||||
[[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)"
|
||||
echo -n "${bg}${complement}"
|
||||
if [[ $joined == false ]]; then
|
||||
echo -n "$(print_icon 'LEFT_SUBSEGMENT_SEPARATOR')$POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS"
|
||||
fi
|
||||
|
@ -218,8 +218,8 @@ right_prompt_segment() {
|
|||
[[ -n $FG_COLOR_MODIFIER ]] && 4="$FG_COLOR_MODIFIER"
|
||||
|
||||
local bg fg
|
||||
[[ -n "$3" ]] && bg="%K{$3}" || bg="%k"
|
||||
[[ -n "$4" ]] && fg="%F{$4}" || fg="%f"
|
||||
[[ -n "$3" ]] && bg="$(backgroundColor $3)" || bg="$(backgroundColor)"
|
||||
[[ -n "$4" ]] && fg="$(foregroundColor $4)" || fg="$(foregroundColor)"
|
||||
|
||||
# If CURRENT_RIGHT_BG is "NONE", we are the first right segment.
|
||||
if [[ $joined == false ]] || [[ "$CURRENT_RIGHT_BG" == "NONE" ]]; then
|
||||
|
@ -229,10 +229,11 @@ right_prompt_segment() {
|
|||
# subsegment (or the default color). This should have
|
||||
# enough contrast.
|
||||
local complement
|
||||
[[ -n "$4" ]] && complement="$4" || complement=$DEFAULT_COLOR
|
||||
echo -n "%F{$complement}$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f"
|
||||
[[ -n "$4" ]] && complement="$fg" || complement="$(foregroundColor $DEFAULT_COLOR)"
|
||||
echo -n "$complement$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f"
|
||||
else
|
||||
echo -n "%F{$3}$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f"
|
||||
# Use the new BG color for the foreground with separator
|
||||
echo -n "$(foregroundColor $3)$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -272,6 +273,7 @@ right_prompt_segment() {
|
|||
# right-left but reads the opposite, this isn't necessary for the other side.
|
||||
CURRENT_BG='NONE'
|
||||
|
||||
################################################################
|
||||
# Anaconda Environment
|
||||
prompt_anaconda() {
|
||||
# Depending on the conda version, either might be set. This
|
||||
|
@ -285,6 +287,7 @@ prompt_anaconda() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# AWS Profile
|
||||
prompt_aws() {
|
||||
local aws_profile="${AWS_PROFILE:-$AWS_DEFAULT_PROFILE}"
|
||||
|
@ -294,6 +297,7 @@ prompt_aws() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Current Elastic Beanstalk environment
|
||||
prompt_aws_eb_env() {
|
||||
local eb_env=$(grep environment .elasticbeanstalk/config.yml 2> /dev/null | awk '{print $2}')
|
||||
|
@ -303,8 +307,10 @@ prompt_aws_eb_env() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to indicate background jobs with an icon.
|
||||
set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE true
|
||||
set_default POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS false
|
||||
prompt_background_jobs() {
|
||||
local background_jobs_number=${$(jobs -l | wc -l)// /}
|
||||
local wrong_lines=`jobs -l | awk '/pwd now/{ count++ } END {print count}'`
|
||||
|
@ -313,13 +319,14 @@ prompt_background_jobs() {
|
|||
fi
|
||||
if [[ background_jobs_number -gt 0 ]]; then
|
||||
local background_jobs_number_print=""
|
||||
if [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE" == "true" ]] && [[ "$background_jobs_number" -gt 1 ]]; then
|
||||
if [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE" == "true" ]] && ([[ "$background_jobs_number" -gt 1 ]] || [[ "$POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE_ALWAYS" == "true" ]]); then
|
||||
background_jobs_number_print="$background_jobs_number"
|
||||
fi
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "cyan" "$background_jobs_number_print" 'BACKGROUND_JOBS_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# A newline in your prompt, so you can segments on multiple lines.
|
||||
prompt_newline() {
|
||||
local lws newline
|
||||
|
@ -337,6 +344,7 @@ prompt_newline() {
|
|||
POWERLEVEL9K_WHITESPACE_BETWEEN_LEFT_SEGMENTS=$lws
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment that indicates usage level of current partition.
|
||||
set_default POWERLEVEL9K_DISK_USAGE_ONLY_WARNING false
|
||||
set_default POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL 90
|
||||
|
@ -379,6 +387,8 @@ prompt_disk_usage() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment that displays the battery status in levels and colors
|
||||
prompt_battery() {
|
||||
# The battery can have four different states - default to 'unknown'.
|
||||
local current_state='unknown'
|
||||
|
@ -489,6 +499,7 @@ prompt_battery() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Public IP segment
|
||||
# Parameters:
|
||||
# * $1 Alignment: string - left|right
|
||||
|
@ -555,10 +566,20 @@ prompt_public_ip() {
|
|||
|
||||
# Draw the prompt segment
|
||||
if [[ -n $public_ip ]]; then
|
||||
$1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" 'PUBLIC_IP_ICON'
|
||||
icon='PUBLIC_IP_ICON'
|
||||
# Check VPN is on if VPN interface is set
|
||||
if [[ -n $POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE ]]; then
|
||||
for vpn_iface in $(/sbin/ifconfig | grep -e ^"$POWERLEVEL9K_PUBLIC_IP_VPN_INTERFACE" | cut -d":" -f1)
|
||||
do
|
||||
icon='VPN_ICON'
|
||||
break
|
||||
done
|
||||
fi
|
||||
$1_prompt_segment "$0" "$2" "$DEFAULT_COLOR" "$DEFAULT_COLOR_INVERTED" "${public_ip}" "$icon"
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Context: user@hostname (who am I and where am I)
|
||||
# Note that if $DEFAULT_USER is not set, this prompt segment will always print
|
||||
set_default POWERLEVEL9K_ALWAYS_SHOW_CONTEXT false
|
||||
|
@ -569,25 +590,26 @@ prompt_context() {
|
|||
typeset -AH context_states
|
||||
context_states=(
|
||||
"ROOT" "yellow"
|
||||
"DEFAULT" "011"
|
||||
"DEFAULT" "yellow"
|
||||
"REMOTE" "yellow"
|
||||
)
|
||||
|
||||
local content=""
|
||||
|
||||
if [[ "$POWERLEVEL9K_ALWAYS_SHOW_CONTEXT" == true ]] || [[ "$(whoami)" != "$DEFAULT_USER" ]] || [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then
|
||||
|
||||
if [[ $(print -P "%#") == '#' ]]; then
|
||||
current_state="ROOT"
|
||||
fi
|
||||
|
||||
content="${POWERLEVEL9K_CONTEXT_TEMPLATE}"
|
||||
|
||||
elif [[ "$POWERLEVEL9K_ALWAYS_SHOW_USER" == true ]]; then
|
||||
content="$(whoami)"
|
||||
else
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ $(print -P "%#") == '#' ]]; then
|
||||
current_state="ROOT"
|
||||
elif [[ -n "$SSH_CLIENT" || -n "$SSH_TTY" ]]; then
|
||||
current_state="REMOTE"
|
||||
fi
|
||||
|
||||
"$1_prompt_segment" "${0}_${current_state}" "$2" "$DEFAULT_COLOR" "${context_states[$current_state]}" "${content}"
|
||||
}
|
||||
|
||||
|
@ -612,7 +634,7 @@ prompt_user() {
|
|||
"STATE" "DEFAULT"
|
||||
"CONTENT" "$(whoami)"
|
||||
"BACKGROUND_COLOR" "${DEFAULT_COLOR}"
|
||||
"FOREGROUND_COLOR" "011"
|
||||
"FOREGROUND_COLOR" "yellow"
|
||||
"VISUAL_IDENTIFIER" "USER_ICON"
|
||||
)
|
||||
fi
|
||||
|
@ -639,13 +661,14 @@ prompt_host() {
|
|||
"STATE" "LOCAL"
|
||||
"CONTENT" "${POWERLEVEL9K_HOST_TEMPLATE}"
|
||||
"BACKGROUND_COLOR" "${DEFAULT_COLOR}"
|
||||
"FOREGROUND_COLOR" "011"
|
||||
"FOREGROUND_COLOR" "yellow"
|
||||
"VISUAL_IDENTIFIER" "HOST_ICON"
|
||||
)
|
||||
fi
|
||||
"$1_prompt_segment" "$0_${host_state[STATE]}" "$2" "${host_state[BACKGROUND_COLOR]}" "${host_state[FOREGROUND_COLOR]}" "${host_state[CONTENT]}" "${host_state[VISUAL_IDENTIFIER]}"
|
||||
}
|
||||
|
||||
################################################################
|
||||
# The 'custom` prompt provides a way for users to invoke commands and display
|
||||
# the output in a segment.
|
||||
prompt_custom() {
|
||||
|
@ -657,6 +680,7 @@ prompt_custom() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Display the duration the command needed to run.
|
||||
prompt_command_execution_time() {
|
||||
set_default POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD 3
|
||||
|
@ -686,10 +710,11 @@ prompt_command_execution_time() {
|
|||
fi
|
||||
|
||||
if (( _P9K_COMMAND_DURATION >= POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD )); then
|
||||
"$1_prompt_segment" "$0" "$2" "red" "226" "${humanReadableDuration}" 'EXECUTION_TIME_ICON'
|
||||
"$1_prompt_segment" "$0" "$2" "red" "yellow1" "${humanReadableDuration}" 'EXECUTION_TIME_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Dir: current working directory
|
||||
set_default POWERLEVEL9K_DIR_PATH_SEPARATOR "/"
|
||||
set_default POWERLEVEL9K_HOME_FOLDER_ABBREVIATION "~"
|
||||
|
@ -704,10 +729,10 @@ prompt_dir() {
|
|||
|
||||
case "$POWERLEVEL9K_SHORTEN_STRATEGY" in
|
||||
truncate_middle)
|
||||
current_path=$(pwd | sed -e "s,^$HOME,~," | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1$POWERLEVEL9K_SHORTEN_DELIMITER\2\//g")
|
||||
current_path=$(echo "$current_path" | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1$POWERLEVEL9K_SHORTEN_DELIMITER\2\//g")
|
||||
;;
|
||||
truncate_from_right)
|
||||
current_path=$(truncatePathFromRight "$(pwd | sed -e "s,^$HOME,~,")" )
|
||||
current_path=$(truncatePathFromRight "$current_path" )
|
||||
;;
|
||||
truncate_with_package_name)
|
||||
local name repo_path package_path current_dir zero
|
||||
|
@ -757,8 +782,12 @@ prompt_dir() {
|
|||
# Instead of printing out the full path, print out the name of the package
|
||||
# from the package.json and append the current subdirectory
|
||||
current_path="`echo $packageName | tr -d '"'`$subdirectory_path"
|
||||
if [[ "${POWERLEVEL9K_DIR_OMIT_FIRST_CHARACTER}" == "true" ]]; then
|
||||
# add space before the packageName to allow for removing the "first" character, without messing up the package name.
|
||||
current_path=" ${current_path}"
|
||||
fi
|
||||
else
|
||||
current_path=$(truncatePathFromRight "$(pwd | sed -e "s,^$HOME,~,")" )
|
||||
current_path=$(truncatePathFromRight "$current_path" )
|
||||
fi
|
||||
;;
|
||||
truncate_with_folder_marker)
|
||||
|
@ -844,6 +873,7 @@ prompt_dir() {
|
|||
"$1_prompt_segment" "$0_${current_state}" "$2" "blue" "$DEFAULT_COLOR" "${current_path}" "${dir_states[$current_state]}"
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Docker machine
|
||||
prompt_docker_machine() {
|
||||
local docker_machine="$DOCKER_MACHINE_NAME"
|
||||
|
@ -853,6 +883,7 @@ prompt_docker_machine() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# GO prompt
|
||||
prompt_go_version() {
|
||||
local go_version
|
||||
|
@ -861,15 +892,17 @@ prompt_go_version() {
|
|||
go_path=$(go env GOPATH 2>/dev/null)
|
||||
|
||||
if [[ -n "$go_version" && "${PWD##$go_path}" != "$PWD" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "green" "255" "$go_version" "GO_ICON"
|
||||
"$1_prompt_segment" "$0" "$2" "green" "grey93" "$go_version" "GO_ICON"
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Command number (in local history)
|
||||
prompt_history() {
|
||||
"$1_prompt_segment" "$0" "$2" "244" "$DEFAULT_COLOR" '%h'
|
||||
"$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" '%h'
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Detection for virtualization (systemd based systems only)
|
||||
prompt_detect_virt() {
|
||||
if ! command -v systemd-detect-virt > /dev/null; then
|
||||
|
@ -888,7 +921,8 @@ prompt_detect_virt() {
|
|||
fi
|
||||
}
|
||||
|
||||
|
||||
################################################################
|
||||
# Test icons
|
||||
prompt_icons_test() {
|
||||
for key in ${(@k)icons}; do
|
||||
# The lower color spectrum in ZSH makes big steps. Choosing
|
||||
|
@ -899,6 +933,8 @@ prompt_icons_test() {
|
|||
done
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to display the current IP address
|
||||
prompt_ip() {
|
||||
if [[ "$OS" == "OSX" ]]; then
|
||||
if defined POWERLEVEL9K_IP_INTERFACE; then
|
||||
|
@ -929,6 +965,8 @@ prompt_ip() {
|
|||
"$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'NETWORK_ICON'
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to display if VPN is active
|
||||
set_default POWERLEVEL9K_VPN_IP_INTERFACE "tun"
|
||||
# prompt if vpn active
|
||||
prompt_vpn_ip() {
|
||||
|
@ -939,6 +977,8 @@ prompt_vpn_ip() {
|
|||
done
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to display load
|
||||
set_default POWERLEVEL9K_LOAD_WHICH 5
|
||||
prompt_load() {
|
||||
# The load segment can have three different states
|
||||
|
@ -994,8 +1034,8 @@ prompt_load() {
|
|||
"$1_prompt_segment" "${0}_${current_state}" "$2" "${load_states[$current_state]}" "$DEFAULT_COLOR" "$load_avg" 'LOAD_ICON'
|
||||
}
|
||||
|
||||
|
||||
# Node version
|
||||
################################################################
|
||||
# Segment to diplay Node version
|
||||
prompt_node_version() {
|
||||
local node_version=$(node -v 2>/dev/null)
|
||||
[[ -z "${node_version}" ]] && return
|
||||
|
@ -1003,7 +1043,8 @@ prompt_node_version() {
|
|||
"$1_prompt_segment" "$0" "$2" "green" "white" "${node_version:1}" 'NODE_ICON'
|
||||
}
|
||||
|
||||
# Node version from NVM
|
||||
################################################################
|
||||
# Segment to display Node version from NVM
|
||||
# Only prints the segment if different than the default value
|
||||
prompt_nvm() {
|
||||
local node_version nvm_default
|
||||
|
@ -1018,7 +1059,8 @@ prompt_nvm() {
|
|||
$1_prompt_segment "$0" "$2" "magenta" "black" "${node_version:1}" 'NODE_ICON'
|
||||
}
|
||||
|
||||
# NodeEnv Prompt
|
||||
################################################################
|
||||
# Segment to display NodeEnv
|
||||
prompt_nodeenv() {
|
||||
local nodeenv_path="$NODE_VIRTUAL_ENV"
|
||||
if [[ -n "$nodeenv_path" && "$NODE_VIRTUAL_ENV_DISABLE_PROMPT" != true ]]; then
|
||||
|
@ -1027,22 +1069,25 @@ prompt_nodeenv() {
|
|||
fi
|
||||
}
|
||||
|
||||
# print a little OS icon
|
||||
################################################################
|
||||
# Segment to print a little OS icon
|
||||
prompt_os_icon() {
|
||||
"$1_prompt_segment" "$0" "$2" "black" "255" "$OS_ICON"
|
||||
"$1_prompt_segment" "$0" "$2" "black" "white" "$OS_ICON"
|
||||
}
|
||||
|
||||
# print PHP version number
|
||||
################################################################
|
||||
# Segment to display PHP version number
|
||||
prompt_php_version() {
|
||||
local php_version
|
||||
php_version=$(php -v 2>&1 | grep -oe "^PHP\s*[0-9.]*")
|
||||
|
||||
if [[ -n "$php_version" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "013" "255" "$php_version"
|
||||
"$1_prompt_segment" "$0" "$2" "fuchsia" "grey93" "$php_version"
|
||||
fi
|
||||
}
|
||||
|
||||
# Show free RAM and used Swap
|
||||
################################################################
|
||||
# Segment to display free RAM and used Swap
|
||||
prompt_ram() {
|
||||
local base=''
|
||||
local ramfree=0
|
||||
|
@ -1065,22 +1110,24 @@ prompt_ram() {
|
|||
"$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "$(printSizeHumanReadable "$ramfree" $base)" 'RAM_ICON'
|
||||
}
|
||||
|
||||
# rbenv information
|
||||
################################################################
|
||||
# Segment to display rbenv information
|
||||
set_default POWERLEVEL9K_RBENV_ALWAYS false
|
||||
prompt_rbenv() {
|
||||
if which rbenv 2>/dev/null >&2; then
|
||||
local rbenv_version_name="$(rbenv version-name)"
|
||||
local rbenv_global="$(rbenv global)"
|
||||
|
||||
# Don't show anything if the current Ruby is the same as the global Ruby.
|
||||
if [[ $rbenv_version_name == $rbenv_global ]]; then
|
||||
return
|
||||
# Don't show anything if the current Ruby is the same as the global Ruby
|
||||
# unless `POWERLEVEL9K_RBENV_ALWAYS` is set.
|
||||
if [[ $POWERLEVEL9K_RBENV_ALWAYS == true || $rbenv_version_name != $rbenv_global ]];then
|
||||
"$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON'
|
||||
fi
|
||||
|
||||
"$1_prompt_segment" "$0" "$2" "red" "$DEFAULT_COLOR" "$rbenv_version_name" 'RUBY_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
# chruby information
|
||||
################################################################
|
||||
# Segment to display chruby information
|
||||
# see https://github.com/postmodern/chruby/issues/245 for chruby_auto issue with ZSH
|
||||
prompt_chruby() {
|
||||
local chruby_env
|
||||
|
@ -1091,23 +1138,27 @@ prompt_chruby() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Print an icon if user is root.
|
||||
################################################################
|
||||
# Segment to print an icon if user is root.
|
||||
prompt_root_indicator() {
|
||||
if [[ "$UID" -eq 0 ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "" 'ROOT_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
# Print Rust version number
|
||||
################################################################
|
||||
# Segment to display Rust version number
|
||||
prompt_rust_version() {
|
||||
local rust_version
|
||||
rust_version=$(rustc --version 2>&1 | grep -oe "^rustc\s*[^ ]*" | grep -o '[0-9.a-z\\\-]*$')
|
||||
|
||||
if [[ -n "$rust_version" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "208" "$DEFAULT_COLOR" "Rust $rust_version" 'RUST_ICON'
|
||||
"$1_prompt_segment" "$0" "$2" "darkorange" "$DEFAULT_COLOR" "Rust $rust_version" 'RUST_ICON'
|
||||
fi
|
||||
}
|
||||
# RSpec test ratio
|
||||
|
||||
################################################################
|
||||
# Segment to display RSpec test ratio
|
||||
prompt_rspec_stats() {
|
||||
if [[ (-d app && -d spec) ]]; then
|
||||
local code_amount tests_amount
|
||||
|
@ -1118,21 +1169,25 @@ prompt_rspec_stats() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Ruby Version Manager information
|
||||
################################################################
|
||||
# Segment to display Ruby Version Manager information
|
||||
prompt_rvm() {
|
||||
local version_and_gemset=${rvm_env_string/ruby-}
|
||||
|
||||
if [[ -n "$version_and_gemset" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "240" "$DEFAULT_COLOR" "$version_and_gemset" 'RUBY_ICON'
|
||||
"$1_prompt_segment" "$0" "$2" "grey35" "$DEFAULT_COLOR" "$version_and_gemset" 'RUBY_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to display SSH icon when connected
|
||||
prompt_ssh() {
|
||||
if [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_TTY" ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR" "yellow" "" 'SSH_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Status: When an error occur, return the error code, or a cross icon if option is set
|
||||
# Display an ok icon when no error occur, or hide the segment if option is set to false
|
||||
#
|
||||
|
@ -1153,7 +1208,7 @@ exit_code_or_status() {
|
|||
else
|
||||
local sig=$(( ec - 128 ))
|
||||
local idx=$(( sig + 1 ))
|
||||
echo "${signals[$idx]}(-${sig})"
|
||||
echo "SIG${signals[$idx]}(${sig})"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -1179,7 +1234,7 @@ prompt_status() {
|
|||
|
||||
if (( ec_sum > 0 )); then
|
||||
if [[ "$POWERLEVEL9K_STATUS_CROSS" == false && "$POWERLEVEL9K_STATUS_VERBOSE" == true ]]; then
|
||||
"$1_prompt_segment" "$0_ERROR" "$2" "red" "226" "$ec_text" 'CARRIAGE_RETURN_ICON'
|
||||
"$1_prompt_segment" "$0_ERROR" "$2" "red" "yellow1" "$ec_text" 'CARRIAGE_RETURN_ICON'
|
||||
else
|
||||
"$1_prompt_segment" "$0_ERROR" "$2" "$DEFAULT_COLOR" "red" "" 'FAIL_ICON'
|
||||
fi
|
||||
|
@ -1188,6 +1243,8 @@ prompt_status() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to display Swap information
|
||||
prompt_swap() {
|
||||
local swap_used=0
|
||||
local base=''
|
||||
|
@ -1212,6 +1269,7 @@ prompt_swap() {
|
|||
"$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "$(printSizeHumanReadable "$swap_used" $base)" 'SWAP_ICON'
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Symfony2-PHPUnit test ratio
|
||||
prompt_symfony2_tests() {
|
||||
if [[ (-d src && -d app && -f app/AppKernel.php) ]]; then
|
||||
|
@ -1223,15 +1281,17 @@ prompt_symfony2_tests() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Symfony2-Version
|
||||
################################################################
|
||||
# Segment to display Symfony2-Version
|
||||
prompt_symfony2_version() {
|
||||
if [[ -f app/bootstrap.php.cache ]]; then
|
||||
local symfony2_version
|
||||
symfony2_version=$(grep " VERSION " app/bootstrap.php.cache | sed -e 's/[^.0-9]*//g')
|
||||
"$1_prompt_segment" "$0" "$2" "240" "$DEFAULT_COLOR" "$symfony2_version" 'SYMFONY_ICON'
|
||||
"$1_prompt_segment" "$0" "$2" "grey35" "$DEFAULT_COLOR" "$symfony2_version" 'SYMFONY_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Show a ratio of tests vs code
|
||||
build_test_stats() {
|
||||
local code_amount="$4"
|
||||
|
@ -1247,26 +1307,34 @@ build_test_stats() {
|
|||
(( ratio < 50 )) && "$1_prompt_segment" "$2_BAD" "$3" "red" "$DEFAULT_COLOR" "$headline: $ratio%%" "$6"
|
||||
}
|
||||
|
||||
################################################################
|
||||
# System time
|
||||
prompt_time() {
|
||||
local time_format="%D{%H:%M:%S}"
|
||||
if [[ -n "$POWERLEVEL9K_TIME_FORMAT" ]]; then
|
||||
time_format="$POWERLEVEL9K_TIME_FORMAT"
|
||||
fi
|
||||
set_default POWERLEVEL9K_TIME_FORMAT "%D{%H:%M:%S}"
|
||||
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$time_format"
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$POWERLEVEL9K_TIME_FORMAT" "TIME_ICON"
|
||||
}
|
||||
|
||||
################################################################
|
||||
# System date
|
||||
prompt_date() {
|
||||
set_default POWERLEVEL9K_DATE_FORMAT "%D{%d.%m.%y}"
|
||||
|
||||
"$1_prompt_segment" "$0" "$2" "$DEFAULT_COLOR_INVERTED" "$DEFAULT_COLOR" "$POWERLEVEL9K_DATE_FORMAT" "DATE_ICON"
|
||||
}
|
||||
|
||||
################################################################
|
||||
# todo.sh: shows the number of tasks in your todo.sh file
|
||||
prompt_todo() {
|
||||
if $(hash todo.sh 2>&-); then
|
||||
count=$(todo.sh ls | egrep "TODO: [0-9]+ of ([0-9]+) tasks shown" | awk '{ print $4 }')
|
||||
if [[ "$count" = <-> ]]; then
|
||||
"$1_prompt_segment" "$0" "$2" "244" "$DEFAULT_COLOR" "$count" 'TODO_ICON'
|
||||
"$1_prompt_segment" "$0" "$2" "grey50" "$DEFAULT_COLOR" "$count" 'TODO_ICON'
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# VCS segment: shows the state of your repository, if you are in a folder under
|
||||
# version control
|
||||
set_default POWERLEVEL9K_VCS_ACTIONFORMAT_FOREGROUND "red"
|
||||
|
@ -1332,6 +1400,8 @@ powerlevel9k_vcs_init() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to show VCS information
|
||||
prompt_vcs() {
|
||||
VCS_WORKDIR_DIRTY=false
|
||||
VCS_WORKDIR_HALF_DIRTY=false
|
||||
|
@ -1357,6 +1427,7 @@ prompt_vcs() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Vi Mode: show editing mode (NORMAL|INSERT)
|
||||
set_default POWERLEVEL9K_VI_INSERT_MODE_STRING "INSERT"
|
||||
set_default POWERLEVEL9K_VI_COMMAND_MODE_STRING "NORMAL"
|
||||
|
@ -1372,6 +1443,7 @@ prompt_vi_mode() {
|
|||
esac
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Virtualenv: current working virtualenv
|
||||
# More information on virtualenv (Python):
|
||||
# https://virtualenv.pypa.io/en/latest/
|
||||
|
@ -1382,6 +1454,7 @@ prompt_virtualenv() {
|
|||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# pyenv: current active python version (with restrictions)
|
||||
# https://github.com/pyenv/pyenv#choosing-the-python-version
|
||||
prompt_pyenv() {
|
||||
|
@ -1390,7 +1463,20 @@ prompt_pyenv() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Swift version
|
||||
################################################################
|
||||
# Display openfoam information
|
||||
prompt_openfoam() {
|
||||
local wm_project_version="$WM_PROJECT_VERSION"
|
||||
local wm_fork="$WM_FORK"
|
||||
if [[ -n "$wm_project_version" ]] && [[ -z "$wm_fork" ]] ; then
|
||||
"$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "OF: $(basename "$wm_project_version")"
|
||||
elif [[ -n "$wm_project_version" ]] && [[ -n "$wm_fork" ]] ; then
|
||||
"$1_prompt_segment" "$0" "$2" "yellow" "$DEFAULT_COLOR" "F-X: $(basename "$wm_project_version")"
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Segment to display Swift version
|
||||
prompt_swift_version() {
|
||||
# Get the first number as this is probably the "main" version number..
|
||||
local swift_version=$(swift --version 2>/dev/null | grep -o -E "[0-9.]+" | head -n 1)
|
||||
|
@ -1399,41 +1485,58 @@ prompt_swift_version() {
|
|||
"$1_prompt_segment" "$0" "$2" "magenta" "white" "${swift_version}" 'SWIFT_ICON'
|
||||
}
|
||||
|
||||
################################################################
|
||||
# dir_writable: Display information about the user's permission to write in the current directory
|
||||
prompt_dir_writable() {
|
||||
if [[ ! -w "$PWD" ]]; then
|
||||
"$1_prompt_segment" "$0_FORBIDDEN" "$2" "red" "226" "" 'LOCK_ICON'
|
||||
"$1_prompt_segment" "$0_FORBIDDEN" "$2" "red" "yellow1" "" 'LOCK_ICON'
|
||||
fi
|
||||
}
|
||||
|
||||
# Kubernetes Current Context
|
||||
################################################################
|
||||
# Kubernetes Current Context/Namespace
|
||||
prompt_kubecontext() {
|
||||
local kubectl_version="$(kubectl version --client 2>/dev/null)"
|
||||
|
||||
if [[ -n "$kubectl_version" ]]; then
|
||||
# Get the current Kubernetes config context's namespaece
|
||||
local k8s_namespace=$(kubectl config get-contexts --no-headers | grep '*' | awk '{print $5}')
|
||||
# Get the current Kuberenetes context
|
||||
local k8s_context=$(kubectl config current-context)
|
||||
|
||||
if [[ -z "$k8s_namespace" ]]; then
|
||||
k8s_namespace="default"
|
||||
local cur_ctx=$(kubectl config view -o=jsonpath='{.current-context}')
|
||||
cur_namespace="$(kubectl config view -o=jsonpath="{.contexts[?(@.name==\"${cur_ctx}\")].context.namespace}")"
|
||||
# If the namespace comes back empty set it default.
|
||||
if [[ -z "${cur_namespace}" ]]; then
|
||||
cur_namespace="default"
|
||||
fi
|
||||
|
||||
local k8s_final_text=""
|
||||
|
||||
if [[ "$k8s_context" == "k8s_namespace" ]]; then
|
||||
if [[ "$cur_ctx" == "cur_namespace" ]]; then
|
||||
# No reason to print out the same identificator twice
|
||||
k8s_final_text="$k8s_context"
|
||||
k8s_final_text="$cur_ctx"
|
||||
else
|
||||
k8s_final_text="$k8s_context/$k8s_namespace"
|
||||
k8s_final_text="$cur_ctx/$cur_namespace"
|
||||
fi
|
||||
|
||||
|
||||
"$1_prompt_segment" "$0" "$2" "magenta" "white" "$k8s_final_text" "KUBERNETES_ICON"
|
||||
fi
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Dropbox status
|
||||
prompt_dropbox() {
|
||||
# The first column is just the directory, so cut it
|
||||
local dropbox_status="$(dropbox-cli filestatus . | cut -d\ -f2-)"
|
||||
|
||||
# Only show if the folder is tracked and dropbox is running
|
||||
if [[ "$dropbox_status" != 'unwatched' && "$dropbox_status" != "isn't running!" ]]; then
|
||||
# If "up to date", only show the icon
|
||||
if [[ "$dropbox_status" =~ 'up to date' ]]; then
|
||||
dropbox_status=""
|
||||
fi
|
||||
|
||||
"$1_prompt_segment" "$0" "$2" "white" "blue" "$dropbox_status" "DROPBOX_ICON"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
################################################################
|
||||
# Prompt processing and drawing
|
||||
|
@ -1523,11 +1626,15 @@ NEWLINE='
|
|||
[[ $POWERLEVEL9K_PROMPT_ADD_NEWLINE == true ]] && PROMPT="$NEWLINE$PROMPT"
|
||||
}
|
||||
|
||||
|
||||
zle-keymap-select () {
|
||||
zle reset-prompt
|
||||
zle -R
|
||||
}
|
||||
|
||||
set_default POWERLEVEL9K_IGNORE_TERM_COLORS false
|
||||
set_default POWERLEVEL9K_IGNORE_TERM_LANG false
|
||||
|
||||
prompt_powerlevel9k_setup() {
|
||||
# The value below was set to better support 32-bit CPUs.
|
||||
# It's the maximum _signed_ integer value on 32-bit CPUs.
|
||||
|
@ -1547,23 +1654,18 @@ prompt_powerlevel9k_setup() {
|
|||
setopt noprompt{bang,cr,percent,sp,subst} "prompt${^prompt_opts[@]}"
|
||||
|
||||
# Display a warning if the terminal does not support 256 colors
|
||||
local term_colors
|
||||
term_colors=$(echotc Co 2>/dev/null)
|
||||
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
|
||||
termColors
|
||||
|
||||
# If the terminal `LANG` is set to `C`, this theme will not work at all.
|
||||
local term_lang
|
||||
term_lang=$(echo $LANG)
|
||||
if [[ $term_lang == 'C' ]]; then
|
||||
print -P "\t%F{red}WARNING!%f Your terminal's 'LANG' is set to 'C', which breaks this theme!"
|
||||
print -P "\t%F{red}WARNING!%f Please set your 'LANG' to a UTF-8 language, like 'en_US.UTF-8'"
|
||||
print -P "\t%F{red}WARNING!%f _before_ loading this theme in your \~\.zshrc. Putting"
|
||||
print -P "\t%F{red}WARNING!%f %F{blue}export LANG=\"en_US.UTF-8\"%f at the top of your \~\/.zshrc is sufficient."
|
||||
if [[ $POWERLEVEL9K_IGNORE_TERM_LANG == false ]]; then
|
||||
local term_lang
|
||||
term_lang=$(echo $LANG)
|
||||
if [[ $term_lang == 'C' ]]; then
|
||||
print -P "\t%F{red}WARNING!%f Your terminal's 'LANG' is set to 'C', which breaks this theme!"
|
||||
print -P "\t%F{red}WARNING!%f Please set your 'LANG' to a UTF-8 language, like 'en_US.UTF-8'"
|
||||
print -P "\t%F{red}WARNING!%f _before_ loading this theme in your \~\.zshrc. Putting"
|
||||
print -P "\t%F{red}WARNING!%f %F{blue}export LANG=\"en_US.UTF-8\"%f at the top of your \~\/.zshrc is sufficient."
|
||||
fi
|
||||
fi
|
||||
|
||||
defined POWERLEVEL9K_LEFT_PROMPT_ELEMENTS || POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
|
||||
|
|
|
@ -28,7 +28,7 @@ function testCommandExecutionTimeThresholdCouldBeChanged() {
|
|||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=1
|
||||
_P9K_COMMAND_DURATION=2.03
|
||||
|
||||
assertEquals "%K{red} %F{226%}Dur%f %F{226}2.03 %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}2.03 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
|
@ -40,7 +40,7 @@ function testCommandExecutionTimeThresholdCouldBeSetToZero() {
|
|||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=0
|
||||
_P9K_COMMAND_DURATION=0.03
|
||||
|
||||
assertEquals "%K{red} %F{226%}Dur%f %F{226}0.03 %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}0.03 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
|
@ -53,7 +53,7 @@ function testCommandExecutionTimePrecisionCouldBeChanged() {
|
|||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=4
|
||||
_P9K_COMMAND_DURATION=0.0001
|
||||
|
||||
assertEquals "%K{red} %F{226%}Dur%f %F{226}0.0001 %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}0.0001 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
|
@ -66,7 +66,7 @@ function testCommandExecutionTimePrecisionCouldBeSetToZero() {
|
|||
POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
|
||||
_P9K_COMMAND_DURATION=23.5001
|
||||
|
||||
assertEquals "%K{red} %F{226%}Dur%f %F{226}23 %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}23 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
|
@ -77,7 +77,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForMinuteLongCommand()
|
|||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
_P9K_COMMAND_DURATION=180
|
||||
|
||||
assertEquals "%K{red} %F{226%}Dur%f %F{226}03:00 %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}03:00 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
|
@ -87,7 +87,7 @@ function testCommandExecutionTimeIsFormattedHumandReadbleForHourLongCommand() {
|
|||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(command_execution_time)
|
||||
_P9K_COMMAND_DURATION=7200
|
||||
|
||||
assertEquals "%K{red} %F{226%}Dur%f %F{226}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{red} %F{yellow1%}Dur%f %F{yellow1}02:00:00 %k%F{red}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unset _P9K_COMMAND_DURATION
|
||||
|
|
|
@ -40,7 +40,7 @@ function testGo() {
|
|||
|
||||
PWD="$HOME/go/src/github.com/bhilburn/powerlevel9k"
|
||||
|
||||
assertEquals "%K{green} %F{255%}%f %F{255}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{green} %F{grey93%}%f %F{grey93}go1.5.3 %k%F{green}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_GO_ICON
|
||||
unset PWD
|
||||
|
|
|
@ -18,11 +18,19 @@ function mockKubectl() {
|
|||
;;
|
||||
'config')
|
||||
case "$2" in
|
||||
'current-context')
|
||||
echo 'minikube'
|
||||
;;
|
||||
'get-contexts')
|
||||
echo '* minikube minikube minikube '
|
||||
'view')
|
||||
case "$3" in
|
||||
'-o=jsonpath={.current-context}')
|
||||
echo 'minikube'
|
||||
;;
|
||||
'-o=jsonpath={.contexts'*)
|
||||
echo ''
|
||||
;;
|
||||
*)
|
||||
echo "Mock value missed"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
@ -36,11 +44,21 @@ function mockKubectlOtherNamespace() {
|
|||
;;
|
||||
'config')
|
||||
case "$2" in
|
||||
'current-context')
|
||||
echo 'minikube'
|
||||
;;
|
||||
'get-contexts')
|
||||
echo '* minikube minikube minikube kube-system'
|
||||
'view')
|
||||
case "$3" in
|
||||
# Get Current Context
|
||||
'-o=jsonpath={.current-context}')
|
||||
echo 'minikube'
|
||||
;;
|
||||
# Get current namespace
|
||||
'-o=jsonpath={.contexts'*)
|
||||
echo 'kube-system'
|
||||
;;
|
||||
*)
|
||||
echo "Mock value missed"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
|
|
@ -19,7 +19,7 @@ function testRust() {
|
|||
alias rustc=mockRust
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(rust_version)
|
||||
|
||||
assertEquals "%K{208} %F{black}Rust 0.4.1a-alpha %k%F{208}%f " "$(build_left_prompt)"
|
||||
assertEquals "%K{208} %F{black}Rust 0.4.1a-alpha %k%F{darkorange}%f " "$(build_left_prompt)"
|
||||
|
||||
unset POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
|
||||
unalias rustc
|
||||
|
|
Loading…
Reference in a new issue