188

Powerline is a plug-in to display informational and beautiful statusline for vim, tmux and shell prompt for bash, zsh.

Vim statusline: enter image description here enter image description here enter image description here enter image description here How can I install and setup Powerline for different applications and shells in Ubuntu?

2
  • 2
    Just as a note. My plugin was installed to dist-packages instead of site-packages so I had to point the applications to that directory instead. It seems to be a convention for debian-based distributions to be able to have more than one python installation configured. Anyways it took me a while to figure this out so I hope this can save you guys some headaches. Oct 3, 2013 at 6:38
  • For your info: I have added a new, easier install method on 14.04.
    – don.joey
    Mar 13, 2015 at 9:48

5 Answers 5

247

Plugin Installation:

Install python-pip and git: Open terminal by hitting Ctrl+Alt+T and run:

sudo apt-get install python-pip git
  • Per user:
    In terminal run:

    pip install --user git+git://github.com/Lokaltog/powerline
    

    Add ~/.local/bin to $PATH by modifying ~/.profile with your favourite editor:

    gksudo gedit ~/.profile
    

    and adding following lines at the end of it:

    if [ -d "$HOME/.local/bin" ]; then
        PATH="$HOME/.local/bin:$PATH"
    fi
    
  • System wide:
    In terminal run:

    su -c 'pip install git+git://github.com/Lokaltog/powerline'
    

Font Installation:

Powerline provides two ways of installing the required fonts. If you're using one of following terminal: Gnome Terminal, Konsole, lxterminal, st, Xfce Terminal, Terminator, Guake, Yakuake then you should use "Fontconfig" method.

  • Fontconfig: (recommended)

    • Per User:
      Run the following commands in terminal:

      wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
      mkdir -p ~/.fonts/ && mv PowerlineSymbols.otf ~/.fonts/
      fc-cache -vf ~/.fonts
      mkdir -p ~/.config/fontconfig/conf.d/ && mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/
      
    • System wide:
      Run the following commands in terminal:

      wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
      sudo mv PowerlineSymbols.otf /usr/share/fonts/
      sudo fc-cache -vf
      sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/
      
  • Patched font:
    Use this method only if "Fontconfig" method doesn't work for you or you're using a terminal other than mentioned above.

    1. Download the font of your choice from powerline-fonts.
    2. Move your patched font to ~/.fonts/ for per user installation or /usr/share/fonts for system wide installation.
    3. Run fc-cache -vf ~/.fonts to update your font cache, sudo fc-cache -vf to do it system wide.

To use patched font in Gvim see this answer and to change the font of your respective terminal check this question: How to change the font of various terminal emulators?. You may have to reboot your system after font installation for changes to take effect.

Usage: (for per user installation)

  • Vim statusline:
    Add following to your ~/.vimrc or /etc/vim/vimrc:

    set rtp+=$HOME/.local/lib/python2.7/site-packages/powerline/bindings/vim/
    
    " Always show statusline
    set laststatus=2
    
    " Use 256 colours (Use this setting only if your terminal supports 256 colours)
    set t_Co=256
    
  • Bash prompt:
    Add the following line to your ~/.bashrc or /etc/bash.bashrc:

    if [ -f ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh ]; then
        source ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
    fi
    
  • Zsh prompt:
    Add the following line to your ~/.zshrc or /etc/zsh/zshrc:

    if [[ -r ~/.local/lib/python2.7/site-packages/powerline/bindings/zsh/powerline.zsh ]]; then
        source ~/.local/lib/python2.7/site-packages/powerline/bindings/zsh/powerline.zsh
    fi
    
  • Tmux statusline:
    Add the following line to your ~/.tmux.conf:

    source ~/.local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf
    set-option -g default-terminal "screen-256color"
    

    If your terminal supports 256 colours, set TERM environment variable to xterm-256color by modifying ~/.bashrc or /etc/bash.bashrc and adding following line:

    export TERM=xterm-256color
    

    To check if your terminal supports 256 colours check the documentation of your terminal or google it. Most popular terminals support 256 colours.

Usage: (for system wide installation)

  • Vim statusline:
    Add following to your ~/.vimrc or /etc/vim/vimrc:

    set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/
    
    " Always show statusline
    set laststatus=2
    
    " Use 256 colours (Use this setting only if your terminal supports 256 colours)
    set t_Co=256
    
  • Bash prompt:
    Add the following line to your ~/.bashrc or /etc/bash.bashrc:

    if [ -f /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh ]; then
        source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh
    fi
    
  • Zsh prompt:
    Add the following line to your ~/.zshrc or /etc/zsh/zshrc:

    if [[ -r /usr/local/lib/python2.7/dist-packages/powerline/bindings/zsh/powerline.zsh ]]; then
        source /usr/local/lib/python2.7/dist-packages/powerline/bindings/zsh/powerline.zsh
    fi
    
  • Tmux statusline:
    Add the following line to your ~/.tmux.conf:

    source /usr/local/lib/python2.7/dist-packages/powerline/bindings/tmux/powerline.conf
    set-option -g default-terminal "screen-256color"
    

    If your terminal supports 256 colours, Set TERM environment variable to xterm-256color by modifying ~/.bashrc or /etc/bash.bashrc and adding following line:

    export TERM=xterm-256color
    

    To check if your terminal supports 256 colours check the documentation of your terminal or google it. Most popular terminals support 256 colours.

Configuration:

For detailed information on configuring Powerline: Configuration.

Uninstall:

To uninstall Powerline run one of following commands in terminal:

  • To uninstall per user installation:

    pip uninstall powerline
    
  • To uninstall system wide installation:

    su -c 'pip uninstall powerline'
    

Source: Powerline beta documentation

Alternatives:

If you're installing Powerline just for Vim you should try vim-airline which is more customizable and lightweight.

19
  • 1
    It should probably also be mentioned that the user will need to set their emulator to "login" so that ~/.profile will be properly ran or they might run into issues with not being able to use their terminal when it's unable to find the powerline command. May 25, 2013 at 2:36
  • 1
    as pointed below, the installation path for system wide is /usr/local/lib/python2.7/dist-packages/powerline/. So at the vimrc you should point at /usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/ instead
    – dinigo
    Nov 14, 2013 at 17:31
  • 1
    @demil133 Fixed! Nov 14, 2013 at 18:20
  • 1
    for me (on Ubuntu 12.04) per user font installation doesn't work I had to install fonts system wide
    – jmarceli
    Dec 7, 2013 at 8:38
  • 3
    No longer works in Ubuntu 15.04
    – Goddard
    Jul 16, 2015 at 22:54
36

As of Ubuntu 14.10 (utopic), a powerline package is available in the universe repository. To install it, just run this command in your terminal :

sudo apt-get install powerline

Alternatively, you should be able to install it by using the Ubuntu Software Center.

6
  • 3
    This doesn't really solve my problem though. Is there anything else on top of this that needs to be performed for this to work? Feb 13, 2015 at 15:41
  • 8
    Yes, there is, but it depends on how you want to use powerline. Instructions on how to integrate it in common applications are found in the package documentation located in /usr/share/doc/powerline. The relevant file in this package is README.Debian.
    – jcharaoui
    Feb 17, 2015 at 21:21
  • If instruction is found in the doc, put them here. Otherwise it doesn't worth just writing the command to install it because installing doesn't do anything
    – Anwar
    Nov 27, 2016 at 18:02
  • It should be added that this method does not include bash bindings and many other bindings are missing.
    – Goddard
    Aug 19, 2017 at 21:18
  • 2
    All bindings are included in the powerline package, including bash bindings. They are installed in /usr/share/powerline/bindings.
    – jcharaoui
    Apr 13, 2018 at 1:25
28

Though this has been answered, it seems the solution may also be somewhat overkill in terms of the installment for Bash at this point in time. Unaware am I if Powerline was available in the earlier repos, but it is available in the current repos. That being said, it's much less abstracted for Bash right now.

Install Powerline using this command;

sudo apt install powerline

For per user configuration, edit your .bashrc with your text editor of choice.

gedit ~/.bashrc

And append this to the document;

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/share/powerline/bindings/bash/powerline.sh
fi

For system configuration, edit /etc/bash.bashrc as root with your text editor of choice.

sudo su followed by gedit /bash.bashrc

and append this to the document;

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/share/powerline/bindings/bash/powerline.sh
fi
2
  • Do I need to do anything else on Gnome Terminal?
    – eri0o
    May 18, 2020 at 18:40
  • This is the answered that worked for Ubuntu 21.04 too.
    – apaderno
    Aug 25, 2021 at 14:15
6

On 14.04 with the latest version of Powerline

With the latest install of powerline things have gotten a lot easier. Here is how I went about it.

  1. Install Vundle and set it up in your .vimrc
  2. Install powerline through the Vundle package installer
  3. Install the fonts (just run the ./install.sh script).
  4. Use the following settings in your .vimrc:

    Bundle 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}
    " Powerline setup
    set laststatus=2
    set term=xterm-256color
    set termencoding=utf-8
    set guifont=Ubuntu\ Mono\ derivative\ Powerline:10
    " set guifont=Ubuntu\ Mono
    let g:Powerline_symbols = 'fancy'
    
  5. Go into your ~/.vim/bundles/powerline/fonts folder and double click the font that is in there. Install it.
  6. (On some systems you need to copy the powerline font config to /etc/fonts/conf.d)
  7. Log out and back in.

Note: you do not need to install it via pip anymore.

5
  • How does this method affect the availability of Powerline for use in shells, tmux, etc.? Jun 5, 2015 at 3:06
  • @DennisWilliamson To be honest, I would not know as I have not used powerline in those contexts. Because all the configuration is vim specific, I could imagine that this does not affect the other contexts at all.
    – don.joey
    Jun 5, 2015 at 7:23
  • @don.joey According to the documentation, they should not be used side by side (see the warning box): powerline.readthedocs.org/en/latest/usage/…
    – Andrew
    Jul 2, 2015 at 6:10
  • @Andrew I am not sure I get your point. You mean you should not install both via Vundle and via pip? Because that is not what I am suggesting, right?
    – don.joey
    Jul 2, 2015 at 11:36
  • Yes, that's what I mean. Isn't that what you were suggesting? Vundle works for vim-only but if you want it in multiple places then instead install via pip only, then configure for vim.
    – Andrew
    Jul 2, 2015 at 15:23
2

If you just want the bash extension, I wrote a small script that automates the manual steps that Basharat Sialvi wrote (many thanks for that complete reference).

In synthesis (but please, have a look at the script first as I won't be responsible if it throws your computer out of the window or delete your files):

git clone [email protected]:vincepii/ubuntu-powerline-bash.git
cd ubuntu-powerline-bash
./install.sh

https://thealarmclocksixam.wordpress.com/2016/02/28/quickly-setup-powerline-for-bash-in-ubuntu/

https://github.com/vincepii/ubuntu-powerline-bash

2
  • Hi, I have used your script file. But I am not getting the arrow symbols on my bash terminal. Though I am getting them inside vim. Oct 28, 2016 at 11:01
  • Never mind, i found a solution: I added the following line: export LC_CTYPE="en_US.UTF-8" to my .bashrc . Earlier it was "en_IN" Oct 28, 2016 at 12:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .