Customize Prompt
In bash, you can customize your shell prompt by setting PS1
environment
variable. In cicada, we can do this by setting PROMPT
env in
RC-file.
By default, $PROMPT
uses the following value:
export PROMPT="${COLOR_STATUS}$USER${RESET}@${COLOR_STATUS}$HOSTNAME${RESET}: ${COLOR_STATUS}$CWD${RESET}$ "
The prompt will look like this:
username@hostname: current-dir$
Available Prompt items
A prompt item is prompt value fields like $USER
, ${COLOR_STATUS}
etc.
Note $XYZ
is the same as ${XYZ}
, and $XYZ
is the same as $xyz
.
Prompt Item | Description |
---|---|
${CWD} | current work directory base name. e.g. baz for dir /foo/bar/baz . |
${HOSTNAME} | system hostname. |
${NEWLINE} | the newline char: \n . |
${USER} | system user name. |
${BLACK} | change terminal color to black. |
${BLACK_B} | change terminal color to bold black. |
${BLACK_BG} | change terminal color to background black. |
${BLUE} | change terminal color to blue. |
${BLUE_B} | change terminal color to bold blue. |
${BLUE_BG} | change terminal color to background blue. |
${BLUE_L} | change terminal color to background light blue. |
${BLUE_L_BG} | change terminal color to background light blue. |
${GITBR} | show git branch name (if inside a repo). |
${GRAY} | change terminal color to gray. |
${GRAY_D} | change terminal color to dark gray. |
${GREEN} | change terminal color to green. |
${GREEN_B} | change terminal color to bold green. |
${GREEN_BG} | change terminal color to background green. |
${GREEN_L} | change terminal color to background light green. |
${GREEN_L_BG} | change terminal color to background light green. |
${RED} | change terminal color to red. |
${RED_B} | change terminal color to bold red. |
${RED_BG} | change terminal color to background red. |
${RED_L} | change terminal color to background light red. |
${RED_L_BG} | change terminal color to background light red. |
${WHITE} | change terminal color to white. |
${WHITE_B} | change terminal color to bold white. |
${WHITE_BG} | change terminal color to background white. |
Other Colors | Others color names available: $CYAN , $MAGENTA , $GRAY , $GRAY_D , etc. Most of them can add suffixes: _L , _BG , _L_BG etc |
${COLOR_STATUS} | change terminal color to green_b /red_b based on last exit status code. |
${BOLD} | make text bold/bright. |
${DIM} | Make text dim. |
${HIDDEN} | Make text hidden. |
${BLINK} | Make text blink. |
${UNDERLINED} | Underlined text. |
${REVERSE} | Invert the foreground and background colors. |
${RESET} | reset terminal color & format. |
${RESET_BLINK} | reset blink. |
${RESET_BOLD} | reset bold. |
${RESET_DIM} | reset dim. |
${RESET_HIDDEN} | reset hidden. |
${RESET_REVERSE} | reset reverse. |
${RESET_UNDERLINED} | reset underlined. |
${SEQ} | Starts a terminal escape sequence |
${END_SEQ} | Ends a terminal escape sequence |
${ESC} | Represents a \e char in an escape sequence. |
Note you can also use regular environment variables that not in the list, like $HOME
, in the $PROMPT
value.
Use Extra Colors
If you try following command in your terminal:
$ bash -c 'echo -e "\e[1;31;42m Hello \e[30;48;5;82m World \e[0m"'
You would see effects like this: Check here for more colors.
You could do the same theme by defining PROMPT
in your
RC-file like
following:
export PROMPT="${SEQ}${ESC}[1;31;42m${END_SEQ} $USER ${SEQ}${ESC}[30;48;5;82m${END_SEQ} $CWD ${RESET} "
You need to put those colors sequences into pair of $SEQ / $END_SEQ
, and also
need to use $ESC
as the char of Escape char \e
.
Python Virtual Env in Prompt
See also the vox builtin.
When you enter a virtual env, the prompt will prefix by (pyenv-name)
. e.g.
(evn-test)mitnk:mbp: pip$
.
Use sub-Command Output in Prompt
You can use $(the cmd line)
in prompt, and the output of command
the cmd line
will be rendered in prompt. e.g.
export PROMPT="[$(git rev-parse --abbrev-ref HEAD)] $USER@HOSTNAME$ "
would render prompt with:
$ [master] mitnk@mpb$
WARNING: when CICADA_ENABLE_SIG_HANDLER is enabled, use in-line command in prompt could cause cicada crash, with error message like
BUG IN CLIENT OF LIBPLATFORM: Trying to recursively lock an os_unfair_lock
. View detailed logs