Merge pull request #339 from dylanaraps/promptfix
Don't clear the screen in 'Ascii' and 'No Image' modes. Fixes #335
This commit is contained in:
commit
dcceeb7a13
1 changed files with 25 additions and 12 deletions
35
neofetch
35
neofetch
|
@ -2097,6 +2097,8 @@ getimage() {
|
||||||
[ "${#term_size}" -le 5 ] && err "Your terminal doesn't support \\\033[14t, falling back to ascii mode."
|
[ "${#term_size}" -le 5 ] && err "Your terminal doesn't support \\\033[14t, falling back to ascii mode."
|
||||||
|
|
||||||
return
|
return
|
||||||
|
else
|
||||||
|
clear
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get terminal lines and columns
|
# Get terminal lines and columns
|
||||||
|
@ -2339,6 +2341,9 @@ info() {
|
||||||
|
|
||||||
# Print the string
|
# Print the string
|
||||||
printf "%b%s\n" "${padding}${string}${reset}"
|
printf "%b%s\n" "${padding}${string}${reset}"
|
||||||
|
|
||||||
|
# Calculate info height
|
||||||
|
info_height="$((info_height+=1))"
|
||||||
}
|
}
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
@ -2371,6 +2376,9 @@ prin() {
|
||||||
|
|
||||||
# Print the info
|
# Print the info
|
||||||
printf "%b%s\n" "${padding}${string}${reset}"
|
printf "%b%s\n" "${padding}${string}${reset}"
|
||||||
|
|
||||||
|
# Calculate info height
|
||||||
|
info_height="$((info_height+=1))"
|
||||||
}
|
}
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
@ -2781,20 +2789,21 @@ kdeconfigdir() {
|
||||||
# Dynamic prompt location {{{
|
# Dynamic prompt location {{{
|
||||||
|
|
||||||
dynamicprompt() {
|
dynamicprompt() {
|
||||||
# Get cursor position
|
|
||||||
info_height="$(IFS=';' builtin read -srdR -t 1 -d c -p $'\033[6n\033[c' ROW COL; printf "%s" "${ROW#*[}")"
|
|
||||||
|
|
||||||
# Calculate image height in terminal cells.
|
# Calculate image height in terminal cells.
|
||||||
# The '+ 3' adds a gap between the prompt and the content.
|
# The '+ 4' adds a gap between the prompt and the content.
|
||||||
[ "$image" != "ascii" ] && [ "$image" != "off" ] && \
|
[ "$image" != "ascii" ] && [ "$image" != "off" ] && \
|
||||||
lines="$((${height:-1} / ${font_height:-1} + 3))"
|
lines="$((${height:-1} / ${font_height:-1} + 4))"
|
||||||
|
|
||||||
# If the info is higher than the ascii/image place the prompt
|
# If the info is higher than the ascii/image place the prompt
|
||||||
# based on the info height instead of the ascii/image height.
|
# based on the info height instead of the ascii/image height.
|
||||||
[ "${lines:-0}" -lt "${info_height:-0}" ] && lines="$info_height"
|
if [ "${lines:-0}" -lt "${info_height:-0}" ]; then
|
||||||
|
lines="$((info_height - lines - 2))"
|
||||||
|
else
|
||||||
|
lines="$((lines - info_height - 2))"
|
||||||
|
fi
|
||||||
|
|
||||||
# Set the prompt location
|
# Set the prompt location
|
||||||
[ "$image" != "off" ] && printf "%b%s" "\033[${lines:-0}H"
|
[ "$image" != "off" ] && printf "\033[${lines/-*/0}B"
|
||||||
}
|
}
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
@ -3132,9 +3141,6 @@ main() {
|
||||||
# If the script exits for any reason, unhide the cursor.
|
# If the script exits for any reason, unhide the cursor.
|
||||||
trap 'printf "\033[?25h"' EXIT
|
trap 'printf "\033[?25h"' EXIT
|
||||||
|
|
||||||
# Clear the screen
|
|
||||||
clear
|
|
||||||
|
|
||||||
# Hide the cursor and disable line wrap
|
# Hide the cursor and disable line wrap
|
||||||
printf "\033[?25l\033[?7l"
|
printf "\033[?25l\033[?7l"
|
||||||
|
|
||||||
|
@ -3154,7 +3160,14 @@ main() {
|
||||||
displayimage
|
displayimage
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Move cursor to the top
|
# Set cursor position next to ascii art
|
||||||
|
printf "\033[$((${lines:-0} - 4))A"
|
||||||
|
|
||||||
|
# Reset horizontal cursor position
|
||||||
|
printf "\033[9999999D"
|
||||||
|
|
||||||
|
# Move cursor to top of ascii art
|
||||||
|
[ "$image" != "ascii" ] && [ "$image" != "off" ] && \
|
||||||
printf "\033[0H"
|
printf "\033[0H"
|
||||||
|
|
||||||
# Print the info
|
# Print the info
|
||||||
|
|
Loading…
Reference in a new issue