# fancy-prompt [![Build status](https://travis-ci.org/doy/fancy-prompt.svg)](https://travis-ci.org/doy/fancy-prompt) `fancy-prompt` is an improved shell prompt with several useful features. ## Screenshots ![Screenshots of fancy-prompt](screenshots/fancy-prompt.png) ## Features * Git integration * Battery meter * Customizable colors ## Installation `fancy-prompt` is a command which generates prompt output directly. First, install the `fancy-prompt` binary itself: ``` cargo install fancy-prompt ``` Then, configure fancy-prompt for your shell: ### `zsh` ``` function shell_prompt_precmd () { PROMPT=`fancy-prompt --prompt-escape zsh $?` } precmd_functions+=(shell_prompt_precmd) ``` ### `bash` ``` export PROMPT_COMMAND="__err=\$?;$PROMPT_COMMAND;PS1=\"\$(fancy-prompt --prompt-escape bash "\$__err")\"" ``` ### `fish` ``` function fish_prompt fancy-prompt $status end ``` ## Configuration You can customize the colors that `fancy-prompt` uses via the `FANCY_PROMPT_COLORS` environment variable. It should contain a `,`-separated list of key-value pairs separated by `=`. For instance: ``` export FANCY_PROMPT_COLORS=user_doy=bright_blue,host_lance=red ``` ### Color names * `black` * `blue` * `cyan` * `green` * `magenta` * `red` * `white` * `yellow` * `bright_black` * `bright_blue` * `bright_cyan` * `bright_green` * `bright_magenta` * `bright_red` * `bright_white` * `bright_yellow` ### Display element names * `user_%s`: Color of the username and the prompt character for that username. * `host_%s`: Color of the hostname and various highlight elements of the prompt (to help visually differentiate between being logged into different hosts). * `path_not_writable`: Color of the path when you are in a directory without write permissions. * `path_not_exist`: Color of the path when you are in a directory that no longer exists. * `vcs_dirty`: Color of the VCS output when the local repository has changes that are not in the upstream repository. * `vcs_error`: Color of the VCS output when there was an error determining repository state. * `battery_full`: Color of the battery meter when the battery is above 80%. * `battery_warn`: Color of the battery meter when the battery is between 15% and 40%. * `battery_crit`: Color of the battery meter when the battery is between 5% and 15%. * `battery_emerg`: Color of the battery meter when the battery is below 5%. * `battery_charging`: Color of the battery meter when the battery is charging. * `default`: Default color of unimportant parts of the prompt. * `error`: Color to use for errors in parts of the prompt that don't have their own error color. ## Contributing I am very interested in patches to make the prompt more useful or configurable. Currently it has a very limited amount of configurability because it works for me and I don't want to spend time on extra configurability that nobody will use, but if there is something you want, let me know (or send patches) and I'll see what i can do. One thing to keep in mind is that in order to be useful, the prompt needs to run as quickly as possible. Try to avoid features that add unnecessary latency to the prompt display.