Need Ideas for "Monitor" Panel

Here is a little Bash script you can run on your screen:

#!/bin/bash

function cleanup_() {
  printf '\033[?25h' # unhide cursor
  stty echo 2>/dev/null
}
trap cleanup_ EXIT

if [ "$COLORTERM" != "truecolor" ]; then
  >&2 printf "Sorry, your terminal sucks. Try Konsole or Alacritty.\n"
  exit 1
fi
REFRESH_INTERVAL=0.12

declare -r FRAMES=(
"     \033[38;2;85;131;54m▄██▄██▄  \n ▄  ██\033[48;2;255;255;255m▄\033[48;2;1;1;1m▄\033[48;2;255;255;255m▄▄\033[48;2;1;1;1m▄\033[0m\033[38;2;85;131;54m▀▄▀\n █ ████\033[48;2;152;78;53m▄▄▄\033[38;2;35;67;249m▄\033[0m\033[38;2;85;131;54m▀  \n  \033[38;2;35;67;249m▀▀▀▀▀▀▀▀\033[0m    \n"
"      \033[38;2;85;131;54m▄██▄██▄ \n▀▄   ██\033[48;2;255;255;255m▄\033[48;2;1;1;1m▄\033[48;2;255;255;255m▄▄\033[48;2;1;1;1m▄\033[0m\033[38;2;85;131;54m▀ \n  ▀\033[38;2;35;67;249m▄\033[38;2;85;131;54m████\033[48;2;152;78;53m▄▄▄\033[0m\033[38;2;152;78;53m▀ \033[38;2;85;131;54m█\n    \033[38;2;35;67;249m▀▀▀▀▀▀▀▀\033[38;2;85;131;54m▀\033[0m \n"
"       \033[38;2;85;131;54m▄▄ ▄▄  \n▄    ▄█\033[48;2;1;1;1m▀\033[48;2;255;255;255m▀▀\033[48;2;1;1;1m▀\033[48;2;255;255;255m▀█\033[0m\033[38;2;85;131;54m \n ▀▄ ▄███\033[48;2;152;78;53m▀▀▀▀\033[0m\033[38;2;85;131;54m ▄\n   \033[38;2;35;67;249m▀\033[48;2;85;131;54m▄▄▄▄▄▄▄\033[0m\033[38;2;35;67;249m▄\033[38;2;85;131;54m▄▀\033[0m\n"
"  \033[38;2;85;131;54m▄██▄██▄     \n▀▄▀\033[48;2;1;1;1m▄\033[48;2;255;255;255m▄▄\033[48;2;1;1;1m▄\033[48;2;255;255;255m▄██\033[0m\033[38;2;85;131;54m  ▄ \n  ▀\033[48;2;35;67;249m\033[38;2;152;78;53m▀\033[48;2;85;131;54m▀▀▀    \033[0m\033[38;2;152;78;53m \033[38;2;85;131;54m█ \n    \033[38;2;35;67;249m▀▀▀▀▀▀▀▀\033[0m  \n"
" \033[38;2;85;131;54m▄██▄██▄      \n ▀\033[48;2;1;1;1m▄\033[48;2;255;255;255m▄▄\033[48;2;1;1;1m▄\033[48;2;255;255;255m▄██\033[0m\033[38;2;85;131;54m   ▄▀\n█ \033[38;2;152;78;53m▀\033[48;2;85;131;54m▀▀▀    \033[0m\033[38;2;35;67;249m▄\033[38;2;85;131;54m▀  \n ▀\033[38;2;35;67;249m▀▀▀▀▀▀▀▀\033[0m    \n"
"  \033[38;2;85;131;54m▄▄ ▄▄       \n █\033[48;2;255;255;255m▀\033[48;2;1;1;1m▀\033[48;2;255;255;255m▀▀\033[48;2;1;1;1m▀█\033[0m\033[38;2;85;131;54m▄    ▄\n▄ \033[48;2;152;78;53m▀▀▀▀███\033[0m\033[38;2;85;131;54m▄ ▄▀ \n▀▄\033[38;2;35;67;249m▄\033[48;2;85;131;54m▄▄▄▄▄▄▄\033[0m\033[38;2;35;67;249m▀\033[0m   \n"
)

HEIGHT=4
N_FRAMES=${#FRAMES[@]}

COUNTER=0

stty -echo 2>/dev/null
printf '\033[?25l' # hide cursor
unset EXIT_

while true; do
  printf "${FRAMES[$COUNTER]}"
  COUNTER=$(((COUNTER+1)%N_FRAMES))

  [[ -z $EXIT_ ]] || exit 0
  read -t $REFRESH_INTERVAL -n 1 && EXIT_=1;

  printf "\033[${HEIGHT}A\r"
done

For a bigger, much better example, see the examples directory:

You can use my utility fay to make such animations yourself, or I can do it for you, if you buy me a beer.

money

2 Likes