mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-12-19 05:51:57 +00:00
Merge pull request #346 from dritter/configurable_path_separators
Configurable path separators
This commit is contained in:
commit
ffade7bb6d
3 changed files with 68 additions and 45 deletions
|
@ -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
|
## v0.4.0
|
||||||
|
|
||||||
### Development changes
|
### Development changes
|
||||||
|
|
74
README.md
74
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
|
So if you wanted to set these variables manually, you would put the following in
|
||||||
your `~/.zshrc`:
|
your `~/.zshrc`:
|
||||||
|
```zsh
|
||||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
|
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir rbenv vcs)
|
||||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
|
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status history time)
|
||||||
|
```
|
||||||
#### Available Prompt Segments
|
#### Available Prompt Segments
|
||||||
The segments that are currently available are:
|
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
|
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
|
display your WiFi signal strength, you might define a custom segment called
|
||||||
`custom_wifi_signal` like this:
|
`custom_wifi_signal` like this:
|
||||||
|
```zsh
|
||||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context time battery dir vcs virtualenv custom_wifi_signal)
|
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="echo signal: \$(nmcli device wifi | grep yes | awk '{print \$8}')"
|
||||||
POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_BACKGROUND="blue"
|
POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_BACKGROUND="blue"
|
||||||
POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_FOREGROUND="yellow"
|
POWERLEVEL9K_CUSTOM_WIFI_SIGNAL_FOREGROUND="yellow"
|
||||||
|
```
|
||||||
If you prefer, you can also define the function in your `.zshrc` rather than
|
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
|
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
|
to invoke your function from your segment! Example code that achieves the same
|
||||||
result as the above:
|
result as the above:
|
||||||
|
```zsh
|
||||||
zsh_wifi_signal(){
|
zsh_wifi_signal(){
|
||||||
local signal=$(nmcli device wifi | grep yes | awk '{print $8}')
|
local signal=$(nmcli device wifi | grep yes | awk '{print $8}')
|
||||||
local color='%F{yellow}'
|
local color='%F{yellow}'
|
||||||
[[ $signal -gt 75 ]] && color='%F{green}'
|
[[ $signal -gt 75 ]] && color='%F{green}'
|
||||||
[[ $signal -lt 50 ]] && color='%F{red}'
|
[[ $signal -lt 50 ]] && color='%F{red}'
|
||||||
echo -n "%{$color%}\uf230 $signal%{%f%}" # \uf230 is
|
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:
|
The command, above, gives you the wireless signal segment shown below:
|
||||||
|
|
||||||
![signal](http://i.imgur.com/hviMATC.png)
|
![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 |
|
| 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.
|
To turn off these icons you could set these variables to an empty string.
|
||||||
|
```zsh
|
||||||
POWERLEVEL9K_HOME_ICON=''
|
POWERLEVEL9K_HOME_ICON=''
|
||||||
POWERLEVEL9K_HOME_SUB_ICON=''
|
POWERLEVEL9K_HOME_SUB_ICON=''
|
||||||
POWERLEVEL9K_FOLDER_ICON=''
|
POWERLEVEL9K_FOLDER_ICON=''
|
||||||
|
```
|
||||||
You can limit the output to a certain length by truncating long paths.
|
You can limit the output to a certain length by truncating long paths.
|
||||||
Customizations available are:
|
Customizations available are:
|
||||||
|
|
||||||
|
@ -269,11 +269,11 @@ Customizations available are:
|
||||||
|
|
||||||
For example, if you wanted the truncation behavior of the `fish` shell, which
|
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:
|
truncates `/usr/share/plasma` to `/u/s/plasma`, you would use the following:
|
||||||
|
```zsh
|
||||||
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
|
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
|
||||||
POWERLEVEL9K_SHORTEN_DELIMITER=""
|
POWERLEVEL9K_SHORTEN_DELIMITER=""
|
||||||
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
|
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right"
|
||||||
|
```
|
||||||
In each case you have to specify the length you want to shorten the directory
|
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
|
to. So in some cases `POWERLEVEL9K_SHORTEN_DIR_LENGTH` means characters, in
|
||||||
others whole directories.
|
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.
|
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
|
##### ip
|
||||||
|
|
||||||
This segment tries to examine all currently used network interfaces and prints
|
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.|
|
|`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:
|
As an example, if you wanted a reversed time format, you would use this:
|
||||||
|
```zsh
|
||||||
# Reversed time format
|
# Reversed time format
|
||||||
POWERLEVEL9K_TIME_FORMAT='%D{%S:%M:%H}'
|
POWERLEVEL9K_TIME_FORMAT='%D{%S:%M:%H}'
|
||||||
|
```
|
||||||
If you are using an "Awesome Powerline Font", you can add a time symbol to this
|
If you are using an "Awesome Powerline Font", you can add a time symbol to this
|
||||||
segment, as well:
|
segment, as well:
|
||||||
|
```zsh
|
||||||
# Output time, date, and a symbol from the "Awesome Powerline Font" set
|
# Output time, date, and a symbol from the "Awesome Powerline Font" set
|
||||||
POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S \uE868 %d.%m.%y}"
|
POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S \uE868 %d.%m.%y}"
|
||||||
|
```
|
||||||
##### vcs
|
##### vcs
|
||||||
|
|
||||||
By default, the `vcs` segment will provide quite a bit of information. Further
|
By default, the `vcs` segment will provide quite a bit of information. Further
|
||||||
|
|
|
@ -456,6 +456,7 @@ prompt_custom() {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Dir: current working directory
|
# Dir: current working directory
|
||||||
|
set_default POWERLEVEL9K_DIR_PATH_SEPARATOR "/"
|
||||||
prompt_dir() {
|
prompt_dir() {
|
||||||
local current_path='%~'
|
local current_path='%~'
|
||||||
if [[ -n "$POWERLEVEL9K_SHORTEN_DIR_LENGTH" ]]; then
|
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"
|
current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:$POWERLEVEL9K_SHORTEN_DELIMITER/:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local current_icon=''
|
if [[ "${POWERLEVEL9K_DIR_PATH_SEPARATOR}" != "/" ]]; then
|
||||||
|
current_path=$(print -P "${current_path}" | sed "s/\//${POWERLEVEL9K_DIR_PATH_SEPARATOR}/g")
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
if [[ $(print -P "%~") == '~' ]]; then
|
||||||
"$1_prompt_segment" "$0_HOME" "$2" "blue" "$DEFAULT_COLOR" "$current_path" 'HOME_ICON'
|
current_state="HOME"
|
||||||
elif [[ $(print -P "%~") == '~'* ]]; then
|
elif [[ $(print -P "%~") == '~'* ]]; then
|
||||||
"$1_prompt_segment" "$0_HOME_SUBFOLDER" "$2" "blue" "$DEFAULT_COLOR" "$current_path" 'HOME_SUB_ICON'
|
current_state="HOME_SUBFOLDER"
|
||||||
else
|
|
||||||
"$1_prompt_segment" "$0_DEFAULT" "$2" "blue" "$DEFAULT_COLOR" "$current_path" 'FOLDER_ICON'
|
|
||||||
fi
|
fi
|
||||||
|
"$1_prompt_segment" "$0_${current_state}" "$2" "blue" "$DEFAULT_COLOR" "${current_path}" "${dir_states[$current_state]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Docker machine
|
# Docker machine
|
||||||
|
|
Loading…
Reference in a new issue