summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hilburn <bhilburn@gmail.com>2016-12-06 02:30:47 +0300
committerGitHub <noreply@github.com>2016-12-06 02:30:47 +0300
commitffade7bb6db4d0e13ce0aaf07f016f8cdba71070 (patch)
tree46f82508dfe4728bf012d9978bb7719af8aa8654
parentafa256f5b32babbd72ae70e888919eb801963873 (diff)
parent202ab1500727e4f37545eaff849d4f9a52b823c4 (diff)
Merge pull request #346 from dritter/configurable_path_separators
Configurable path separators
-rw-r--r--CHANGELOG.md8
-rw-r--r--README.md84
-rwxr-xr-xpowerlevel9k.zsh-theme19
3 files changed, 67 insertions, 44 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 8cdf7be2..dc98b7d8 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:
@@ -198,28 +198,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)
@@ -253,11 +253,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:
@@ -269,11 +269,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.
@@ -288,6 +288,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
@@ -337,16 +343,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/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme
index da3639e1..c4b24b55 100755
--- a/powerlevel9k.zsh-theme
+++ b/powerlevel9k.zsh-theme
@@ -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