image: fix terminal size issues. Closes #1314

This commit is contained in:
Dylan Araps 2019-09-10 23:49:09 +03:00
parent bb82bf8343
commit 3614099fd5
1 changed files with 39 additions and 0 deletions

View File

@ -3700,6 +3700,45 @@ get_w3m_img_path() {
get_window_size() {
# This functions gets the current window size in
# pixels.
#
# We first try to use the escape sequence "\033[14t"
# to get the terminal window size in pixels. If this
# fails we then fallback to using "xdotool" or other
# programs.
# Tmux has a special way of reading escape sequences
# so we have to use a slightly different sequence to
# get the terminal size.
if [[ "$image_backend" == "tycat" ]]; then
printf '%b' '\e}qs\000'
elif [[ -z $VTE_VERSION ]]; then
case "${TMUX:-null}" in
"null") printf '%b' '\e[14t' ;;
*) printf '%b' '\ePtmux;\e\e[14t\e\\ ' ;;
esac
fi
# The escape codes above print the desired output as
# user input so we have to use read to store the out
# -put as a variable.
# The 1 second timeout is required for older bash
case "${BASH_VERSINFO[0]}" in
4|5) IFS=';t' read -d t -t 0.05 -sra term_size ;;
*) IFS=';t' read -d t -t 1 -sra term_size ;;
esac
unset IFS
# Split the string into height/width.
if [[ "$image_backend" == "tycat" ]]; then
term_width="$((term_size[2] * term_size[0]))"
term_height="$((term_size[3] * term_size[1]))"
else
term_height="${term_size[1]}"
term_width="${term_size[2]}"
fi
[[ "$image_backend" == "kitty" ]] &&
IFS=x read -r term_width term_height <<< "$(kitty +kitten icat --print-window-size)"