Merging support for Awesome-Patched-Powerline fonts.

pull/22/head
Ben Hilburn 10 years ago
commit 7376602a7b

@ -16,17 +16,20 @@ information in configurable prompt segments.
- [Features](#features) - [Features](#features)
- [Installation](#installation) - [Installation](#installation)
- [Install Powerlevel9k](#install-powerlevel9k) - [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) - [Segment Customization](#segment-customization)
- [The AWS Profile Segment](#the-aws-profile-segment) - [The AWS Profile Segment](#the-aws-profile-segment)
- [The 'context' Segment](#the-context-segment) - [The 'context' Segment](#the-context-segment)
- [Test ratio](#test-ratio)
- [The 'time' segment](#the-time-segment) - [The 'time' segment](#the-time-segment)
- [Unit Test Ratios](#unit-test-ratios)
- [The 'vcs' Segment](#the-vcs-segment) - [The 'vcs' Segment](#the-vcs-segment)
- [Symbols](#symbols) - [Symbols](#symbols)
- [Styling](#styling) - [Styling](#styling)
- [Fonts](#fonts)
- [Double-Lined Prompt](#double-lined-prompt) - [Double-Lined Prompt](#double-lined-prompt)
- [Light Color Theme](#light-color-theme) - [Light Color Theme](#light-color-theme)
- [Further color customizations](#further-color-customizations)
- [Troubleshooting](#troubleshooting) - [Troubleshooting](#troubleshooting)
- [Gaps Between Segments](#gaps-between-segments) - [Gaps Between Segments](#gaps-between-segments)
- [Contributions / Bugs / Contact](#contributions--bugs--contact) - [Contributions / Bugs / Contact](#contributions--bugs--contact)
@ -63,10 +66,12 @@ Here are some screenshots of `powerlevel9k` with default settings:
### Installation ### 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'` * Normal - Theme + Powerline Fonts
to join the experience. If you want to customize your experience even further * Über - Theme + Awesome Powerline Fonts
read the chapter about "[fonts](#fonts)" or about "[segment customization](#segment-customization)". * Bare Bones - Theme Only
#### Install Powerlevel9k #### Install Powerlevel9k
@ -80,6 +85,60 @@ You then need to select this theme in your `~/.zshrc`:
ZSH_THEME="powerlevel9k/powerlevel9k" 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 ### Segment Customization
Customizing your prompt is easy! Select the segments you want to have displayed, Customizing your prompt is easy! Select the segments you want to have displayed,
@ -158,10 +217,10 @@ Example:
##### Symbols ##### Symbols
The `vcs` segment uses various symbols to tell you the state of your repository. 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` These symbols depend on your installed font and selected `POWERLEVEL9K_MODE`
set. 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 | `↑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 | `↓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 You can configure the look and feel of your prompt easily with some built-in
options. 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 #### Double-Lined Prompt
By default, `powerlevel9k` is a single-lined prompt. If you would like to have By default, `powerlevel9k` is a single-lined prompt. If you would like to have

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

Loading…
Cancel
Save