mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-12-18 18:31:59 +00:00
126 lines
4.4 KiB
Bash
126 lines
4.4 KiB
Bash
#!/usr/bin/env zsh
|
||
# #
|
||
# # #README
|
||
# #
|
||
# # This theme provides two customizable header functionalities:
|
||
# # a) displaying a pseudo-random message from a database of quotations
|
||
# # (https://en.wikipedia.org/wiki/Fortune_%28Unix%29)
|
||
# # b) displaying randomly command line tips from The command line fu
|
||
# # (https://www.commandlinefu.com) community: in order to make use of this functionality
|
||
# # you will need Internet connection.
|
||
# # This theme provides as well information for the current user's context, like;
|
||
# # branch and status for the current version control system (git and svn currently
|
||
# # supported) and time, presented to the user in a non invasive volatile way.
|
||
# #
|
||
# # #REQUIREMENTS
|
||
# # This theme requires wget::
|
||
# # -Homebrew-osx- brew install wget
|
||
# # -Debian/Ubuntu- apt-get install wget
|
||
# # and fortune ::
|
||
# # -Homebrew-osx- brew install fortune
|
||
# # -Debian/Ubuntu- apt-get install fortune
|
||
# #
|
||
# # optionally:
|
||
# # -Oh-myzsh vcs plug-ins git and svn.
|
||
# # -Solarized theme (https://github.com/altercation/solarized/)
|
||
# # -OS X: iTerm 2 (https://iterm2.com/)
|
||
# # -font Source code pro (https://github.com/adobe/source-code-pro)
|
||
# #
|
||
# # This theme's look and feel is based on the Aaron Toponce's zsh theme, more info:
|
||
# # https://pthree.org/2008/11/23/727/
|
||
# # enjoy!
|
||
|
||
########## COLOR ###########
|
||
for COLOR in CYAN WHITE YELLOW MAGENTA BLACK BLUE RED DEFAULT GREEN GREY; do
|
||
eval PR_$COLOR='%{$fg[${(L)COLOR}]%}'
|
||
eval PR_BRIGHT_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
|
||
done
|
||
|
||
PR_RESET="%{$reset_color%}"
|
||
RED_START="${PR_RESET}${PR_GREY}<${PR_RESET}${PR_RED}<${PR_BRIGHT_RED}<${PR_RESET} "
|
||
RED_END="${PR_RESET}${PR_BRIGHT_RED}>${PR_RESET}${PR_RED}>${PR_GREY}>${PR_RESET} "
|
||
GREEN_END="${PR_RESET}${PR_BRIGHT_GREEN}>${PR_RESET}${PR_GREEN}>${PR_GREY}>${PR_RESET} "
|
||
GREEN_BASE_START="${PR_RESET}${PR_GREY}>${PR_RESET}${PR_GREEN}>${PR_BRIGHT_GREEN}>${PR_RESET}"
|
||
GREEN_START_P1="${PR_RESET}${GREEN_BASE_START}${PR_RESET} "
|
||
DIVISION="${PR_RESET}${PR_RED} < ${PR_RESET}"
|
||
VCS_DIRTY_COLOR="${PR_RESET}${PR_YELLOW}"
|
||
VCS_CLEAN_COLOR="${PR_RESET}${PR_GREEN}"
|
||
VCS_SUFIX_COLOR="${PR_RESET}${PR_RED}› ${PR_RESET}"
|
||
|
||
########## SVN ###########
|
||
ZSH_THEME_SVN_PROMPT_PREFIX="${PR_RESET}${PR_RED}‹svn:"
|
||
ZSH_THEME_SVN_PROMPT_SUFFIX=""
|
||
ZSH_THEME_SVN_PROMPT_DIRTY="${VCS_DIRTY_COLOR} ✘${VCS_SUFIX_COLOR}"
|
||
ZSH_THEME_SVN_PROMPT_CLEAN="${VCS_CLEAN_COLOR} ✔${VCS_SUFIX_COLOR}"
|
||
|
||
########## GIT ###########
|
||
ZSH_THEME_GIT_PROMPT_PREFIX="${PR_RESET}${PR_RED}‹git:"
|
||
ZSH_THEME_GIT_PROMPT_SUFFIX=""
|
||
ZSH_THEME_GIT_PROMPT_DIRTY="${VCS_DIRTY_COLOR} ✘${VCS_SUFIX_COLOR}"
|
||
ZSH_THEME_GIT_PROMPT_CLEAN="${VCS_CLEAN_COLOR} ✔${VCS_SUFIX_COLOR}"
|
||
ZSH_THEME_GIT_PROMPT_ADDED="${PR_RESET}${PR_YELLOW} ✚${PR_RESET}"
|
||
ZSH_THEME_GIT_PROMPT_MODIFIED="${PR_RESET}${PR_YELLOW} ✹${PR_RESET}"
|
||
ZSH_THEME_GIT_PROMPT_DELETED="${PR_RESET}${PR_YELLOW} ✖${PR_RESET}"
|
||
ZSH_THEME_GIT_PROMPT_RENAMED="${PR_RESET}${PR_YELLOW} ➜${PR_RESET}"
|
||
ZSH_THEME_GIT_PROMPT_UNMERGED="${PR_RESET}${PR_YELLOW} ═${PR_RESET}"
|
||
ZSH_THEME_GIT_PROMPT_UNTRACKED="${PR_RESET}${PR_YELLOW} ✭${PR_RESET}"
|
||
|
||
# Get a fortune quote
|
||
ps1_fortune() {
|
||
(( ${+commands[fortune]} )) && fortune
|
||
}
|
||
|
||
# Obtain a command tip
|
||
ps1_command_tip() {
|
||
{
|
||
if (( ${+commands[wget]} )); then
|
||
command wget -qO- https://www.commandlinefu.com/commands/random/plaintext
|
||
elif (( ${+commands[curl]} )); then
|
||
command curl -fsL https://www.commandlinefu.com/commands/random/plaintext
|
||
fi
|
||
} | sed 1d | sed '/^$/d'
|
||
}
|
||
|
||
function precmd_adben {
|
||
prompt_header() {
|
||
if [[ "$ENABLE_COMMAND_TIP" = true ]]; then
|
||
ps1_command_tip
|
||
else
|
||
ps1_fortune
|
||
fi
|
||
}
|
||
|
||
PROMPT_HEAD="${RED_START}${PR_YELLOW}$(prompt_header)${PR_RESET}"
|
||
|
||
# set a simple variable to show when in screen
|
||
if [[ -n "${WINDOW}" ]]; then
|
||
SCREEN=""
|
||
fi
|
||
}
|
||
|
||
# Context: user@directory or just directory
|
||
prompt_context() {
|
||
if [[ "$USERNAME" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
|
||
echo -n "${PR_RESET}${PR_RED}$USERNAME@%m${PR_RESET}${PR_BRIGHT_YELLOW}%~%<<${PR_RESET}"
|
||
else
|
||
echo -n "${PR_RESET}${PR_BRIGHT_YELLOW}%~%<<${PR_RESET}"
|
||
fi
|
||
}
|
||
|
||
########## SETUP ###########
|
||
|
||
# Required for the prompt
|
||
setopt prompt_subst
|
||
autoload zsh/terminfo
|
||
|
||
# Prompt
|
||
PROMPT='${PROMPT_HEAD}
|
||
${RED_START}$(prompt_context)
|
||
${GREEN_START_P1}'
|
||
RPROMPT='${PR_RESET}$(git_prompt_info)$(svn_prompt_info)${PR_YELLOW}%D{%R.%S %a %b %d %Y} ${GREEN_END}${PR_RESET}'
|
||
# Matching continuation prompt
|
||
PROMPT2='${GREEN_BASE_START}${PR_RESET} %_ ${GREEN_BASE_START}${PR_RESET} '
|
||
|
||
# Prompt head
|
||
autoload -Uz add-zsh-hook
|
||
add-zsh-hook precmd precmd_adben
|