1 minute read

Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, fish, tmux, IPython, Awesome, i3 and Qtile.

I use it mainly for git repos, to show current branch name and status without run git branch and git status. Here is how to enable it. (Works on WSL Ubuntu too).

0. Install Powerline, powerline-gitstatus and fonts-powerline

sudo apt install powerline powerline-gitstatus fonts-powerline

1. Enable Powerline for vim

Add below content to your ~/.vimrc

set rtp+=/usr/share/vim/addons/
set laststatus=2
set t_Co=256

2. Enabled Powerline for Bash

Add below content to you ~/.bashrc

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

3. Use Powerline

source ~/.bashrc

4. Update Default Settings

All config files are located under /usr/share/powerline/config_files. You can override them by creating .config/powerline/ folder and put your customized config files there. Here is my settings

$ tree
.
├── colorschemes
│   └── default.json
├── config.json
└── themes
    └── shell
        └── default_leftonly.json

I changed the color for time segment

$ cat colorschemes/default.json
{
    "name": "Default",
    "groups": {
        "time": {
            "fg": "black",
            "bg": "gray10",
            "attrs": ["bold"]
        }
    }
}

And change the shell theme to “default_leftonly”

$ cat config.json
{
    "ext": {
        "shell": {
            "theme": "default_leftonly"
        }
    }
}

And the default_leftonly theme as well

{
  "segments": {
    "left": [
      {
        "function": "powerline.segments.shell.mode"
      },
      {
        "function": "powerline.segments.common.net.hostname",
        "priority": 10
      },
      {
        "function": "powerline.segments.common.env.user",
        "priority": 30
      },
      {
        "function": "powerline.segments.shell.cwd",
        "priority": 10,
        "args": {
          "use_path_separator": true,
          "dir_limit_depth": 10
        }
      },
      {
        "function": "powerline_gitstatus.gitstatus",
        "priority": 40
      },
      {
        "function": "powerline.segments.shell.jobnum",
        "priority": 20
      },
      {
        "function": "powerline.segments.shell.last_status"
      }
    ]
  }
}

Or this one if you like 2 lines prompt

$ cat themes/shell/default_leftonly.json
{
  "segments": {
    "above": [
      {
        "left": [
          {
            "function": "powerline.segments.shell.mode"
          },
          {
            "function": "powerline.segments.common.net.hostname",
            "priority": 10
          },
          {
            "function": "powerline.segments.common.env.user",
            "priority": 30
          },
          {
            "function": "powerline.segments.shell.cwd",
            "priority": 10,
            "args": {
              "use_path_separator": true,
              "dir_limit_depth": 10
            }
          },
          {
            "function": "powerline_gitstatus.gitstatus",
            "priority": 40
          },
          {
            "function": "powerline.segments.shell.jobnum",
            "priority": 20
          }
        ],
        "right": []
      }
    ],
    "left": [
      {
        "function": "powerline.segments.common.time.date",
        "args": {
          "format": "%H:%M:%S",
          "istime": true
        }
      },
      {
        "function": "powerline.segments.shell.last_status"
      }
    ],
    "right": []
  }
}

Comments