slick

async ZSH prompt

example

How to use

Install:

cargo install slick

check your PATH $HOME/.cargo/bin/slick, to install cargo: curl https://sh.rustup.rs -sSf | sh

Then add this to your .zshrc:

```sh zle -N zle-keymap-select zle -N zle-line-init zmodload zsh/datetime autoload -Uz add-zsh-hook add-zsh-hook precmd slickpromptprecmd add-zsh-hook preexec slickpromptpreexec

typeset -g slickpromptdata typeset -g slickprompttimestamp

SLICK_PATH=$HOME/.cargo/bin/slick

function slickpromptrefresh { local exitstatus=$? read -r -u $1 slickpromptdata PROMPT=$($SLICKPATH prompt -k "$KEYMAP" -r $exitstatus -d ${slickpromptdata:-""} -t ${slickprompttimestamp:-$EPOCHSECONDS}) unset slickprompt_timestamp

zle reset-prompt

# Remove the handler and close the fd
zle -F $1
exec {1}<&-

}

function zle-line-init zle-keymap-select { PROMPT=$($SLICKPATH prompt -k "$KEYMAP" -d ${slickprompt_data:-""}) zle && zle reset-prompt }

function slickpromptprecmd() { slickpromptdata="" exec {FD}< <($SLICKPATH precmd) zle -F $FD slickprompt_refresh }

function slickpromptpreexec() { slickprompttimestamp=$EPOCHSECONDS } ```

customizations

Set this environment variables to change color/symbols, for example:

export SLICK_PROMPT_CMD_MAX_EXEC_TIME=3
export SLICK_PROMPT_ERROR_COLOR=88
export SLICK_PROMPT_GIT_ACTION_COLOR=1
export SLICK_PROMPT_GIT_BRANCH_COLOR=202
export SLICK_PROMPT_GIT_FETCH=0
export SLICK_PROMPT_GIT_MASTER_BRANCH_COLOR=white
export SLICK_PROMPT_GIT_REMOTE_COLOR=40
export SLICK_PROMPT_GIT_STAGED_COLOR=1
export SLICK_PROMPT_GIT_STATUS_COLOR=cyan
export SLICK_PROMPT_PATH_COLOR=blue
export SLICK_PROMPT_ROOT_COLOR="red"
export SLICK_PROMPT_ROOT_SYMBOL="#"
export SLICK_PROMPT_SSH_COLOR=2
export SLICK_PROMPT_SYMBOL="❯"
export SLICK_PROMPT_SYMBOL_COLOR=magenta
export SLICK_PROMPT_TIME_ELAPSED_COLOR=1
export SLICK_PROMPT_VICMD_COLOR="yellow"
export SLICK_PROMPT_VICMD_SYMBOL="❮"

SLICK_PROMPT_GIT_FETCH=0 prevents doing a git fetch


Inspired by: