added the nwinkler_random_colors theme
parent
f0188122f8
commit
734c937232
|
|
@ -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:
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||
|
|
@ -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 |
Loading…
Reference in New Issue