Merge branch 'battery' of https://github.com/onaforeignshore/powerlevel9k into onaforeignshore-battery

This commit is contained in:
Ben Hilburn 2017-05-01 21:28:22 -04:00
parent 954c8697e7
commit 98a00d31a8
2 changed files with 67 additions and 6 deletions

View File

@ -184,9 +184,8 @@ your `~/.zshrc`:
##### battery
This segment will display your current battery status (fails gracefully on
systems without a battery). It is supported on both OSX and Linux (note that it
requires `acpi` on Linux).
The default settings for this segment will display your current battery status (fails gracefully on
systems without a battery). It is supported on both OSX and Linux (note that it requires `acpi` on Linux).
| Variable | Default Value | Description |
|----------|---------------|-------------|
@ -201,6 +200,53 @@ Note that you can [modify the `_FOREGROUND`
color](https://github.com/bhilburn/powerlevel9k/wiki/Stylizing-Your-Prompt#segment-color-customization)
without affecting the icon color.
The battery segment can also be extended to change the icon automatically depending on the battery level.
This will override the default battery icon. In order to do this, you need to define the
`POWERLEVEL9k_BATTERY_STAGES` variable.
| Variable | Default Value | Description |
| `POWERLEVEL9K_BATTERY_STAGES`|Unset|A string or array to indicate the stages.|
If you want to use a string, you can declare the variable as follows:
```zsh
POWERLEVEL9K_BATTERY_STAGES="▁▂▃▄▅▆▇█"
```
If you require extra spacing after the icon, you will have to set it as an array,
since spaces in the string will be used as one of the stages and you will get a
missing icon. To do this, declare the variable as follows:
```zsh
POWERLEVEL9K_BATTERY_STAGES=($'\u2581 ' $'\u2582 ' $'\u2583 ' $'\u2584 ' $'\u2585 ' $'\u2586 ' $'\u2587 ' $'\u2588 ')
```
You can also use a multiple character "icon" if you want a longer battery icon. To do
this, declare the variable as follows:
```zsh
POWERLEVEL9K_BATTERY_STAGES=(
$'▏ ▏' $'▎ ▏' $'▍ ▏' $'▌ ▏' $'▋ ▏' $'▊ ▏' $'▉ ▏' $'█ ▏'
$'█▏ ▏' $'█▎ ▏' $'█▍ ▏' $'█▌ ▏' $'█▋ ▏' $'█▊ ▏' $'█▉ ▏' $'██ ▏'
$'██ ▏' $'██▎ ▏' $'██▍ ▏' $'██▌ ▏' $'██▋ ▏' $'██▊ ▏' $'██▉ ▏' $'███ ▏'
$'███ ▏' $'███▎ ▏' $'███▍ ▏' $'███▌ ▏' $'███▋ ▏' $'███▊ ▏' $'███▉ ▏' $'████ ▏'
$'████ ▏' $'████▎▏' $'████▍▏' $'████▌▏' $'████▋▏' $'████▊▏' $'████▉▏' $'█████▏' )
```
It is now also possible to change the background of the segment automatically depending on
the battery level. This will override the following variables: `POWERLEVEL9K_BATTERY_CHARGING`,
`POWERLEVEL9K_BATTERY_CHARGED`, `POWERLEVEL9K_BATTERY_DISCONNECTED`, and `POWERLEVEL9K_BATTERY_LOW_COLOR`.
In order to do this, we define a color array (from low to high) as follows:
```zsh
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND=(196 202 208 214 220 226 190 154 118 82 46)
```
|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)|
Please note the following:
* an array declarations start with `(` and end with `)`.
* both the icon and background changing levels are automatically calculated, so they can be any length.
##### command_execution_time
Display the time the previous command took to execute if the time is above

View File

@ -468,9 +468,24 @@ prompt_battery() {
message="$bat_percent%%"
fi
# Draw the prompt_segment
if [[ -n $bat_percent ]]; then
"$1_prompt_segment" "${0}_${current_state}" "$2" "$DEFAULT_COLOR" "${battery_states[$current_state]}" "$message" 'BATTERY_ICON'
# override default icon if we are using battery stages
if [[ -n "$POWERLEVEL9K_BATTERY_STAGES" ]]; then
local segment=$(( 100.0 / (${#POWERLEVEL9K_BATTERY_STAGES} - 1 ) ))
if [[ $segment > 1 ]]; then
local offset=$(( ($bat_percent / $segment) + 1 ))
# check if the stages are in an array or a string
[[ "${(t)POWERLEVEL9K_BATTERY_STAGES}" =~ "array" ]] && POWERLEVEL9K_BATTERY_ICON="$POWERLEVEL9K_BATTERY_STAGES[$offset]" || POWERLEVEL9K_BATTERY_ICON=${POWERLEVEL9K_BATTERY_STAGES:$offset:1}
fi
fi
# override the default color if we are using a color level array
if [[ -n "$POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND" ]] && [[ "${(t)POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND}" =~ "array" ]]; then
local segment=$(( 100.0 / (${#POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND} - 1 ) ))
local offset=$(( ($bat_percent / $segment) + 1 ))
"$1_prompt_segment" "$0_${current_state}" "$2" "${POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND[$offset]}" "${battery_states[$current_state]}" "${message}" "BATTERY_ICON"
else
# Draw the prompt_segment
"$1_prompt_segment" "$0_${current_state}" "$2" "${DEFAULT_COLOR}" "${battery_states[$current_state]}" "${message}" "BATTERY_ICON"
fi
}