Awesome
Powerline style prompt for Zsh
This is a fork from https://github.com/milkbikis/powerline-bash
A Powerline like prompt for Zsh:
- Shows some important details about the git branch:
- Displays the current git branch which changes background color when the branch is dirty
- A '+' appears when untracked files are present
- When the local branch differs from the remote, the difference in number of commits is shown along with '⇡' or '⇣' indicating whether a git push or pull is pending
- Changes color if the last command exited with a failure code
- If you're too deep into a directory tree, shortens the displayed path with an ellipsis
- Shows the current Python virtualenv environment
- It's all done in a Python script, so you could go nuts with it
Setup
-
This script uses ANSI color codes to display colors in a terminal. These are notoriously non-portable, so may not work for you out of the box, but try setting your $TERM to xterm-256color, because that works for me. i.e. edit your
.zshrc
file to add:export TERM='xterm-256color'
If you still face problems seeing colors then read this: https://gist.github.com/3749830#file_powerline_zsh_instructions.md
-
Patch the font you use for your terminal. Download the font from: https://github.com/Lokaltog/vim-powerline/wiki/Patched-fonts Follow the instructions: https://github.com/Lokaltog/vim-powerline/tree/develop/fontpatcher#font-patching-guide
-
Clone this repository somewhere:
git clone https://github.com/carlcarl/powerline-zsh
-
Create a symlink to the python script in your home:
ln -s <path/to/powerline-zsh.py> ~/powerline-zsh.py
If you don't want the symlink, just modify the path in the .zshrc
command below
- Now add the following to your
.zshrc
:
function _update_ps1()
{
export PROMPT="$(~/powerline-zsh.py $?)"
}
precmd()
{
_update_ps1
}
- powerline-zsh.py usage:
-h, --help show this help message and exit
--cwd-only Hide parent directory
--hostname Show hostname at the begin
-m <mode> Choose icon font: default, compatible, patched or konsole.
Default is "default"
Python version note
Most of the distros use Python2
as default, however, Some distros like Archlinux
use Python3
. The earlier version of powerline-zsh
is not compatible with Python3
. With such condition, you have two ways to solve this issue.
- Use the newest version of
powerline-zsh
. Just download from themaster
branch. - Modify the
.zshrc
content, usepython2
to execute it.
function _update_ps1()
{
export PROMPT="$(python2 ~/powerline-zsh.py $?)"
}
precmd()
{
_update_ps1
}
Pypy note
You can use pypy
to speed up your script execution, in your .zshrc
:
function _update_ps1()
{
error=$?
if [[ -s "/usr/local/bin/pypy" ]]; then
export PROMPT="$(pypy ~/powerline-zsh.py $error)"
else
export PROMPT="$(~/powerline-zsh.py $error)"
fi
}
precmd()
{
_update_ps1
}
konsole user note
You may not see the icons when using konsole. To solve this problem, you can use -m
option:
function _update_ps1()
{
export PROMPT="$(~/powerline-zsh.py -m konsole $?)"
}
precmd()
{
_update_ps1
}
Authors and License
The powerline-zsh
package is written by Chien-Wei Huang, Shrey Banga and contributors. It’s MIT licensed and freely available.
Feel free to improve this package and send a pull request to GitHub.