Merging support for Awesome-Patched-Powerline fonts.

This commit is contained in:
Ben Hilburn 2015-06-08 13:42:50 -07:00
commit 7376602a7b
2 changed files with 106 additions and 57 deletions

View File

@ -16,17 +16,20 @@ information in configurable prompt segments.
- [Features](#features)
- [Installation](#installation)
- [Install Powerlevel9k](#install-powerlevel9k)
- [Install Powerline Fonts for Normal Configuration](#install-powerline-fonts-for-normal-configuration)
- [Alternative Configuration: Über](#alternative-configuration-%C3%BCber)
- [Alternative Configuration: Bare Bones](#alternative-configuration-bare-bones)
- [Segment Customization](#segment-customization)
- [The AWS Profile Segment](#the-aws-profile-segment)
- [The 'context' Segment](#the-context-segment)
- [Test ratio](#test-ratio)
- [The 'time' segment](#the-time-segment)
- [Unit Test Ratios](#unit-test-ratios)
- [The 'vcs' Segment](#the-vcs-segment)
- [Symbols](#symbols)
- [Styling](#styling)
- [Fonts](#fonts)
- [Double-Lined Prompt](#double-lined-prompt)
- [Light Color Theme](#light-color-theme)
- [Further color customizations](#further-color-customizations)
- [Troubleshooting](#troubleshooting)
- [Gaps Between Segments](#gaps-between-segments)
- [Contributions / Bugs / Contact](#contributions--bugs--contact)
@ -63,10 +66,12 @@ Here are some screenshots of `powerlevel9k` with default settings:
### Installation
There are three different forms of installation that you can use to make use of
this theme:
You just need to install the theme and set `POWERLEVEL9K_MODE='compatible'`
to join the experience. If you want to customize your experience even further
read the chapter about "[fonts](#fonts)" or about "[segment customization](#segment-customization)".
* Normal - Theme + Powerline Fonts
* Über - Theme + Awesome Powerline Fonts
* Bare Bones - Theme Only
#### Install Powerlevel9k
@ -80,6 +85,60 @@ You then need to select this theme in your `~/.zshrc`:
ZSH_THEME="powerlevel9k/powerlevel9k"
#### Install Powerline Fonts for Normal Configuration
You can find the [installation instructions for Powerline Fonts here]
(https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation).
You can also find the raw font files [in this Github
repository](https://github.com/powerline/fonts) if you want to manually install
them for your OS.
After you have installed Powerline fonts, make the default font in your terminal
emulator the Powerline font you want to use.
This is the default mode for `Powerlevel9k`, and no further configuration is
necessary.
#### Alternative Configuration: Über
Alternatively, you can install [Awesome Powerline
Fonts](https://github.com/gabrielelana/awesome-terminal-fonts), which provide
a number of additional glyphs.
You then need to indicate that you wish to use the additional glyphs by defining
the following in your `~/.zshrc`:
POWERLEVEL9K_MODE='awesome-patched'
If you choose to make use of this, your prompt will look something like this:
![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png)
Note that if you prefer flat segment transitions, you can use the following with
`Awesome Powerline Fonts` installed:
POWERLEVEL9K_MODE='flat'
Which looks like this:
![](https://cloud.githubusercontent.com/assets/1544760/7981324/76d0eb5a-0aae-11e5-9608-d662123d0b0a.png)
#### Alternative Configuration: Bare Bones
This option is best if you prefer not to install additional fonts. This option
will work out-of-the-box if your your terminal font supports the segment
separator characters `\uE0B0` (left segment separator) and `\uE0B2` (right
segment separator).
All you need to do to in this case is install the `Powerlevel9k` theme itself,
as explained above, and then define the following in your `~/.zshrc`:
POWERLEVEL9K_MODE='compatible'
Note that depending on your terminal font, this may still not render
appropriately. This configuration should be used as a back-up.
### Segment Customization
Customizing your prompt is easy! Select the segments you want to have displayed,
@ -158,10 +217,10 @@ Example:
##### Symbols
The `vcs` segment uses various symbols to tell you the state of your repository.
These symbols depend on your installed [Font](#fonts) and your `POWERLEVEL9K_MODE`
set.
These symbols depend on your installed font and selected `POWERLEVEL9K_MODE`
from the [Installation](#Installation) section above.
| `compatible` | `powerline-patched` | `awesome-patched` | explanation
| `Bare Bones` | `Normal` | `Über` | explanation
|--------------|---------------------|-------------------|--------------------------
| `↑4` | `↑4` | ![icon_outgoing](https://cloud.githubusercontent.com/assets/1544760/7976089/b5904d6e-0a76-11e5-8147-5e873ac52d79.gif)4 | Number of commits your repository is ahead of your remote branch
| `↓5` | `↓5` | ![icon_incoming](https://cloud.githubusercontent.com/assets/1544760/7976091/b5909c9c-0a76-11e5-9cad-9bf0a28a897c.gif)5 | Number of commits your repository is behind of your remote branch
@ -181,27 +240,6 @@ set.
You can configure the look and feel of your prompt easily with some built-in
options.
#### Fonts
If you set `POWERLEVEL9K_MODE='compatible'` you just get a little glimpse of
the beauty of this theme.
To get nicer Icons you need to install a [powerline-patched](https://github.com/Lokaltog/powerline-fonts) font.
In your terminal emulator you need to select this font and in your `~/.zshrc` you need
to set `POWERLEVEL9K_MODE='powerline-patched'`.
You can find the [installation instructions here](https://powerline.readthedocs.org/en/latest/installation/linux.html#fonts-installation).
You can also find the raw font files [in this Github repository](https://github.com/powerline/fonts) if you want to manually install them for your OS.
Screenshot:
![](http://bhilburn.org/content/images/2015/01/pl9k-improved.png)
If even these Icons did not impress you, have a look at `POWERLEVEL9K_MODE='awesome-patched'`.
For this mode, you have to install a [awesome-patched](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched) font and set the according mode.
Screenshot:
![](https://cloud.githubusercontent.com/assets/1544760/7959660/67612918-09fb-11e5-9ef2-2308363c3c51.png)
If you prefer segements as rectangles, just set `POWERLEVEL9K_MODE='flat'`, but
beware: You still need a [awesome-patched](https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched) font.
#### Double-Lined Prompt
By default, `powerlevel9k` is a single-lined prompt. If you would like to have

View File

@ -40,17 +40,18 @@
# POWERLEVEL9K_COLOR_SCHEME='light'
################################################################
# The `CURRENT_BG` variable is used to remember what the last BG color used was
# when building the left-hand prompt. Because the RPROMPT is created from
# right-left but reads the opposite, this isn't necessary for the other side.
CURRENT_BG='NONE'
## Debugging
#zstyle ':vcs_info:*+*:*' debug true
#set -o xtrace
# These characters require the Powerline fonts to work properly. If see boxes or
# bizarre characters below, your fonts are not correctly installed. In case you
# bizarre characters below, your fonts are not correctly installed. If you
# do not want to install a special font, you can set `POWERLEVEL9K_MODE` to
# `compatible`. This shows all icons in regular symbols.
case $POWERLEVEL9K_MODE in
'flat')
# Awesome-Patched Font required!
# See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
LEFT_SEGMENT_SEPARATOR=''
RIGHT_SEGMENT_SEPARATOR=''
ROOT_ICON="\uE801" # 
@ -73,7 +74,8 @@ case $POWERLEVEL9K_MODE in
VCS_TAG_ICON="\uE817 " # 
VCS_BOOKMARK_ICON="\uE87B" # 
VCS_COMMIT_ICON="\uE821 " # 
VCS_BRANCH_ICON=" \uE220" # 
#VCS_BRANCH_ICON=" \uE220" # 
VCS_BRANCH_ICON=''
VCS_REMOTE_BRANCH_ICON="\uE804" # 
VCS_GIT_ICON="\uE20E " # 
VCS_HG_ICON="\uE1C3 " # 
@ -97,13 +99,15 @@ case $POWERLEVEL9K_MODE in
VCS_TAG_ICON=''
VCS_BOOKMARK_ICON="\u263F" # ☿
VCS_COMMIT_ICON=''
VCS_BRANCH_ICON='@'
#VCS_BRANCH_ICON='@'
VCS_BRANCH_ICON=''
VCS_REMOTE_BRANCH_ICON="\u2192" # →
VCS_GIT_ICON='Git'
VCS_HG_ICON='HG'
;;
'awesome-patched')
# Awesome-Patched Font required! See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
# Awesome-Patched Font required!
# See https://github.com/gabrielelana/awesome-terminal-fonts/tree/patching-strategy/patched
LEFT_SEGMENT_SEPARATOR="\uE0B0" # 
RIGHT_SEGMENT_SEPARATOR="\uE0B2" # 
ROOT_ICON="\u26A1" # ⚡
@ -126,13 +130,15 @@ case $POWERLEVEL9K_MODE in
VCS_TAG_ICON="\uE817 " # 
VCS_BOOKMARK_ICON="\uE87B" # 
VCS_COMMIT_ICON="\uE821 " # 
VCS_BRANCH_ICON=" \uE220" # 
#VCS_BRANCH_ICON=" \uE220" # 
VCS_BRANCH_ICON=''
VCS_REMOTE_BRANCH_ICON="\uE804" # 
VCS_GIT_ICON="\uE20E " # 
VCS_HG_ICON="\uE1C3 " # 
;;
*)
# Powerline-Patched Font required! See https://github.com/Lokaltog/powerline-fonts
# Powerline-Patched Font required!
# See https://github.com/Lokaltog/powerline-fonts
LEFT_SEGMENT_SEPARATOR="\uE0B0" # 
RIGHT_SEGMENT_SEPARATOR="\uE0B2" # 
ROOT_ICON="\u26A1" # ⚡
@ -151,7 +157,8 @@ case $POWERLEVEL9K_MODE in
VCS_TAG_ICON=''
VCS_BOOKMARK_ICON="\u263F" # ☿
VCS_COMMIT_ICON=''
VCS_BRANCH_ICON='@'
#VCS_BRANCH_ICON='@'
VCS_BRANCH_ICON=''
VCS_REMOTE_BRANCH_ICON="\u2192" # →
VCS_GIT_ICON="\uE0A0" # 
VCS_HG_ICON="\uE0A0" # 
@ -232,10 +239,6 @@ else
zstyle ':vcs_info:*' use-simple true
fi
## Debugging
#zstyle ':vcs_info:*+*:*' debug true
#set -o xtrace
################################################################
# Prompt Segment Constructors
################################################################
@ -263,22 +266,24 @@ left_prompt_segment() {
[[ -n $2 ]] && bg="%K{$2}" || bg="%k"
[[ -n $3 ]] && fg="%F{$3}" || fg="%f"
if [[ $CURRENT_BG != 'NONE' && $2 != $CURRENT_BG ]]; then
# Middle segment
echo -n "%{$bg%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR%{$fg%} "
else
# First segment
echo -n "%{$bg%}%{$fg%} "
fi
CURRENT_BG=$2
[[ -n $4 ]] && echo -n $4
[[ -n $4 ]] && echo -n "$4 "
}
# End the left prompt, closing any open segments
left_prompt_end() {
if [[ -n $CURRENT_BG ]]; then
echo -n " %{%k%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR"
echo -n "%{%k%F{$CURRENT_BG}%}$LEFT_SEGMENT_SEPARATOR"
else
echo -n " %{%k%}"
echo -n "%{%k%}"
fi
echo -n "%{%f%}"
echo -n "%{%f%} "
CURRENT_BG=''
}
@ -300,8 +305,8 @@ right_prompt_segment() {
local bg fg
[[ -n $2 ]] && bg="%K{$2}" || bg="%k"
[[ -n $3 ]] && fg="%F{$3}" || fg="%f"
echo -n " %f%F{$2}$RIGHT_SEGMENT_SEPARATOR%f%{$bg%}%{$fg%} "
[[ -n $4 ]] && echo -n $4
echo -n "%f%F{$2}$RIGHT_SEGMENT_SEPARATOR%f%{$bg%}%{$fg%} "
[[ -n $4 ]] && echo -n "$4 "
}
################################################################
@ -317,7 +322,7 @@ prompt_vcs() {
$1_prompt_segment $0 green $DEFAULT_COLOR
fi
echo -n "%F{$VCS_FOREGROUND_COLOR}%f$vcs_prompt"
echo -n "%F{$VCS_FOREGROUND_COLOR}%f$vcs_prompt "
fi
}
@ -405,6 +410,11 @@ function +vi-vcs-detect-changes() {
# Prompt Segments
################################################################
# The `CURRENT_BG` variable is used to remember what the last BG color used was
# when building the left-hand prompt. Because the RPROMPT is created from
# right-left but reads the opposite, this isn't necessary for the other side.
CURRENT_BG='NONE'
# AWS Profile
prompt_aws() {
local aws_profile=$AWS_DEFAULT_PROFILE
@ -523,7 +533,7 @@ prompt_time() {
time_format=$POWERLEVEL9K_TIME_FORMAT
fi
$1_prompt_segment $0 $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR "$time_format "
$1_prompt_segment $0 $DEFAULT_COLOR_INVERTED $DEFAULT_COLOR $time_format
}
# Virtualenv: current working virtualenv
@ -576,14 +586,15 @@ precmd() {
if [[ "$POWERLEVEL9K_PROMPT_ON_NEWLINE" == true ]]; then
PROMPT='╭─%{%f%b%k%}$(build_left_prompt)
╰─ '
# The right prompt should be on the same line as the first line of the left prompt.
# To do so, there is just a quite ugly workaround: Before zsh draws the RPROMPT,
# we advise it, to go one line up. At the end of RPROMPT, we advise it to go one
# line down. See http://superuser.com/questions/357107/zsh-right-justify-in-ps1
# The right prompt should be on the same line as the first line of the left
# prompt. To do so, there is just a quite ugly workaround: Before zsh draws
# the RPROMPT, we advise it, to go one line up. At the end of RPROMPT, we
# advise it to go one line down. See:
# http://superuser.com/questions/357107/zsh-right-justify-in-ps1
RPROMPT_PREFIX='%{'$'\e[1A''%}' # one line up
RPROMPT_SUFFIX='%{'$'\e[1B''%}' # one line down
else
PROMPT='%{%f%b%k%}$(build_left_prompt) '
PROMPT='%{%f%b%k%}$(build_left_prompt)'
RPROMPT_PREFIX=''
RPROMPT_SUFFIX=''
fi