summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md8
-rw-r--r--README.md87
-rw-r--r--functions/vcs.zsh2
-rwxr-xr-xpowerlevel9k.zsh-theme32
4 files changed, 76 insertions, 53 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7a3f7444..91a897ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## next
+
+### `dir` changes
+
+Added an option to configure the path separator. If you want something
+else than an ordinary slash, you could set
+`POWERLEVEL9K_DIR_PATH_SEPARATOR` to whatever you want.
+
## v0.4.0
### Development changes
diff --git a/README.md b/README.md
index b6769354..73dcb7df 100644
--- a/README.md
+++ b/README.md
@@ -76,10 +76,10 @@ variables to your `~/.zshrc`.
So if you wanted to set these variables manually, you would put the following in
your `~/.zshrc`:
-
- POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
- POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
-
+```zsh
+POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
+POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
+```
#### Available Prompt Segments
The segments that are currently available are:
@@ -200,28 +200,28 @@ The `custom_...` segment allows you to turn the output of a custom command into
a prompt segment. As an example, if you wanted to create a custom segment to
display your WiFi signal strength, you might define a custom segment called
`custom_wifi_signal` like this:
-
- POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal)
- POWERLEVEL9K_CUSTOM_WIFI_SIGNAL="echo signal: \$(nmcli device wifi | grep yes | awk '{print \$8}')"
- POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_BACKGROUND="blue"
- POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_FOREGROUND="yellow"
-
+```zsh
+POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal)
+POWERLEVEL9K_CUSTOM_WIFI_SIGNAL="echo signal: \$(nmcli device wifi | grep yes | awk '{print \$8}')"
+POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_BACKGROUND="blue"
+POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_FOREGROUND="yellow"
+```
If you prefer, you can also define the function in your `.zshrc` rather than
putting it in-line with the variable export, as shown above. Just don't forget
to invoke your function from your segment! Example code that achieves the same
result as the above:
+```zsh
+zsh_wifi_signal(){
+ local signal=$(nmcli device wifi | grep yes | awk '{print $8}')
+ local color='%F{yellow}'
+ [[ $signal -gt 75 ]] && color='%F{green}'
+ [[ $signal -lt 50 ]] && color='%F{red}'
+ echo -n "%{$color%}\uf230 $signal%{%f%}" # \uf230 is 
+}
- zsh_wifi_signal(){
- local signal=$(nmcli device wifi | grep yes | awk '{print $8}')
- local color='%F{yellow}'
- [[ $signal -gt 75 ]] && color='%F{green}'
- [[ $signal -lt 50 ]] && color='%F{red}'
- echo -n "%{$color%}\uf230 $signal%{%f%}" # \uf230 is 
- }
-
- POWERLEVEL9K_CUSTOM_WIFI_SIGNAL="zsh_wifi_signal"
- POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal)
-
+POWERLEVEL9K_CUSTOM_WIFI_SIGNAL="zsh_wifi_signal"
+POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal)
+```
The command, above, gives you the wireless signal segment shown below:
![signal](http://i.imgur.com/hviMATC.png)
@@ -255,11 +255,11 @@ Powerline" fonts, there are additional glyphs, as well:
| None | None | ![](https://cloud.githubusercontent.com/assets/1544760/12183452/40f79286-b58f-11e5-9b8c-ed1343a07b08.png) | Outside of your home folder |
To turn off these icons you could set these variables to an empty string.
-
- POWERLEVEL9K_HOME_ICON=''
- POWERLEVEL9K_HOME_SUB_ICON=''
- POWERLEVEL9K_FOLDER_ICON=''
-
+```zsh
+POWERLEVEL9K_HOME_ICON=''
+POWERLEVEL9K_HOME_SUB_ICON=''
+POWERLEVEL9K_FOLDER_ICON=''
+```
You can limit the output to a certain length by truncating long paths.
Customizations available are:
@@ -271,11 +271,11 @@ Customizations available are:
For example, if you wanted the truncation behavior of the `fish` shell, which
truncates `/usr/share/plasma` to `/u/s/plasma`, you would use the following:
-
- POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
- POWERLEVEL9K_SHORTEN_DELIMITER=""
- POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
-
+```zsh
+POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
+POWERLEVEL9K_SHORTEN_DELIMITER=""
+POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
+```
In each case you have to specify the length you want to shorten the directory
to. So in some cases `POWERLEVEL9K_SHORTEN_DIR_LENGTH` means characters, in
others whole directories.
@@ -290,6 +290,12 @@ 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.
+If you want to customize the directory separator, you could set:
+```zsh
+# You'll need patched awesome-terminal fonts for that example
+POWERLEVEL9K_DIR_PATH_SEPARATOR="%f "$'\uE0B1'" %F"
+```
+
##### ip
This segment tries to examine all currently used network interfaces and prints
@@ -319,7 +325,8 @@ This segment shows the return code of the last command.
| Variable | Default Value | Description |
|----------|---------------|-------------|
-|`POWERLEVEL9K_STATUS_VERBOSE`|`true`|Set to false if you wish to hide this segment when the last command completed successfully.|
+|`POWERLEVEL9K_STATUS_VERBOSE`|`true`|Set to false if you wish to not show the error code when the last command returned an error and optionally hide this segment when the last command completed successfully by setting `POWERLEVEL9K_STATUS_OK_IN_NON_VERBOSE` to false.|
+|`POWERLEVEL9K_STATUS_OK_IN_NON_VERBOSE`|`false`|Set to true if you wish to show this segment when the last command completed successfully in non-verbose mode.|
##### ram
@@ -338,16 +345,16 @@ See [Unit Test Ratios](#unit-test-ratios), below.
|`POWERLEVEL9K_TIME_FORMAT`|`'H:M:S'`|ZSH time format to use in this segment.|
As an example, if you wanted a reversed time format, you would use this:
-
- # Reversed time format
- POWERLEVEL9K_TIME_FORMAT='%D{%S:%M:%H}'
-
+```zsh
+# Reversed time format
+POWERLEVEL9K_TIME_FORMAT='%D{%S:%M:%H}'
+```
If you are using an "Awesome Powerline Font", you can add a time symbol to this
segment, as well:
-
- # Output time, date, and a symbol from the "Awesome Powerline Font" set
- POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S \uE868 %d.%m.%y}"
-
+```zsh
+# Output time, date, and a symbol from the "Awesome Powerline Font" set
+POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S \uE868 %d.%m.%y}"
+```
##### vcs
By default, the `vcs` segment will provide quite a bit of information. Further
diff --git a/functions/vcs.zsh b/functions/vcs.zsh
index a0aa2b6c..93925f15 100644
--- a/functions/vcs.zsh
+++ b/functions/vcs.zsh
@@ -62,7 +62,7 @@ function +vi-git-remotebranch() {
set_default POWERLEVEL9K_VCS_HIDE_TAGS false
function +vi-git-tagname() {
- if [[ "$POWERLEVE9K_VCS_HIDE_TAGS" == "false" ]]; then
+ if [[ "$POWERLEVEL9K_VCS_HIDE_TAGS" == "false" ]]; then
# If we are on a tag, append the tagname to the current branch string.
local tag
tag=$(git describe --tags --exact-match HEAD 2>/dev/null)
diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme
index 64662144..d574e3b5 100755
--- a/powerlevel9k.zsh-theme
+++ b/powerlevel9k.zsh-theme
@@ -409,7 +409,7 @@ prompt_battery() {
local time_remaining=$(acpi | awk '{ print $5 }')
if [[ $time_remaining =~ rate ]]; then
local tstring="..."
- elif [[ $time_remaining =~ "[:digit:]+" ]]; then
+ elif [[ $time_remaining =~ "[[:digit:]]+" ]]; then
local tstring=${(f)$(date -u -d "$(echo $time_remaining)" +%k:%M)}
fi
fi
@@ -456,6 +456,7 @@ prompt_custom() {
}
# Dir: current working directory
+set_default POWERLEVEL9K_DIR_PATH_SEPARATOR "/"
prompt_dir() {
local current_path='%~'
if [[ -n "$POWERLEVEL9K_SHORTEN_DIR_LENGTH" ]]; then
@@ -501,17 +502,25 @@ prompt_dir() {
current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:$POWERLEVEL9K_SHORTEN_DELIMITER/:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c"
;;
esac
+ fi
+ if [[ "${POWERLEVEL9K_DIR_PATH_SEPARATOR}" != "/" ]]; then
+ current_path=$(print -P "${current_path}" | sed "s/\//${POWERLEVEL9K_DIR_PATH_SEPARATOR}/g")
fi
- local current_icon=''
+ typeset -AH dir_states
+ dir_states=(
+ "DEFAULT" "FOLDER_ICON"
+ "HOME" "HOME_ICON"
+ "HOME_SUBFOLDER" "HOME_SUB_ICON"
+ )
+ local current_state="DEFAULT"
if [[ $(print -P "%~") == '~' ]]; then
- "$1_prompt_segment" "$0_HOME" "$2" "blue" "$DEFAULT_COLOR" "$current_path" 'HOME_ICON'
+ current_state="HOME"
elif [[ $(print -P "%~") == '~'* ]]; then
- "$1_prompt_segment" "$0_HOME_SUBFOLDER" "$2" "blue" "$DEFAULT_COLOR" "$current_path" 'HOME_SUB_ICON'
- else
- "$1_prompt_segment" "$0_DEFAULT" "$2" "blue" "$DEFAULT_COLOR" "$current_path" 'FOLDER_ICON'
+ current_state="HOME_SUBFOLDER"
fi
+ "$1_prompt_segment" "$0_${current_state}" "$2" "blue" "$DEFAULT_COLOR" "${current_path}" "${dir_states[$current_state]}"
}
# Docker machine
@@ -748,17 +757,16 @@ prompt_rvm() {
# Status: return code if verbose, otherwise just an icon if an error occurred
set_default POWERLEVEL9K_STATUS_VERBOSE true
+set_default POWERLEVEL9K_STATUS_OK_IN_NON_VERBOSE false
prompt_status() {
- if [[ "$POWERLEVEL9K_STATUS_VERBOSE" == true ]]; then
- if [[ "$RETVAL" -ne 0 ]]; then
+ if [[ "$RETVAL" -ne 0 ]]; then
+ if [[ "$POWERLEVEL9K_STATUS_VERBOSE" == true ]]; then
"$1_prompt_segment" "$0_ERROR" "$2" "red" "226" "$RETVAL" 'CARRIAGE_RETURN_ICON'
else
- "$1_prompt_segment" "$0_OK" "$2" "$DEFAULT_COLOR" "046" "" 'OK_ICON'
- fi
- else
- if [[ "$RETVAL" -ne 0 ]]; then
"$1_prompt_segment" "$0_ERROR" "$2" "$DEFAULT_COLOR" "red" "" 'FAIL_ICON'
fi
+ elif [[ "$POWERLEVEL9K_STATUS_VERBOSE" == true || "$POWERLEVEL9K_STATUS_OK_IN_NON_VERBOSE" == true ]]; then
+ "$1_prompt_segment" "$0_OK" "$2" "$DEFAULT_COLOR" "046" "" 'OK_ICON'
fi
}