added the nwinkler_random_colors theme

pull/739/head
Cristian Lupascu 2016-06-08 13:23:47 +03:00
parent f0188122f8
commit 734c937232
3 changed files with 141 additions and 0 deletions

View File

@ -0,0 +1,29 @@
# Nwinkler Random Color Theme
## Description
The *Nwinkler Random Color* Theme is based on the [nwinkler theme](https://github.com/Bash-it/bash-it/wiki/Themes#nwinkler), but it randomizes the colors for:
* time
* username
* hostname
* path
The random colors are chosen the first time this theme is used and saved to the `~/.nwinkler_random_colors` file. So, the next time you connect to the same machine, you will get the same colors.
To force new random colors to be selected, run the command:
```sh
randomize_nwinkler
```
## Screenshot
Here it is in action:
![alt text](screenshot.png "Nwinkler Random Color Theme in Action!")
## Usage Scenario
This theme is especially useful when connecting to many different machines and switching between them often. Yes, the hostname *is* present in the prompt. But I argue that it's a lot faster to get a "feel" of what machine you are currently on because of the custom colors on that machine's prompt than by reading the hostname.

View File

@ -0,0 +1,112 @@
#!/bin/bash
# Two line prompt showing the following information:
# (time) SCM [username@hostname] pwd (SCM branch SCM status)
# →
#
# Example:
# (14:00:26) ± [foo@bar] ~/.bash_it (master ✓)
# →
#
# The arrow on the second line is showing the exit status of the last command:
# * Green: 0 exit status
# * Red: non-zero exit status
#
# The exit code functionality currently doesn't work if you are using the 'fasd' plugin,
# since 'fasd' is messing with the $PROMPT_COMMAND
RANDOM_COLOR_FILE=$HOME/.nwinkler_random_colors
function randomize_nwinkler {
declare -a AVAILABLE_COLORS
AVAILABLE_COLORS=(
$black
$red
$green
$yellow
$blue
$purple
$cyan
$white
$orange
$bold_black
$bold_red
$bold_green
$bold_yellow
$bold_blue
$bold_purple
$bold_cyan
$bold_white
$bold_orange
)
# Uncomment these to allow underlines:
#$underline_black
#$underline_red
#$underline_green
#$underline_yellow
#$underline_blue
#$underline_purple
#$underline_cyan
#$underline_white
#$underline_orange
#)
USERNAME_COLOR=${AVAILABLE_COLORS[$RANDOM % ${#AVAILABLE_COLORS[@]} ]}
HOSTNAME_COLOR=${AVAILABLE_COLORS[$RANDOM % ${#AVAILABLE_COLORS[@]} ]}
TIME_COLOR=${AVAILABLE_COLORS[$RANDOM % ${#AVAILABLE_COLORS[@]} ]}
PATH_COLOR=${AVAILABLE_COLORS[$RANDOM % ${#AVAILABLE_COLORS[@]} ]}
echo "$USERNAME_COLOR,$HOSTNAME_COLOR,$TIME_COLOR,$PATH_COLOR," > $RANDOM_COLOR_FILE
}
if [ -f $RANDOM_COLOR_FILE ];
then
# read the colors already stored in the file
IFS=',' read -ra COLORS < $RANDOM_COLOR_FILE
USERNAME_COLOR=${COLORS[0]}
HOSTNAME_COLOR=${COLORS[1]}
TIME_COLOR=${COLORS[2]}
PATH_COLOR=${COLORS[3]}
else
# No colors stored yet. Generate them!
randomize_nwinkler
echo
echo "Looks like you are using the nwinkler_random_color bashit theme for the first time."
echo "Random colors have been generated to be used in your prompt."
echo "If you don't like them, run the command:"
echo " randomize_nwinkler"
echo "until you get a combination that you like."
echo
fi
PROMPT_END_CLEAN="${green}${reset_color}"
PROMPT_END_DIRTY="${red}${reset_color}"
function prompt_end() {
echo -e "$PROMPT_END"
}
prompt_setter() {
local exit_status=$?
if [[ $exit_status -eq 0 ]]; then PROMPT_END=$PROMPT_END_CLEAN
else PROMPT_END=$PROMPT_END_DIRTY
fi
# Save history
history -a
history -c
history -r
PS1="(${TIME_COLOR}\t${reset_color}) $(scm_char) [${USERNAME_COLOR}\u${reset_color}@${HOSTNAME_COLOR}\H${reset_color}] ${PATH_COLOR}\w${reset_color}$(scm_prompt_info) ${reset_color}\n$(prompt_end) "
PS2='> '
PS4='+ '
}
PROMPT_COMMAND=prompt_setter
SCM_THEME_PROMPT_DIRTY=" ${bold_red}${normal}"
SCM_THEME_PROMPT_CLEAN=" ${bold_green}${normal}"
SCM_THEME_PROMPT_PREFIX=" ("
SCM_THEME_PROMPT_SUFFIX=")"
RVM_THEME_PROMPT_PREFIX=" ("
RVM_THEME_PROMPT_SUFFIX=")"

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB