mirror of
https://github.com/ohmybash/oh-my-bash.git
synced 2024-05-11 05:55:37 +00:00
95 lines
2.9 KiB
Bash
95 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
# vim: ft=bash ts=2 sw=2 sts=2
|
|
#
|
|
# absimple theme: a fork of the agnoster theme
|
|
#
|
|
# Tested on Termux in Android 2022-02-15
|
|
#
|
|
# The aim of this theme is to only show you relevant information: The
|
|
# git information will only be shown in a git working directory.
|
|
# Similarly, everything will be displayed automatically when
|
|
# appropriate, including the current user and the hostname, whether
|
|
# the last call exited with an error, and whether background jobs are
|
|
# running in this shell.
|
|
|
|
|
|
# Note: a most part of this theme is the same as "agnoster", so let us source
|
|
# the original theme "agnoster" and just override its functions. In this way,
|
|
# the maintenance becomes easier.
|
|
source "$OSH/themes/agnoster/agnoster.theme.sh"
|
|
|
|
######################################################################
|
|
### Segment drawing
|
|
# A few utility functions to make it easy and re-usable to draw segmented prompts
|
|
|
|
|
|
# prints history followed by HH:MM, useful for remembering what
|
|
# we did previously
|
|
function prompt_histdt {
|
|
prompt_segment black default "\!" # \A"
|
|
}
|
|
|
|
# Dir: current working directory
|
|
function prompt_dir {
|
|
prompt_segment blue black '\W'
|
|
}
|
|
|
|
######################################################################
|
|
|
|
# quick right prompt I grabbed to test things.
|
|
function __command_rprompt {
|
|
local times= n=$COLUMNS tz
|
|
for tz in ZRH:Europe/Zurich PIT:US/Eastern \
|
|
MTV:US/Pacific TOK:Asia/Tokyo; do
|
|
[ $n -gt 40 ] || break
|
|
times="$times ${tz%%:*}\e[30;1m:\e[0;36;1m"
|
|
times="$times$(TZ=${tz#*:} date +%H:%M:%S)\e[0m"
|
|
n=$(( $n - 10 ))
|
|
done
|
|
[ -z "$times" ] || printf "%${n}s$times\\r" ''
|
|
}
|
|
|
|
######################################################################
|
|
## Main prompt
|
|
|
|
function build_prompt {
|
|
[[ ! -z ${AG_EMACS_DIR+x} ]] && prompt_emacsdir
|
|
prompt_status
|
|
[[ -z ${AG_NO_HIST+x} ]] && prompt_histdt
|
|
#[[ -z ${AG_NO_CONTEXT+x} ]] && prompt_context
|
|
if [[ ${OMB_PROMPT_SHOW_PYTHON_VENV-} ]]; then
|
|
prompt_virtualenv
|
|
prompt_condaenv
|
|
fi
|
|
prompt_dir
|
|
prompt_git
|
|
prompt_end
|
|
}
|
|
|
|
# from orig...
|
|
# export PS1='$(ansi_single $(text_effect reset)) $(build_prompt) '
|
|
# this doesn't work... new model: create a prompt via a PR variable and
|
|
# use that.
|
|
|
|
function _omb_theme_PROMPT_COMMAND {
|
|
local RETVAL=$?
|
|
local PRIGHT=""
|
|
local CURRENT_BG=NONE
|
|
local PR="$(ansi_single $(text_effect reset))"
|
|
build_prompt
|
|
|
|
PS1=""
|
|
# date randomly or once per hour
|
|
if (( $(shuf -i 1-20 -n 1 --random-source=/dev/urandom) == 1 )) ; then #TK || (($PSDATE != $(date +%H))) ; then
|
|
PS1+="\$(date +%a) $(date +%Y-%m-%d) "
|
|
fi
|
|
PSDATE=$(date +%H)
|
|
# ... and time
|
|
PS1+="$(date +%H:%M:%S) "
|
|
|
|
# uncomment below to use right prompt
|
|
# PS1='\[$(tput sc; printf "%*s" $COLUMNS "$PRIGHT"; tput rc)\]'$PR
|
|
PS1+=$PR
|
|
}
|
|
_omb_util_add_prompt_command _omb_theme_PROMPT_COMMAND
|