diff --git a/README.md b/README.md index ada1ba1..a46742f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # zsh-prompt -simple prompt \ No newline at end of file +A simple prompt theme to use with 🎸 Rock plugin manager. + + +![sample_img](./img/photo.png) + diff --git a/img/photo.png b/img/photo.png new file mode 100644 index 0000000..a2c3ec2 Binary files /dev/null and b/img/photo.png differ diff --git a/zsh-prompt.zsh b/zsh-prompt.zsh new file mode 100644 index 0000000..e9b492d --- /dev/null +++ b/zsh-prompt.zsh @@ -0,0 +1,80 @@ +# A simple prompt based on https://github.com/isqua/bureau +ASYNC_PROC=0 + +git_prompt="" + +_prompt_setup () { + autoload -U colors && colors + autoload -Uz vcs_info add-zsh-hook + _prompt_git_staff + add-zsh-hook precmd _prompt_precmd + add-zsh-hook zshexit _prompt_exit + PROMPT=$(_prompt) +} + +_prompt () { + local color=green + if [ "$UID" = "0" ]; then color=red; fi + _display_arrow +} + +_prompt_git_staff() { + zstyle ':vcs_info:*' enable git + zstyle ':vcs_info:*' check-for-changes true + zstyle ':vcs_info:*' max-exports 2 + zstyle ':vcs_info:git*' stagedstr "%{$fg_bold[blue]%}●" + zstyle ':vcs_info:git*' unstagedstr "%{$fg_bold[red]%}●" + zstyle ':vcs_info:git*' formats "on %{$fg[blue]%}(%{$fg[red]%}%m%u%c%{$fg[yellow]%} %{$fg[magenta]%} %b%{$fg[blue]%})%{$reset_color%}" +} + +_prompt_precmd() { + local left="%{$fg[cyan]%}%c%{$reset_color%} $(_prompt_vcs_prompt &!)$git_prompt" + print -P "\n${left}" + if [[ "${ASYNC_PROC}" != 0 ]]; then + kill -s HUP $ASYNC_PROC >/dev/null 2>&1 || : + fi + ASYNC_PROC=$! +} + +_prompt_vcs_prompt () { + vcs_info + printf "%s" "$vcs_info_msg_0_" > "$(_prompt_temp_file)" + kill -s USR1 $$ +} + +_prompt_exit () { + rm -f "$(_prompt_temp_file)" 2> /dev/null +} + +_display_arrow() { + echo "%(?:%{$fg_bold[green]%}➙ : %{$fg_bold[red]%}➙ %{$reset_color%})" +} + +_prompt_string_width () { + local str=$1 + echo ${#${(S%%)str//(\%([KF1]|)\{*\}|\%[Bbkf])}} +} + +_prompt_temp_file() { + echo "/tmp/$(whoami)_zsh_rprompt.$$" +} + +TRAPUSR1 () { + git_prompt="$(cat $(_prompt_temp_file))" + ASYNC_PROC=0 + zle && zle .reset-prompt +} + + +function clear-scrollback-buffer { + clear + ASYNC_PROC=0 + _prompt_precmd + zle .reset-prompt && zle -R +} + +zle -N clear-scrollback-buffer +bindkey '^L' clear-scrollback-buffer + + +_prompt_setup $@