Vladimir Hodakov
b9a618a514
Distrobox is a modern containerized tool to run development workflows in the isolated spaces. Reviewed-on: #15 Co-authored-by: Vladimir Hodakov <vladimir@hodakov.me> Co-committed-by: Vladimir Hodakov <vladimir@hodakov.me>
102 lines
3.8 KiB
Bash
102 lines
3.8 KiB
Bash
# pztrn prompt theme
|
|
autoload -U add-zsh-hook
|
|
|
|
# Common vars array.
|
|
declare -A vars
|
|
# Prompt parts.
|
|
declare p_date p_tty p_plat p_userpwd p_shlvlhist p_rc p_end p_win p_path p_gitinfo
|
|
|
|
prompt_fat0troll_help () {
|
|
cat <<'EOF'
|
|
|
|
prompt pztrn
|
|
|
|
There is no colors to define
|
|
|
|
EOF
|
|
}
|
|
|
|
prompt_fat0troll_setup () {
|
|
emulate -L zsh
|
|
precmd_functions=(${precmd_functions[@]} "prompt_fat0troll_gitinfo" "prompt_fat0troll_createprompt")
|
|
vars['brackets_start']="%{$fg[yellow]%}[%{$reset_color%}"
|
|
vars['brackets_end']="%{$fg[yellow]%}]%{$reset_color%}"
|
|
|
|
# Session-dependend colorizing.
|
|
# Local will be black, remote and containers - yellow.
|
|
if [[ -n $SSH_TTY ]]; then
|
|
vars['console']="$vars['brackets_start']SSH$vars['brackets_end']"
|
|
vars['default_color']="%{$fg[cyan]%}"
|
|
elif test -e /run/.containerenv -o -e /.dockerenv; then
|
|
vars['console']="$vars['brackets_start']📦$vars['brackets_end']"
|
|
vars['default_color']="%{$fg[cyan]%}"
|
|
else
|
|
vars['console']=""
|
|
vars['default_color']="%{$fg[green]%}"
|
|
fi
|
|
|
|
p_date="$vars['brackets_start']$vars['default_color']%D{%a %Y/%m/%d %R}$vars['brackets_end']"
|
|
p_tty="$vars['brackets_start']$vars['default_color']%l$vars['brackets_end']"
|
|
p_plat="$vars['brackets_start']$vars['default_color']$(uname -r)$vars['brackets_end']"
|
|
|
|
[[ -n "$WINDOW" ]] && p_win="$WINDOW"
|
|
|
|
if [[ "$USER" == "root" ]]; then
|
|
vars['usercolor']="%{$fg[red]%}"
|
|
else
|
|
vars['usercolor']="%{$fg[blue]%}"
|
|
fi
|
|
|
|
p_hostname=$(hostname -f)
|
|
p_userpwd="$vars['brackets_start']$vars['usercolor']%n$reset_color@%{$fg[magenta]%}$p_hostname$vars['brackets_end']"
|
|
|
|
p_shlvlhist="$vars['brackets_start']$vars['default_color']%B%h%b$vars['brackets_end']"
|
|
p_rc="%(?..$vars['brackets_start']$fg[red]%?%1v$vars['brackets_end'])"
|
|
p_end="$vars['usercolor']%#%{$reset_color%} "
|
|
|
|
p_path="$vars['brackets_start']$vars['default_color'] %d $vars['brackets_end']"
|
|
|
|
# Initial prompt creation. On every cd it will be recreated with
|
|
# prompt_pztrn_createprompt function.
|
|
PROMPT="$p_date$p_tty$p_plat$p_userpwd$p_shlvlhist$p_rc$p_gitinfo
|
|
$vars['console']$p_path $p_end"
|
|
RPROMPT="$p_date$p_tty$p_plat$p_userpwd$p_shlvlhist$p_rc$p_gitinfo
|
|
$vars['console']$p_path $p_end"
|
|
PS2='%(4_.\.)%3_> %E'
|
|
|
|
watch=all
|
|
logcheck=5
|
|
WATCHFMT="$fg[green]%n$reset_color from $fg[magenta]%M$reset_color has $fg[green]%a$reset_color (%l) at %T %W"
|
|
|
|
}
|
|
|
|
prompt_fat0troll_gitinfo()
|
|
{
|
|
# Git repository information.
|
|
# Depends on 'gitinfo' application.
|
|
gitinfo_present=`declare -f gitinfo_check`
|
|
if [ $gitinfo_present ]; then
|
|
gitinfo_check
|
|
#echo $?
|
|
if [[ $? -eq 0 ]]; then
|
|
p_gitinfo_branch="$vars['brackets_start']$vars['usercolor']${GITINFO_BRANCH}$reset_color$vars['brackets_end']"
|
|
p_gitinfo_commit="$vars['brackets_start']%{$fg[magenta]%}${GITINFO_COMMIT_SHORTID}$reset_color (%{$fg[cyan]%}${GITINFO_COMMIT_COUNT}$reset_color)$vars['brackets_end']"
|
|
p_gitinfo_remotes="$vars['brackets_start']%{$fg[green]%}${GITINFO_REMOTES} remote(s)$reset_color$vars['brackets_end']"
|
|
p_gitinfo_files="$vars['brackets_start']%{$fg[green]%}${GITINFO_NEW_FILES}$reset_color new, %{$fg[yellow]%}${GITINFO_MODIFIED_FILES}$reset_color modified, %{$fg[red]%}${GITINFO_DELETED_FILES}$reset_color deleted, %{$fg[gray]%}${GITINFO_UNTRACKED_COUNT}$reset_color untracked$vars['brackets_end']"
|
|
p_gitinfo=$'\n'"$p_gitinfo_branch$p_gitinfo_commit$p_gitinfo_files$p_gitinfo_remotes"
|
|
else
|
|
p_gitinfo=""
|
|
fi
|
|
fi
|
|
}
|
|
|
|
prompt_fat0troll_createprompt()
|
|
{
|
|
PROMPT="$p_date$p_tty$p_plat$p_userpwd$p_shlvlhist$p_rc$p_gitinfo
|
|
$vars['console']$p_path $p_end"
|
|
RPROMPT="$p_date$p_tty$p_plat$p_userpwd$p_shlvlhist$p_rc$p_gitinfo
|
|
$vars['console']$p_path $p_end"
|
|
}
|
|
|
|
prompt_fat0troll_setup
|