Pureline is currently in development and subject to frequent changes. Updates are likely to change the format of the configuration file and therefore break configuration files from previous versions. Please be aware when updating, it is highly likely you will need to change your config file!
A simple but powerful Powerline style prompt for the Bash shell written in Bash script.
Pureline was inspired by Bash-Powerline-Shell and is designed to make configuration easy, using either full 256 color or just the basic terminal colors - allowing colors to be set by the terminal (eg Xresources or profiles).
Segments for the PS1 prompt include (with some environment varibale options);
Time: shows the current time
Battery: a battery power indicator
User: shows the user name with an option to show the hostname (or IP address)
SSH: visible only when on an SSH connection. Option to show the IP or hostname
Path: shows the current directory with options for;
Read Only: an indicator for read only directories
Jobs: show the number of running background jobs
Virtual Environment: shows the name of an active python virtual environment
AWS Profile: shows the current AWS_PROFILE
for cli interaction with AWS.
Git: shows only when the directory is a git repository. Options are;
Return Code: shows the return code when last command fails
Prompt: a simple prompt, useful after after a Newline
Newline: split the prompt across one or more lines
Git_stash: shows number of a git stash
Git_ahead_behind: status against upstream
All the segments are optional and can be enabled or disabled in a config file.
⚑
⏎
followed by numberλ
☁
⚡
▮
& Git Stash: 🐿
✚
✔
✘
Some of the unicode symbols require a special font to be used in your terminal. Please use one of the powerline fonts available at: https://github.com/Lokaltog/powerline-fonts
Almost all current terminals have the unicode support needed by PureLine. If you have used PowerLine fonts before, then you already know if Pureline will be supported in your terminal. But if you do have issues with any of the symbols, try testing a different terminal, eg, uxterm
in place of xterm
.
brew install bash
echo $(brew --prefix)/bin/bash | sudo tee -a /private/etc/shells
cat /private/etc/shells
chpass -s $(brew --prefix)/bin/bash
$ git clone https://github.com/chris-marsh/pureline.git
$ cp pureline/configs/powerline_full_256col.conf ~/.pureline.conf
Source the pureline
script by adding the following line to your .bashrc
or .profile
, whichever is used:
source ~/pureline/pureline ~/.pureline.conf
The powerline fonts need more effort to work on tty screens, so a useful tip is to only source PureLine if you are on a gui;
if [ "$TERM" != "linux" ]; then
source ~/pureline/pureline ~/.pureline.conf
fi
Note on some terminals, when scrolling at the bottom of the screen, long line wrapped prompts, can cause background color to bleed between lines. If you experience this please set PL_ERASE_TO_EOL=true
.
Some example configuration files are provided. The config file contains lines which are sourced by PureLine. The segments to be used are listed in the PL_segmentS environment variablee;
PL_SEGMENTS=(
# Segment Background Foreground
'user_segment Yellow Black'
'path_segment Blue Black'
'read_only_segment Red White'
)
To remove a segment, comment or delete the relevant line. You can rearrange the segments in any order you prefer. The first two parameters are background and foreground colors which can be customized. Some segments may have additional options.
The colors default colors available are:
Using these colors, your command prompt will use the color theme of your terminal.
You can also define your own custom colors in the config file;
PL_COLORS[Orange]='\[\e[38;5;208m\]' # 256 Col Orange Foreground
PL_COLORS[On_Orange]='\[\e[48;5;208m\]' # 256 Col Orange Background
PL_COLORS[LightGrey]='\[\e[38;5;250m\]' # 256 Col Light Grey Foreground
PL_COLORS[On_LightGrey]='\[\e[48;5;250m\]' # 256 Col Light Grey Background
PL_COLORS[DarkGrey]='\[\e[38;5;240m\]' # 256 Col Dark Grey Foreground
PL_COLORS[On_DarkGrey]='\[\e[48;5;240m\]' # 256 Col Dark Grey Background
The colors must be defined in pairs of background and foreground colors.
New segments can be easily created by following a template from existing functions. For example:
function time_segment {
local bg_color=$1 # Set the background color
local fg_color=$2 # Set the foregropund color
local content="\t" # Set the content to be displayed
PS1+=$(segment_end $bg_color)
PS1+=$(segment_content $fg_color $bg_color " $content ")
__last_color=$bg_color
}
The $content variable can be modified to show any output wanted on the prompt.
You can place segment code anywhere it will be sourced:
pureline/segments
directory. The file name and function name must be the same. Eg ./pureline/segments/battery_segment
will have the segment function named as function battery_segment {}