oh-my-bash/themes/absimple/absimple.theme.sh
2023-02-12 15:13:29 +09:00

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