summaryrefslogtreecommitdiff
path: root/11_Colors.zsh
blob: 0ca3f52804d2a9de451bd5f62f2527e47f706d3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
##
## Part of configuration files for Zsh 4
## by Hugues Hiegel <hugues@hiegel.fr>
## 
## NO WARRANTY PROVIDED, USE AT YOUR OWN RISKS
##
## You are encouraged to use, modify, and redistribute
## these files with or without this notice.
## 
typeset -A prompt_colors git_colors mail_colors correct_colors battery_colors date_colors agent_colors

# I hate kik00l0l colorized prompts, so I'm using a way to
# give a dominant color for each part of the prompt, each of
# these remain still configurable one by one.
# Take a look to set_prompt_colors for these colorizations.
#
# To set the dominant color I'm using this :
#
#  - PS1_ROOT when we are root
#  - PS1_USER for normal usage
#  - PS1_USER_SSH when we are connected through SSH
#
# I'm storing the resulting dominant color in $prompt_colors[generic]

PS1_ROOT=${PS1_ROOT:-$color[red]}
PS1_USER=${PS1_USER:-$color[blue]}
PS1_USER_SSH=${PS1_USER_SSH:-$color[magenta]}
PS1_USER_SCR=${PS1_USER_SCR:-$color[cyan]}
prompt_colors[generic]=`print -Pn "%(! $PS1_ROOT $PS1_USER)"`

normal_user && if ( [ "$SSH_TTY" != "" ] )
then
	# This allows us to easily distinguish shells
	# which really are on the local machine or not.
	# That's so good, use it ! :-)
	prompt_colors[generic]=${PS1_USER_SSH:-$prompt_colors[generic]}
fi
normal_user && if ( [ "$TERM" = "screen" ] )
then
	prompt_colors[generic]=${PS1_USER_SCR:-$prompt_colors[generic]}
fi

# 
# This func is intended to give a quick way to set the colors for the 
# prompt inside a running zsh-session
#
set_prompt_colors ()
{
	local my_generic
	my_generic=${1:-$prompt_colors[generic]}
	prompt_colors[bold_generic]="$my_generic;$color[bold]" ## Always bold generic color
	prompt_colors[soft_generic]=$(echo "$my_generic" | tr ';' '\n' | grep -v "^1$" | tr '\n' ';' | sed 's/\;$//') ## Always soft generic color

	prompt_colors[path]="$my_generic;$color[bold]"			# pwd
	#prompt_colors[term]="$my_generic"							# tty
	prompt_colors[user]="$my_generic"							# login
	prompt_colors[host]="$my_generic"							# hostname
	#prompt_colors[hist]="$color[none]"									# history number
	prompt_colors[arob]="$color[bold];$my_generic"	# <login>@<hostname>
	prompt_colors[dies]="$my_generic"							# the bottom-end of the prompt
	prompt_colors[doubledot]="$color[none]"							# separates pwd from git-branch
	#prompt_colors[paren]="$color[cyan]"					# parenthesis (around tty)
	prompt_colors[bar]="$my_generic;$color[bold]"				# horizontal bar
	prompt_colors[braces]="$prompt_colors[bar]"							# braces (around date)
	prompt_colors[error]="$color[bold];$color[yellow]"					# error code

	date_colors[normal]=$prompt_colors[soft_generic]
	date_colors[exec]=$prompt_colors[bold_generic]
	prompt_colors[date]=$date_colors[normal]							# full date

	prompt_colors[cmd]="$color[none]"									# command prompt
	prompt_colors[exec]="$color[none]"									# command output

	battery_colors[full]="$prompt_colors[soft_generic]"
	battery_colors[charging]="$prompt_colors[bold_generic]"
	battery_colors[uncharging]="$prompt_colors[soft_generic]"
	battery_colors[critical]="$color[bg-red];$prompt_colors[bold_generic]"

	mail_colors[unread]="$color[yellow];$color[bold]"		# mail received
	mail_colors[listes]="$my_generic;$color[bold]"		# less important mail received

	agent_colors[has_keys]="$color[bold];$color[yellow]"
	agent_colors[empty]="$prompt_colors[bold_generic]"

	prompt_colors[up_to_date]="$my_generic"						# up-to-date
	prompt_colors[not_up_to_date]="$color[green];$color[bold]" 	# not up to date
	prompt_colors[to_be_commited]="$color[yellow];$color[bold]"	# changes in cache

	git_colors[managment_folder]="$color[red];$color[bold]"   # .git/... folder browsing
	git_colors[cached]="$prompt_colors[to_be_commited]"                     # git changes in cache
	git_colors[cached_and_not_up_to_date]="$prompt_colors[not_up_to_date];$color[bold]"
	git_colors[not_up_to_date]="$prompt_colors[not_up_to_date];$color[normal]"     # git changes in working tree
	git_colors[up_to_date]="$prompt_colors[up_to_date]"                                     # git up-to-date
}

set_prompt_colors

correct_colors[error]="$color[red];$color[bold]"
correct_colors[suggest]="$color[blue];$color[bold]"