powerline-go

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2017 License: GPL-3.0 Imports: 9 Imported by: 0

README

A Powerline style prompt for your shell

A Powerline like prompt for Bash, ZSH and Fish. Based on Powerline-Shell by @banga. Ported to golang by @justjanne.

  • Shows some important details about the git/hg branch (see below)
  • 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 easy to customize and extend. See below for details.

Table of Contents

Version Control

All of the version control systems supported by powerline shell give you a quick look into the state of your repo:

  • The current branch is displayed and changes background color when the branch is dirty.
  • 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

In addition, git has a few extra symbols:

  • -- a file has been modified, but not staged for commit
  • -- a file is staged for commit
  • -- a file has conflicts
  • + -- untracked files are present

Each of these will have a number next to it if more than one file matches.

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.

  • Patch the font you use for your terminal: see powerline-fonts

    • If you struggle too much to get working fonts in your terminal, you can use "compatible" mode.
    • If you're using old patched fonts, you have to use the older symbols. Basically reverse this commit in your copy
  • Set your GOPATH (otherwise the package will be installed in $HOME/go/bin/)

  • Download and install the package

go get github.com/justjanne/powerline-go
  • Move it to a convenient place (for example, ~/.powerline/powerline-go)
All Shells

There are a few optional arguments which can be seen by running powerline-go -help.

Usage of powerline-go:
  -colorize-hostname
        Colorize the hostname based on a hash of itself
  -cwd-max-depth int
        Maximum number of directories to show in path
        (default 5)
  -cwd-max-dir-size int
        Maximum number of letters displayed for each directory in the path
        (default -1)
  -cwd-mode string
        How to display the current directory
        (default "fancy")
  -error int
        Exit code of previously executed command
  -mode string
        The characters used to make separators between segments.
        (valid choices: patched, compatible, flat)
        (default "patched")
  -modules string
        The list of modules to load. Separate with ','
        (valid choices: cwd, exit, git, hg, host, jobs, perms, root, ssh, user, venv)
        (default "venv,user,ssh,host,cwd,perms,jobs,exit,root")
  -shell string
        Set this to your shell type
        (valid choices: bare, bash, zsh)
        (default "bash")
Bash

Add the following to your .bashrc (or .profile on Mac):

function _update_ps1() {
    PS1="$(~/.powerline/powerline-go -error $?)"
}

if [ "$TERM" != "linux" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
ZSH

Add the following to your .zshrc:

function powerline_precmd() {
    PS1="$(~/.powerline/powerline-go -error $? -shell zsh)"
}

function install_powerline_precmd() {
  for s in "${precmd_functions[@]}"; do
    if [ "$s" = "powerline_precmd" ]; then
      return
    fi
  done
  precmd_functions+=(powerline_precmd)
}

if [ "$TERM" != "linux" ]; then
    install_powerline_precmd
fi
Fish

Redefine fish_prompt in ~/.config/fish/config.fish:

function fish_prompt
    ~/.powerline/powerline-go -error $status -shell bare
end

Customization

Adding, Removing and Re-arranging segments

You can use the -modules argument to define which segments to draw, and in which order. Segments can also be repeated. Simply change the argument in your shell’s init to customize the prompt.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL