Shell prompts¶
Note
Powerline can operate without a background daemon, but the shell performance can be very slow. The Powerline daemon improves this performance significantly, but must be started separately. It is advised to add
powerline-daemon -q
before any other powerline-related code in the shell configuration file.
Bash prompt¶
Add the following line to the bashrc
, where {repository_root}
is the
absolute path to the Powerline installation directory (see repository root):
. {repository_root}/powerline/bindings/bash/powerline.sh
Note
Since without powerline daemon bash bindings are very slow PS2 (continuation) and PS3 (select) prompts are not set up. Thus it is advised to use
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. {repository_root}/powerline/bindings/bash/powerline.sh
in the bash configuration file. Without POWERLINE_BASH_*
variables PS2
and PS3 prompts are computed exactly once at bash startup.
Warning
At maximum bash continuation PS2 and select PS3 prompts are computed each time main PS1 prompt is computed. Thus putting e.g. current time into PS2 or PS3 prompt will not work as expected.
At minimum they are computed once on startup.
Zsh prompt¶
Add the following line to the zshrc
, where {repository_root}
is the
absolute path to the Powerline installation directory (see repository root):
. {repository_root}/powerline/bindings/zsh/powerline.zsh
Fish prompt¶
Add the following line to config.fish
, where {repository_root}
is
the absolute path to the Powerline installation directory (see repository
root):
set fish_function_path $fish_function_path "{repository_root}/powerline/bindings/fish"
powerline-setup
Warning
Fish is supported only starting from version 2.1.
Rcsh prompt¶
Powerline supports Plan9 rc reimplementation by Byron Rakitzis packaged by many *nix distributions. To use it add
. {repository_root}/powerline/bindings/rc/powerline.rc
({repository_root}
is the absolute path to the Powerline installation
directory, see repository root) to rcrc
file
(usually ~/.rcrc
) and make sure rc
is started as a login shell (with
-l
argument): otherwise this configuration file is not read.
Warning
Original Plan9 shell and its *nix port are not supported because they are
missing prompt
special function (it is being called once before each
non-continuation prompt). Since powerline could not support shell without
this or equivalent feature some other not-so-critical features of that port
were used.
Busybox (ash), mksh and dash prompt¶
After launching busybox run the following command:
. {repository_root}/powerline/bindings/shell/powerline.sh
where {repository_root}
is the absolute path to the Powerline installation
directory (see repository root).
Mksh users may put this line into ~/.mkshrc
file. Dash users may use the
following in ~/.profile
:
if test "$0" != "${0#dash}" ; then
export ENV={repository_root}/powerline/bindings/shell/powerline.sh
fi
Note
Dash users that already have $ENV
defined should either put the .
…/shell/powerline.sh
line in the $ENV
file or create a new file which
will source (using .
command) both former $ENV
file and
powerline.sh
files and set $ENV
to the path of this new file.
Warning
Mksh users have to set $POWERLINE_SHELL_CONTINUATION
and
$POWERLINE_SHELL_SELECT
to 1 to get PS2 and PS3 (continuation and
select) prompts support respectively: as command substitution is not
performed in these shells for these prompts they are updated once each time
PS1 prompt is displayed which may be slow.
It is also known that while PS2 and PS3 update is triggered at PS1 update it is actually performed only next time PS1 is displayed which means that PS2 and PS3 prompts will be outdated and may be incorrect for this reason.
Without these variables PS2 and PS3 prompts will be set once at startup. This only touches mksh users: busybox and dash both have no such problem.
Warning
Job count is using some weird hack that uses signals and temporary files for interprocess communication. It may be wrong sometimes. Not the case in mksh.
Warning
Busybox has two shells: ash
and hush
. Second is known to segfault in
busybox 1.22.1 when using powerline.sh
script.
Python Virtual Environments (conda, pyenv)¶
If your system uses virtual environments to manage different Python versions, such as pyenv or anaconda, these tools will add a performance delay to every shell prompt. This delay can be bypassed by explicitly specifying your command path.
export POWERLINE_COMMAND={path_to_powerline}
where {path_to_powerline}
is the full filepath for powerline. If you
installed Powerline within an environment, you can find this path for pyenv
with pyenv which powerline
or for conda with which powerline
.