You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							196 lines
						
					
					
						
							5.6 KiB
						
					
					
				
			
		
		
	
	
							196 lines
						
					
					
						
							5.6 KiB
						
					
					
				# Created by thomasba <mail@thomasba·de>
 | 
						|
 | 
						|
prompt_tba_help () {
 | 
						|
  cat <<EOH
 | 
						|
This prompt is color-scheme-able.  You can invoke it thus:
 | 
						|
 | 
						|
  prompt tba [<text-color> [<parentheses-color> [<time-pwd-color>]]]
 | 
						|
 | 
						|
The default colors are white cyan. This theme works best with
 | 
						|
a dark background.
 | 
						|
EOH
 | 
						|
}
 | 
						|
 | 
						|
prompt_tba_setup () {
 | 
						|
	setopt prompt_subst
 | 
						|
 | 
						|
	local text_col=${1:-'white'}
 | 
						|
	local parens_col=${2:-'cyan'}
 | 
						|
	local time_col=${3:-'yellow'}
 | 
						|
	
 | 
						|
	local text="%b%F{$text_col}"
 | 
						|
	local parens="%b%F{$parens_col}"
 | 
						|
	local punct="%B%F{black}"
 | 
						|
	local reset="%b%f"
 | 
						|
	
 | 
						|
	local lpar="$parens($text"
 | 
						|
	local rpar="$parens)$text"
 | 
						|
	
 | 
						|
	local time_color="%b%F{$time_col}"
 | 
						|
	local red="%B%F{red}"
 | 
						|
	local yellow="%B%F{yellow}"
 | 
						|
	local green="%b%F{green}"
 | 
						|
	local hostname="%B%F{green}"
 | 
						|
	local user_color="%b%F{green}"
 | 
						|
	if [[ "$(id -u)" = "0" ]] ; then
 | 
						|
		user_color="%B%F{red}"
 | 
						|
	fi
 | 
						|
	
 | 
						|
	precmd () {
 | 
						|
		# let's get the current get branch that we are under
 | 
						|
		# ripped from /etc/bash_completion.d/git from the git devs
 | 
						|
		git_ps1 () {
 | 
						|
		    if which git > /dev/null; then
 | 
						|
		        local g="$(git rev-parse --git-dir 2>/dev/null)"
 | 
						|
		        if [ -n "$g" ]; then
 | 
						|
		            local r
 | 
						|
		            local b
 | 
						|
					local date=$(git log --pretty=format:%cd --date=short -n1)
 | 
						|
					local v=$(git describe --tags --always)
 | 
						|
		            if [ -d "$g/rebase-apply" ]; then
 | 
						|
		                if test -f "$g/rebase-apply/rebasing"; then
 | 
						|
		                    r="|REBASE"
 | 
						|
		                elif test -f "$g/rebase-apply/applying"; then
 | 
						|
		                    r="|AM"
 | 
						|
		                else
 | 
						|
		                    r="|AM/REBASE"
 | 
						|
		                fi
 | 
						|
		                b="$(git symbolic-ref HEAD 2>/dev/null)"
 | 
						|
		            elif [ -f "$g/rebase-merge/interactive" ]; then
 | 
						|
		                r="|REBASE-i"
 | 
						|
		                b="$(cat "$g/rebase-merge/head-name")"
 | 
						|
		            elif [ -d "$g/rebase-merge" ]; then
 | 
						|
		                r="|REBASE-m"
 | 
						|
		                b="$(cat "$g/rebase-merge/head-name")"
 | 
						|
		            elif [ -f "$g/MERGE_HEAD" ]; then
 | 
						|
		                r="|MERGING"
 | 
						|
		                b="$(git symbolic-ref HEAD 2>/dev/null)"
 | 
						|
		            else
 | 
						|
		                if [ -f "$g/BISECT_LOG" ]; then
 | 
						|
		                    r="|BISECTING"
 | 
						|
		                fi
 | 
						|
		                if ! b="$(git symbolic-ref HEAD 2>/dev/null)"; then
 | 
						|
		                   if ! b="$(git describe --exact-match HEAD 2>/dev/null)"; then
 | 
						|
		                      b="$(cut -c1-7 "$g/HEAD")..."
 | 
						|
		                   fi
 | 
						|
		                fi
 | 
						|
		            fi
 | 
						|
		            if [ -n "$1" ]; then
 | 
						|
		                 printf "$1·%s·%s" "${b##refs/heads/}$r" "$date" "$v"
 | 
						|
		            else
 | 
						|
		                 printf "%s·%s·%s" "${b##refs/heads/}$r" "$date" "$v"
 | 
						|
		            fi
 | 
						|
		        fi
 | 
						|
		    else
 | 
						|
		        printf ""
 | 
						|
		    fi
 | 
						|
		}
 | 
						|
		
 | 
						|
		GITBRANCH="$(git_ps1)"
 | 
						|
		if [ -n "$GITBRANCH" ] ; then
 | 
						|
			GITBRANCH=" g:$GITBRANCH"
 | 
						|
		fi
 | 
						|
		
 | 
						|
		# The following 9 lines of code comes directly from Phil!'s ZSH prompt
 | 
						|
		# http://aperiodic.net/phil/prompt/
 | 
						|
		local TERMWIDTH
 | 
						|
		(( TERMWIDTH = ${COLUMNS} - 1 ))
 | 
						|
		
 | 
						|
		#local PROMPTSIZE=${#${(%):--- %D{%R.%S %a %b %d %Y}\! }}
 | 
						|
		local PROMPTSIZE=${#${(%):----%n-%m----0000-00-00 00:00----}}
 | 
						|
		
 | 
						|
		local PWDSIZE=${#${(%):-%~}}
 | 
						|
	
 | 
						|
		if [[ "$PROMPTSIZE + $PWDSIZE" -gt $TERMWIDTH ]]; then
 | 
						|
			(( PR_PWDLEN = $TERMWIDTH - $PROMPTSIZE ))
 | 
						|
		fi
 | 
						|
		
 | 
						|
		# set a simple variable to show when in screen
 | 
						|
		if [[ -n "${WINDOW}" ]]; then
 | 
						|
		    SCREEN=" S:${WINDOW}"
 | 
						|
		else
 | 
						|
		    SCREEN=""
 | 
						|
		fi
 | 
						|
		
 | 
						|
		# check if jobs are executing
 | 
						|
		if [[ $(jobs | wc -l) -gt 0 ]]; then
 | 
						|
		    JOBS=" J:%j"
 | 
						|
		else
 | 
						|
		    JOBS=""
 | 
						|
		fi
 | 
						|
		
 | 
						|
		# I want to know my battery percentage when running on battery power
 | 
						|
		if which acpi &> /dev/null; then
 | 
						|
		    local BATTSTATE="$(LANG=en_US acpi -b 2> /dev/null)"
 | 
						|
		    local BATTPRCNT="$(echo ${BATTSTATE[(w)4]}|sed -r 's/(^[0-9]+).*/\1/')"
 | 
						|
		    local BATTCHRG="$(echo ${BATTSTATE[(w)3]}|sed -r 's/(^[A-Za-z]+).*/\1/')"
 | 
						|
			# reset values
 | 
						|
			BAT=""
 | 
						|
			BAT_CHRG=""
 | 
						|
			BAT_CRIT=""
 | 
						|
			BAT_LOW=""
 | 
						|
			# set actual value
 | 
						|
		    if [[ -z "${BATTPRCNT}" ]]; then
 | 
						|
		        BAT=""
 | 
						|
			elif [[ "${BATTCHRG}" == "Charging" ]] ; then
 | 
						|
		        BAT_CHRG=" ${green}B:${BATTPRCNT}%%"
 | 
						|
		    elif [[ "${BATTPRCNT}" -lt 20 ]]; then
 | 
						|
		        BAT_CRIT=" ${red}B:${BATTPRCNT}%%"
 | 
						|
		    elif [[ "${BATTPRCNT}" -lt 40 ]]; then
 | 
						|
		        BAT_LOW=" ${yellow}B:${BATTPRCNT}%%"
 | 
						|
		    else
 | 
						|
		        BAT=" B:${BATTPRCNT}%%"
 | 
						|
		    fi
 | 
						|
		fi
 | 
						|
		
 | 
						|
	
 | 
						|
		IS_SSH_CONN=""
 | 
						|
		if [ -n "$SSH_CONNECTION" ] ; then
 | 
						|
			IS_SSH_CONN=" ⚡"
 | 
						|
		fi
 | 
						|
	}
 | 
						|
 | 
						|
	# If I am using vi keys, I want to know what mode I'm currently using.
 | 
						|
	# zle-keymap-select is executed every time KEYMAP changes.
 | 
						|
	# From http://zshwiki.org/home/examples/zlewidgets
 | 
						|
	zle-keymap-select() {
 | 
						|
	    VIMODE="${${KEYMAP/vicmd/ vim:command}/(main|viins)}"
 | 
						|
	    RPROMPT2="${PR_BOLD_BLUE}${VIMODE}"
 | 
						|
	    zle reset-prompt
 | 
						|
	}
 | 
						|
	zle -N zle-keymap-select
 | 
						|
 | 
						|
 | 
						|
	PS1="$parens┌─[ $user_color%n$text@$hostname%m$reset $parens]─($reset$time_color%D{%Y-%m-%d %H:%M}$reset$parens)─→ \
 | 
						|
$reset$time_color%\${PR_PWDLEN}<...<%~%<<\
 | 
						|
$reset\
 | 
						|
 | 
						|
$parens├─($red\${IS_SSH_CONN}%(?.. E:%?)$green\${BAT_CHRG}$yellow\${BAT_LOW}$red\${BAT_CRIT}$text\${BAT}\${SCREEN}\${JOBS}\
 | 
						|
\${GITBRANCH} $parens)$reset\
 | 
						|
 | 
						|
$parens└─[%(!.#.$)]${text} "
 | 
						|
	PS2="$parens└─[$reset $parens%_$reset $parens]──→$reset "
 | 
						|
	PS3="$parens╶─[$text?#$parens]──→$reset "
 | 
						|
	PS4="$parens├──→$reset "
 | 
						|
	prompt_opts=(cr subst percent)
 | 
						|
}
 | 
						|
 | 
						|
prompt_tba_preview () {
 | 
						|
  local color colors
 | 
						|
  colors=(red yellow green blue magenta)
 | 
						|
 | 
						|
  if (( ! $#* )); then
 | 
						|
    for (( i = 1; i <= $#colors; i++ )); do
 | 
						|
      color=$colors[$i]
 | 
						|
      prompt_preview_theme tba $color
 | 
						|
      (( i < $#colors )) && print
 | 
						|
    done
 | 
						|
  else
 | 
						|
    prompt_preview_theme tba "$@"
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
#prompt_tba_setup "$@"
 | 
						|
 | 
						|
# Vim: set ft=zsh :
 |