From ed1bbc3dd9bf432bf3d411d9128f92debeddea14 Mon Sep 17 00:00:00 2001 From: ZQPei Date: Fri, 22 Oct 2021 20:47:59 +0800 Subject: [PATCH 1/9] themes/pzq: Add pzq themes inspired by ys-theme from oh-my-zsh and rana --- themes/pzq/pzq.theme.sh | 200 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 themes/pzq/pzq.theme.sh diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh new file mode 100644 index 0000000..d953448 --- /dev/null +++ b/themes/pzq/pzq.theme.sh @@ -0,0 +1,200 @@ +#!/usr/bin/env bash + +# Theme inspired on: +# - ys theme - https://github.com/ohmyzsh/ohmyzsh/blob/master/themes/ys.zsh-theme +# - rana theme - https://github.com/ohmybash/oh-my-bash/blob/master/themes/rana/rana.theme.sh +# +# by Ziqiang Pei + +# ----------------------------------------------------------------- COLOR CONF +D_DEFAULT_COLOR="${white}" +D_INTERMEDIATE_COLOR="${bold_white}" +D_NUMBER_COLOR="${bold_blue}" +D_USER_COLOR="${cyan}" +D_SUPERUSER_COLOR="${red}" +D_MACHINE_COLOR="${green}" +D_DIR_COLOR="${bold_yellow}" +D_GIT_DEFAULT_COLOR="${echo_white}" +D_GIT_BRANCH_COLOR="${echo_cyan}" +D_GIT_PROMPT_COLOR="${echo_red}" +D_SCM_COLOR="${bold_yellow}" +D_BRANCH_COLOR="${cyan}" +D_CHANGES_COLOR="${white}" +D_TIME_COLOR="${white}" +D_DOLLOR_COLOR="${bold_red}" +D_CMDFAIL_COLOR="${red}" +D_VIMSHELL_COLOR="${cyan}" + +# ------------------------------------------------------------------ FUNCTIONS +case $TERM in + xterm*) + TITLEBAR="\033]0;\w\007" + ;; + *) + TITLEBAR="" + ;; +esac + +is_vim_shell() { + if [ ! -z "$VIMRUNTIME" ]; + then + echo "${D_INTERMEDIATE_COLOR}on ${D_VIMSHELL_COLOR}\ +vim shell${D_DEFAULT_COLOR} " + fi +} + +mitsuhikos_lastcommandfailed() { + code=$? + if [ $code != 0 ]; + then + echo " ${D_DEFAULT_COLOR}C:${D_CMDFAIL_COLOR}\ +$code ${D_DEFAULT_COLOR}" + fi +} + +# vcprompt for scm instead of oh-my-bash default +demula_vcprompt() { + if [ ! -z "$VCPROMPT_EXECUTABLE" ]; + then + local D_VCPROMPT_FORMAT="on ${D_SCM_COLOR}%s${D_INTERMEDIATE_COLOR}:\ +${D_BRANCH_COLOR}%b %r ${D_CHANGES_COLOR}%m%u ${D_DEFAULT_COLOR}" + $VCPROMPT_EXECUTABLE -f "$D_VCPROMPT_FORMAT" + fi +} + +# checks if the plugin is installed before calling battery_charge +safe_battery_charge() { + if [ -e "${OSH}/plugins/battery/battery.plugin.sh" ]; + then + battery_charge + fi +} + +prompt_git() { + local s=''; + local branchName=''; + + # Check if the current directory is in a Git repository. + if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then + + # check if the current directory is in .git before running git checks + if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == 'false' ]; then + + # Ensure the index is up to date. + git update-index --really-refresh -q &>/dev/null; + + # Check for uncommitted changes in the index. + if ! $(git diff --quiet --ignore-submodules --cached); then + s+='+'; + fi; + + # Check for unstaged changes. + if ! $(git diff-files --quiet --ignore-submodules --); then + s+='!'; + fi; + + # Check for untracked files. + if [ -n "$(git ls-files --others --exclude-standard)" ]; then + s+='?'; + fi; + + # Check for stashed files. + if $(git rev-parse --verify refs/stash &>/dev/null); then + s+='$'; + fi; + + fi; + + # Get the short symbolic ref. + # If HEAD isn’t a symbolic ref, get the short SHA for the latest commit + # Otherwise, just give up. + branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \ + git rev-parse --short HEAD 2> /dev/null || \ + echo '(unknown)')"; + + [ -n "${s}" ] && s=" ${s}"; + + echo -e "${D_GIT_DEFAULT_COLOR}on ${D_GIT_BRANCH_COLOR}${branchName}${D_GIT_PROMPT_COLOR}${s} "; + else + return; + fi; +} + +limited_pwd() { + # Max length of PWD to display + MAX_PWD_LENGTH=20 + + # Replace $HOME with ~ if possible + RELATIVE_PWD=${PWD/#$HOME/\~} + + local offset=$((${#RELATIVE_PWD}-$MAX_PWD_LENGTH)) + + if [ $offset -gt "0" ] + then + local truncated_symbol="..." + TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} + echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" + else + echo -e "${RELATIVE_PWD}" + fi +} + +prompt_python() { + # for virtualenv + if [[ $VIRTUAL_ENV ]]; then + virtualenv=`basename "$VIRTUAL_ENV"` + VIRTUALENV_THEME_PROMPT_PREFIX='(' + VIRTUALENV_THEME_PROMPT_SUFFIX=')' + echo -e "${VIRTUALENV_THEME_PROMPT_PREFIX}$virtualenv${VIRTUALENV_THEME_PROMPT_SUFFIX}" + fi + + # for condaenv + if [[ $CONDA_DEFAULT_ENV ]]; then + echo -e "${CONDAENV_THEME_PROMPT_PREFIX}${CONDA_DEFAULT_ENV}${CONDAENV_THEME_PROMPT_SUFFIX}" + fi +} + +# -------------------------------------------------------------- PROMPT OUTPUT +prompt() { + local LAST_COMMAND_FAILED=$(mitsuhikos_lastcommandfailed) + local SAVE_CURSOR='\033[s' + local RESTORE_CURSOR='\033[u' + local MOVE_CURSOR_RIGHTMOST='\033[500C' + local MOVE_CURSOR_5_LEFT='\033[5D' + local THEME_CLOCK_FORMAT="%H:%M:%S %y-%m-%d" + # Replace $HOME with ~ if possible + local RELATIVE_PWD=${PWD/#$HOME/\~} + + if [ $(uname) = "Linux" ]; + then + PS1="${TITLEBAR}$(prompt_python) +${SAVE_CURSOR}${MOVE_CURSOR_RIGHTMOST}${MOVE_CURSOR_5_LEFT}\ +$(safe_battery_charge)${RESTORE_CURSOR}\ +${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}\ +@ ${D_MACHINE_COLOR}\h ${D_DEFAULT_COLOR}\ +in ${D_DIR_COLOR}${RELATIVE_PWD} ${D_INTERMEDIATE_COLOR}\ +$(prompt_git)\ +${D_TIME_COLOR}[$(clock_prompt)]\ +${LAST_COMMAND_FAILED}\ +$(demula_vcprompt)\ +$(is_vim_shell) +${D_DOLLOR_COLOR}$ ${D_DEFAULT_COLOR}" + else + PS1="${TITLEBAR}$(prompt_python) +${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}\ +@ ${D_MACHINE_COLOR}\h ${D_DEFAULT_COLOR}\ +in ${D_DIR_COLOR}${RELATIVE_PWD} ${D_INTERMEDIATE_COLOR}\ +$(prompt_git)\ +${D_TIME_COLOR}[$(clock_prompt)]\ +${LAST_COMMAND_FAILED}\ +$(demula_vcprompt)\ +$(is_vim_shell)\ +$(safe_battery_charge) +${D_DOLLOR_COLOR}$ ${D_DEFAULT_COLOR}" + fi + + PS2="${D_INTERMEDIATE_COLOR}$ ${D_DEFAULT_COLOR}" +} + +# Runs prompt (this bypasses oh-my-bash $PROMPT setting) +safe_append_prompt_command prompt From 62767d6fb40f6f8f38288f08f5e2504a8305ba6a Mon Sep 17 00:00:00 2001 From: ZQPei Date: Tue, 26 Oct 2021 16:16:21 +0800 Subject: [PATCH 2/9] themes/pzq: Remove verbose git status info for speed accerating --- themes/pzq/pzq.theme.sh | 36 +++--------------------------------- 1 file changed, 3 insertions(+), 33 deletions(-) diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh index d953448..85f1112 100644 --- a/themes/pzq/pzq.theme.sh +++ b/themes/pzq/pzq.theme.sh @@ -71,40 +71,10 @@ safe_battery_charge() { } prompt_git() { - local s=''; local branchName=''; # Check if the current directory is in a Git repository. if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then - - # check if the current directory is in .git before running git checks - if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == 'false' ]; then - - # Ensure the index is up to date. - git update-index --really-refresh -q &>/dev/null; - - # Check for uncommitted changes in the index. - if ! $(git diff --quiet --ignore-submodules --cached); then - s+='+'; - fi; - - # Check for unstaged changes. - if ! $(git diff-files --quiet --ignore-submodules --); then - s+='!'; - fi; - - # Check for untracked files. - if [ -n "$(git ls-files --others --exclude-standard)" ]; then - s+='?'; - fi; - - # Check for stashed files. - if $(git rev-parse --verify refs/stash &>/dev/null); then - s+='$'; - fi; - - fi; - # Get the short symbolic ref. # If HEAD isn’t a symbolic ref, get the short SHA for the latest commit # Otherwise, just give up. @@ -112,9 +82,7 @@ prompt_git() { git rev-parse --short HEAD 2> /dev/null || \ echo '(unknown)')"; - [ -n "${s}" ] && s=" ${s}"; - - echo -e "${D_GIT_DEFAULT_COLOR}on ${D_GIT_BRANCH_COLOR}${branchName}${D_GIT_PROMPT_COLOR}${s} "; + echo -e "${D_GIT_DEFAULT_COLOR}on ${D_GIT_BRANCH_COLOR}${branchName} "; else return; fi; @@ -150,6 +118,8 @@ prompt_python() { # for condaenv if [[ $CONDA_DEFAULT_ENV ]]; then + CONDAENV_THEME_PROMPT_PREFIX='(' + CONDAENV_THEME_PROMPT_SUFFIX=')' echo -e "${CONDAENV_THEME_PROMPT_PREFIX}${CONDA_DEFAULT_ENV}${CONDAENV_THEME_PROMPT_SUFFIX}" fi } From d8edd072547e51883801d6cfaa63b7eb7f1ddb32 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 30 Aug 2022 09:39:00 +0800 Subject: [PATCH 3/9] themes/pzq: Apply suggestions from code review --- themes/pzq/pzq.theme.sh | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh index 85f1112..3f3214d 100644 --- a/themes/pzq/pzq.theme.sh +++ b/themes/pzq/pzq.theme.sh @@ -28,7 +28,7 @@ D_VIMSHELL_COLOR="${cyan}" # ------------------------------------------------------------------ FUNCTIONS case $TERM in xterm*) - TITLEBAR="\033]0;\w\007" + TITLEBAR='\[\033]0;\w\e\\\]' ;; *) TITLEBAR="" @@ -44,7 +44,7 @@ vim shell${D_DEFAULT_COLOR} " } mitsuhikos_lastcommandfailed() { - code=$? + local code=$? if [ $code != 0 ]; then echo " ${D_DEFAULT_COLOR}C:${D_CMDFAIL_COLOR}\ @@ -90,17 +90,17 @@ prompt_git() { limited_pwd() { # Max length of PWD to display - MAX_PWD_LENGTH=20 + local MAX_PWD_LENGTH=20 # Replace $HOME with ~ if possible - RELATIVE_PWD=${PWD/#$HOME/\~} + local RELATIVE_PWD=${PWD/#$HOME/\~} local offset=$((${#RELATIVE_PWD}-$MAX_PWD_LENGTH)) if [ $offset -gt "0" ] then local truncated_symbol="..." - TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} + local TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" else echo -e "${RELATIVE_PWD}" @@ -110,16 +110,16 @@ limited_pwd() { prompt_python() { # for virtualenv if [[ $VIRTUAL_ENV ]]; then - virtualenv=`basename "$VIRTUAL_ENV"` - VIRTUALENV_THEME_PROMPT_PREFIX='(' - VIRTUALENV_THEME_PROMPT_SUFFIX=')' + local virtualenv=$(basename "$VIRTUAL_ENV") + local VIRTUALENV_THEME_PROMPT_PREFIX='(' + local VIRTUALENV_THEME_PROMPT_SUFFIX=')' echo -e "${VIRTUALENV_THEME_PROMPT_PREFIX}$virtualenv${VIRTUALENV_THEME_PROMPT_SUFFIX}" fi # for condaenv if [[ $CONDA_DEFAULT_ENV ]]; then - CONDAENV_THEME_PROMPT_PREFIX='(' - CONDAENV_THEME_PROMPT_SUFFIX=')' + local CONDAENV_THEME_PROMPT_PREFIX='(' + local CONDAENV_THEME_PROMPT_SUFFIX=')' echo -e "${CONDAENV_THEME_PROMPT_PREFIX}${CONDA_DEFAULT_ENV}${CONDAENV_THEME_PROMPT_SUFFIX}" fi } @@ -127,15 +127,15 @@ prompt_python() { # -------------------------------------------------------------- PROMPT OUTPUT prompt() { local LAST_COMMAND_FAILED=$(mitsuhikos_lastcommandfailed) - local SAVE_CURSOR='\033[s' - local RESTORE_CURSOR='\033[u' - local MOVE_CURSOR_RIGHTMOST='\033[500C' + local SAVE_CURSOR='\[\e7' + local RESTORE_CURSOR='\e8\]' + local MOVE_CURSOR_RIGHTMOST='\033['${COLUMNS:-9999}'C' local MOVE_CURSOR_5_LEFT='\033[5D' local THEME_CLOCK_FORMAT="%H:%M:%S %y-%m-%d" # Replace $HOME with ~ if possible local RELATIVE_PWD=${PWD/#$HOME/\~} - if [ $(uname) = "Linux" ]; + if [ "$OSTYPE" = "linux-gnu" ]; then PS1="${TITLEBAR}$(prompt_python) ${SAVE_CURSOR}${MOVE_CURSOR_RIGHTMOST}${MOVE_CURSOR_5_LEFT}\ From 85fe63eea9aa9fcc433ec5f89bbf8bedcc968583 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 30 Aug 2022 10:58:54 +0900 Subject: [PATCH 4/9] themes/pzq: Use "_omb_prompt_get_python_venv" --- themes/pzq/pzq.theme.sh | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh index 3f3214d..8bcbc73 100644 --- a/themes/pzq/pzq.theme.sh +++ b/themes/pzq/pzq.theme.sh @@ -6,6 +6,9 @@ # # by Ziqiang Pei +OMB_PROMPT_CONDAENV_FORMAT='(%s)' +OMB_PROMPT_VIRTUALENV_FORMAT='(%s)' + # ----------------------------------------------------------------- COLOR CONF D_DEFAULT_COLOR="${white}" D_INTERMEDIATE_COLOR="${bold_white}" @@ -107,23 +110,6 @@ limited_pwd() { fi } -prompt_python() { - # for virtualenv - if [[ $VIRTUAL_ENV ]]; then - local virtualenv=$(basename "$VIRTUAL_ENV") - local VIRTUALENV_THEME_PROMPT_PREFIX='(' - local VIRTUALENV_THEME_PROMPT_SUFFIX=')' - echo -e "${VIRTUALENV_THEME_PROMPT_PREFIX}$virtualenv${VIRTUALENV_THEME_PROMPT_SUFFIX}" - fi - - # for condaenv - if [[ $CONDA_DEFAULT_ENV ]]; then - local CONDAENV_THEME_PROMPT_PREFIX='(' - local CONDAENV_THEME_PROMPT_SUFFIX=')' - echo -e "${CONDAENV_THEME_PROMPT_PREFIX}${CONDA_DEFAULT_ENV}${CONDAENV_THEME_PROMPT_SUFFIX}" - fi -} - # -------------------------------------------------------------- PROMPT OUTPUT prompt() { local LAST_COMMAND_FAILED=$(mitsuhikos_lastcommandfailed) @@ -135,9 +121,12 @@ prompt() { # Replace $HOME with ~ if possible local RELATIVE_PWD=${PWD/#$HOME/\~} + local python_venv + _omb_prompt_get_python_venv + if [ "$OSTYPE" = "linux-gnu" ]; then - PS1="${TITLEBAR}$(prompt_python) + PS1="${TITLEBAR}$python_venv ${SAVE_CURSOR}${MOVE_CURSOR_RIGHTMOST}${MOVE_CURSOR_5_LEFT}\ $(safe_battery_charge)${RESTORE_CURSOR}\ ${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}\ @@ -150,7 +139,7 @@ $(demula_vcprompt)\ $(is_vim_shell) ${D_DOLLOR_COLOR}$ ${D_DEFAULT_COLOR}" else - PS1="${TITLEBAR}$(prompt_python) + PS1="${TITLEBAR}$python_venv ${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}\ @ ${D_MACHINE_COLOR}\h ${D_DEFAULT_COLOR}\ in ${D_DIR_COLOR}${RELATIVE_PWD} ${D_INTERMEDIATE_COLOR}\ From b114cabe1e3a5617c961c67445a0f1678311faa1 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 30 Aug 2022 10:49:05 +0900 Subject: [PATCH 5/9] themes/pzq: Apply recent updates --- themes/pzq/pzq.theme.sh | 134 ++++++++++++++++++---------------------- 1 file changed, 60 insertions(+), 74 deletions(-) diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh index 8bcbc73..2d45ef5 100644 --- a/themes/pzq/pzq.theme.sh +++ b/themes/pzq/pzq.theme.sh @@ -10,23 +10,23 @@ OMB_PROMPT_CONDAENV_FORMAT='(%s)' OMB_PROMPT_VIRTUALENV_FORMAT='(%s)' # ----------------------------------------------------------------- COLOR CONF -D_DEFAULT_COLOR="${white}" -D_INTERMEDIATE_COLOR="${bold_white}" -D_NUMBER_COLOR="${bold_blue}" -D_USER_COLOR="${cyan}" -D_SUPERUSER_COLOR="${red}" -D_MACHINE_COLOR="${green}" -D_DIR_COLOR="${bold_yellow}" -D_GIT_DEFAULT_COLOR="${echo_white}" -D_GIT_BRANCH_COLOR="${echo_cyan}" -D_GIT_PROMPT_COLOR="${echo_red}" -D_SCM_COLOR="${bold_yellow}" -D_BRANCH_COLOR="${cyan}" -D_CHANGES_COLOR="${white}" -D_TIME_COLOR="${white}" -D_DOLLOR_COLOR="${bold_red}" -D_CMDFAIL_COLOR="${red}" -D_VIMSHELL_COLOR="${cyan}" +D_DEFAULT_COLOR="$_omb_prompt_white" +D_INTERMEDIATE_COLOR="$_omb_prompt_bold_white" +D_NUMBER_COLOR="$_omb_prompt_bold_navy" +D_USER_COLOR="$_omb_prompt_teal" +D_SUPERUSER_COLOR="$_omb_prompt_brown" +D_MACHINE_COLOR="$_omb_prompt_green" +D_DIR_COLOR="$_omb_prompt_bold_olive" +D_GIT_DEFAULT_COLOR="$_omb_prompt_white" +D_GIT_BRANCH_COLOR="$_omb_prompt_teal" +D_GIT_PROMPT_COLOR="$_omb_prompt_brown" +D_SCM_COLOR="$_omb_prompt_bold_olive" +D_BRANCH_COLOR="$_omb_prompt_teal" +D_CHANGES_COLOR="$_omb_prompt_white" +D_TIME_COLOR="$_omb_prompt_white" +D_DOLLOR_COLOR="$_omb_prompt_bold_brown" +D_CMDFAIL_COLOR="$_omb_prompt_brown" +D_VIMSHELL_COLOR="$_omb_prompt_teal" # ------------------------------------------------------------------ FUNCTIONS case $TERM in @@ -39,56 +39,50 @@ case $TERM in esac is_vim_shell() { - if [ ! -z "$VIMRUNTIME" ]; - then - echo "${D_INTERMEDIATE_COLOR}on ${D_VIMSHELL_COLOR}\ -vim shell${D_DEFAULT_COLOR} " + if [[ ${VIMRUNTIME-} ]]; then + echo "${D_INTERMEDIATE_COLOR}on ${D_VIMSHELL_COLOR}vim shell${D_DEFAULT_COLOR} " fi } mitsuhikos_lastcommandfailed() { - local code=$? - if [ $code != 0 ]; - then - echo " ${D_DEFAULT_COLOR}C:${D_CMDFAIL_COLOR}\ -$code ${D_DEFAULT_COLOR}" + local status=$? + if ((status != 0)); then + echo " ${D_DEFAULT_COLOR}C:${D_CMDFAIL_COLOR}$code ${D_DEFAULT_COLOR}" fi } # vcprompt for scm instead of oh-my-bash default demula_vcprompt() { - if [ ! -z "$VCPROMPT_EXECUTABLE" ]; - then - local D_VCPROMPT_FORMAT="on ${D_SCM_COLOR}%s${D_INTERMEDIATE_COLOR}:\ -${D_BRANCH_COLOR}%b %r ${D_CHANGES_COLOR}%m%u ${D_DEFAULT_COLOR}" + if [[ ${VCPROMPT_EXECUTABLE-} ]]; then + local D_VCPROMPT_FORMAT="on ${D_SCM_COLOR}%s${D_INTERMEDIATE_COLOR}:${D_BRANCH_COLOR}%b %r ${D_CHANGES_COLOR}%m%u ${D_DEFAULT_COLOR}" $VCPROMPT_EXECUTABLE -f "$D_VCPROMPT_FORMAT" fi } # checks if the plugin is installed before calling battery_charge safe_battery_charge() { - if [ -e "${OSH}/plugins/battery/battery.plugin.sh" ]; - then + if _omb_util_function_exists battery_charge; then battery_charge fi } prompt_git() { - local branchName=''; + local branchName='' - # Check if the current directory is in a Git repository. - if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then - # Get the short symbolic ref. - # If HEAD isn’t a symbolic ref, get the short SHA for the latest commit - # Otherwise, just give up. - branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \ - git rev-parse --short HEAD 2> /dev/null || \ - echo '(unknown)')"; + # Check if the current directory is in a Git repository. + if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then + # Get the short symbolic ref. + # If HEAD isn’t a symbolic ref, get the short SHA for the latest commit + # Otherwise, just give up. + branchName=$( + git symbolic-ref --quiet --short HEAD 2> /dev/null || + git rev-parse --short HEAD 2> /dev/null || + echo '(unknown)'); - echo -e "${D_GIT_DEFAULT_COLOR}on ${D_GIT_BRANCH_COLOR}${branchName} "; - else - return; - fi; + echo "${D_GIT_DEFAULT_COLOR}on ${D_GIT_BRANCH_COLOR}${branchName} " + else + return + fi } limited_pwd() { @@ -111,12 +105,12 @@ limited_pwd() { } # -------------------------------------------------------------- PROMPT OUTPUT -prompt() { +_omb_theme_PROMPT_COMMAND() { local LAST_COMMAND_FAILED=$(mitsuhikos_lastcommandfailed) local SAVE_CURSOR='\[\e7' local RESTORE_CURSOR='\e8\]' - local MOVE_CURSOR_RIGHTMOST='\033['${COLUMNS:-9999}'C' - local MOVE_CURSOR_5_LEFT='\033[5D' + local MOVE_CURSOR_RIGHTMOST='\e['${COLUMNS:-9999}'C' + local MOVE_CURSOR_5_LEFT='\e[5D' local THEME_CLOCK_FORMAT="%H:%M:%S %y-%m-%d" # Replace $HOME with ~ if possible local RELATIVE_PWD=${PWD/#$HOME/\~} @@ -124,36 +118,28 @@ prompt() { local python_venv _omb_prompt_get_python_venv - if [ "$OSTYPE" = "linux-gnu" ]; - then - PS1="${TITLEBAR}$python_venv -${SAVE_CURSOR}${MOVE_CURSOR_RIGHTMOST}${MOVE_CURSOR_5_LEFT}\ -$(safe_battery_charge)${RESTORE_CURSOR}\ -${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}\ -@ ${D_MACHINE_COLOR}\h ${D_DEFAULT_COLOR}\ -in ${D_DIR_COLOR}${RELATIVE_PWD} ${D_INTERMEDIATE_COLOR}\ -$(prompt_git)\ -${D_TIME_COLOR}[$(clock_prompt)]\ -${LAST_COMMAND_FAILED}\ -$(demula_vcprompt)\ -$(is_vim_shell) -${D_DOLLOR_COLOR}$ ${D_DEFAULT_COLOR}" + PS1=${TITLEBAR}$python_venv$'\n' + if [[ $OSTYPE == linux-gnu ]]; then + PS1+="${SAVE_CURSOR}${MOVE_CURSOR_RIGHTMOST}${MOVE_CURSOR_5_LEFT}" + PS1+="$(safe_battery_charge)${RESTORE_CURSOR}" + PS1+="${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}" else - PS1="${TITLEBAR}$python_venv -${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}\ -@ ${D_MACHINE_COLOR}\h ${D_DEFAULT_COLOR}\ -in ${D_DIR_COLOR}${RELATIVE_PWD} ${D_INTERMEDIATE_COLOR}\ -$(prompt_git)\ -${D_TIME_COLOR}[$(clock_prompt)]\ -${LAST_COMMAND_FAILED}\ -$(demula_vcprompt)\ -$(is_vim_shell)\ -$(safe_battery_charge) -${D_DOLLOR_COLOR}$ ${D_DEFAULT_COLOR}" + PS1+="${D_NUMBER_COLOR}# ${D_USER_COLOR}\u ${D_DEFAULT_COLOR}" fi + PS1+="@ ${D_MACHINE_COLOR}\h ${D_DEFAULT_COLOR}" + PS1+="in ${D_DIR_COLOR}${RELATIVE_PWD} ${D_INTERMEDIATE_COLOR}" + PS1+=$(prompt_git) + PS1+=${D_TIME_COLOR}[$(clock_prompt)] + PS1+=${LAST_COMMAND_FAILED} + PS1+=$(demula_vcprompt) + PS1+=$(is_vim_shell) + if [[ $OSTYPE != linux-gnu ]]; then + PS1+=$(safe_battery_charge) + fi + PS1+=$'\n'"${D_DOLLOR_COLOR}$ ${D_DEFAULT_COLOR}" PS2="${D_INTERMEDIATE_COLOR}$ ${D_DEFAULT_COLOR}" } # Runs prompt (this bypasses oh-my-bash $PROMPT setting) -safe_append_prompt_command prompt +_omb_util_add_prompt_command _omb_theme_PROMPT_COMMAND From af18e3d41cec4b236274fe01da98b1a8ed7683cb Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 30 Aug 2022 11:03:12 +0900 Subject: [PATCH 6/9] themes/pzq: Refactor and change styles --- themes/pzq/pzq.theme.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh index 2d45ef5..0c94dce 100644 --- a/themes/pzq/pzq.theme.sh +++ b/themes/pzq/pzq.theme.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Theme inspired on: +# Theme inspired by: # - ys theme - https://github.com/ohmyzsh/ohmyzsh/blob/master/themes/ys.zsh-theme # - rana theme - https://github.com/ohmybash/oh-my-bash/blob/master/themes/rana/rana.theme.sh # @@ -31,11 +31,11 @@ D_VIMSHELL_COLOR="$_omb_prompt_teal" # ------------------------------------------------------------------ FUNCTIONS case $TERM in xterm*) - TITLEBAR='\[\033]0;\w\e\\\]' - ;; + TITLEBAR='\[\e]0;\w\e\\\]' + ;; *) - TITLEBAR="" - ;; + TITLEBAR="" + ;; esac is_vim_shell() { @@ -70,7 +70,7 @@ prompt_git() { local branchName='' # Check if the current directory is in a Git repository. - if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then + if git rev-parse --is-inside-work-tree &>/dev/null; then # Get the short symbolic ref. # If HEAD isn’t a symbolic ref, get the short SHA for the latest commit # Otherwise, just give up. @@ -92,15 +92,14 @@ limited_pwd() { # Replace $HOME with ~ if possible local RELATIVE_PWD=${PWD/#$HOME/\~} - local offset=$((${#RELATIVE_PWD}-$MAX_PWD_LENGTH)) + local offset=$((${#RELATIVE_PWD}-MAX_PWD_LENGTH)) - if [ $offset -gt "0" ] - then - local truncated_symbol="..." - local TRUNCATED_PWD=${RELATIVE_PWD:$offset:$MAX_PWD_LENGTH} - echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" + if ((offset > 0)); then + local truncated_symbol='...' + local TRUNCATED_PWD=${RELATIVE_PWD:offset:MAX_PWD_LENGTH} + echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" else - echo -e "${RELATIVE_PWD}" + echo -e "${RELATIVE_PWD}" fi } From 0b52ce05c1c4e232585ea1c081c5cca9554d3412 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 30 Aug 2022 11:18:17 +0900 Subject: [PATCH 7/9] themes/pzq: Fix wrong usage of "echo -n" --- themes/pzq/pzq.theme.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/themes/pzq/pzq.theme.sh b/themes/pzq/pzq.theme.sh index 0c94dce..4001b8f 100644 --- a/themes/pzq/pzq.theme.sh +++ b/themes/pzq/pzq.theme.sh @@ -97,9 +97,9 @@ limited_pwd() { if ((offset > 0)); then local truncated_symbol='...' local TRUNCATED_PWD=${RELATIVE_PWD:offset:MAX_PWD_LENGTH} - echo -e "${truncated_symbol}/${TRUNCATED_PWD#*/}" + echo -n "${truncated_symbol}/${TRUNCATED_PWD#*/}" else - echo -e "${RELATIVE_PWD}" + echo -n "${RELATIVE_PWD}" fi } From b956acaa0cdde78fa98d3c07dc45a97a8e2e1f95 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 30 Aug 2022 12:00:24 +0900 Subject: [PATCH 8/9] themes/pzq: Add image --- themes/THEMES.md | 4 ++++ themes/pzq/pzq-dark.png | Bin 0 -> 21520 bytes 2 files changed, 4 insertions(+) create mode 100644 themes/pzq/pzq-dark.png diff --git a/themes/THEMES.md b/themes/THEMES.md index 98c9283..fa05197 100644 --- a/themes/THEMES.md +++ b/themes/THEMES.md @@ -188,6 +188,10 @@ [![](purity/purity-dark.png)](purity/purity-dark.png) +## `pzq` + +[![](pzq/pzq-dark.png)](pzq/pzq-dark.png) + ## `rainbowbrite` [![](rainbowbrite/rainbowbrite-dark.png)](rainbowbrite/rainbowbrite-dark.png) diff --git a/themes/pzq/pzq-dark.png b/themes/pzq/pzq-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6d4876f2c562b20d5dcd29f3e6df25df01ea853c GIT binary patch literal 21520 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 I_I?Tf2U9+G Date: Tue, 30 Aug 2022 11:13:16 +0900 Subject: [PATCH 9/9] themes/rana: Enclose terminal constrol sequences within \[...\] --- themes/rana/rana.theme.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/themes/rana/rana.theme.sh b/themes/rana/rana.theme.sh index 79a8caa..f8b4653 100644 --- a/themes/rana/rana.theme.sh +++ b/themes/rana/rana.theme.sh @@ -76,11 +76,11 @@ D_VIMSHELL_COLOR="$_omb_prompt_teal" # ------------------------------------------------------------------ FUNCTIONS case $TERM in xterm*) - TITLEBAR="\033]0;\w\007" - ;; + TITLEBAR='\[\e]0;\w\e\\\]' + ;; *) - TITLEBAR="" - ;; + TITLEBAR="" + ;; esac is_vim_shell() { @@ -165,10 +165,10 @@ prompt_git() { # -------------------------------------------------------------- PROMPT OUTPUT _omb_theme_PROMPT_COMMAND() { local LAST_COMMAND_FAILED=$(mitsuhikos_lastcommandfailed) - local SAVE_CURSOR='\033[s' - local RESTORE_CURSOR='\033[u' - local MOVE_CURSOR_RIGHTMOST='\033[500C' - local MOVE_CURSOR_5_LEFT='\033[5D' + local SAVE_CURSOR='\[\e7' + local RESTORE_CURSOR='\e8\]' + local MOVE_CURSOR_RIGHTMOST='\e['${COLUMNS:-9999}'C' + local MOVE_CURSOR_5_LEFT='\e[5D' PS1=${TITLEBAR}$'\n' if [[ $OSTYPE == linux* ]]; then