From 6e4a4184ae482dcdeb9c62ab39d07b3b0a2eae04 Mon Sep 17 00:00:00 2001 From: Derek Taylor Date: Mon, 21 Feb 2022 13:52:20 -0600 Subject: Changed mind on separating animated and non-animated. --- animated-colorscripts/bomber | 99 -------------------- animated-colorscripts/pipes1 | 185 -------------------------------------- animated-colorscripts/pipes2 | 52 ----------- animated-colorscripts/pipes2-slim | 60 ------------- colorscript.1 | 15 +--- colorscript.sh | 86 ++---------------- colorscripts/bomber | 99 ++++++++++++++++++++ colorscripts/pipes1 | 185 ++++++++++++++++++++++++++++++++++++++ colorscripts/pipes2 | 52 +++++++++++ colorscripts/pipes2-slim | 60 +++++++++++++ 10 files changed, 407 insertions(+), 486 deletions(-) delete mode 100755 animated-colorscripts/bomber delete mode 100755 animated-colorscripts/pipes1 delete mode 100755 animated-colorscripts/pipes2 delete mode 100755 animated-colorscripts/pipes2-slim create mode 100755 colorscripts/bomber create mode 100755 colorscripts/pipes1 create mode 100755 colorscripts/pipes2 create mode 100755 colorscripts/pipes2-slim diff --git a/animated-colorscripts/bomber b/animated-colorscripts/bomber deleted file mode 100755 index 3c632ed..0000000 --- a/animated-colorscripts/bomber +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash -#by necro -e="\e[0m" -bk="\e[38;2;1;1;1m" -bl="\e[48;2;101;166;232m" -wh="\e[48;2;251;253;252m" -pi="\e[48;2;229;139;121m" -while true; do -clear -echo -e " - $bk██████████ $bk████$e - $bk████$wh ████$e$bk ██$bl ██$e - $bk██$wh ██████$bl $bk██$e - $bk██$pi $wh ██$e$bk ████$e - $bk██$pi ██ $wh ██$e - $bk██$pi ██ $wh ██$e - $bk██$pi ██ $wh ██$e - $bk██$pi $wh ██$e - $bk████$wh ██ ██$e - $bk████████$wh ████████$e - $bk██$bl ██$wh ██$bl ██$e - $bk██$bl ██$wh ██$bl ██$e - $bk██$wh ██$bl ██████$e - $bk██$bl ██$bl ██$bl ██$e - $bk████████████████$e - $bk██$wh ██$e - $bk██████████████$e - $bk██$bl ██$e - $bk████████████████$e" -sleep 0.1 -clear -echo -e " - $bk██████████ ████$e - $bk████$wh ██████$bl ██$e - $bk██$wh ██$bl ██$e - $bk██$pi $wh ████$e - $bk████$pi ██ $wh ██$e - $bk████$pi ██ $wh ██$e - $bk████$pi ██ $wh ██$e - $bk██$pi $wh ██$e - $bk████$wh ████ ██$e - $bk██$bl ████$wh ██████████$e - $bk██$bl ██$wh ██$bl ██$wh ██$e - $bk████$wh ██$bl ██$wh ██$e - $bk████$wh ████████████████$e - $bk██$bl ██████ ████$bl ██$e - $bk████$wh $bl $wh ██████$e - $bk██$bl ██$wh ████ ██$e - $bk██$bl ████████$e$bk ██$wh ██$bl ██$e - $bk████ ████$bl ██$e - $bk██$bl ██$e - $bk████$e" -sleep 0.3 -clear -echo -e " - $bk██████████ $bk████$e - $bk████$wh ████$e$bk ██$bl ██$e - $bk██$wh ██████$bl $bk██$e - $bk██$pi $wh ██$e$bk ████$e - $bk██$pi ██ $wh ██$e - $bk██$pi ██ $wh ██$e - $bk██$pi ██ $wh ██$e - $bk██$pi $wh ██$e - $bk████$wh ██ ██$e - $bk████████$wh ████████$e - $bk██$bl ██$wh ██$bl ██$e - $bk██$bl ██$wh ██$bl ██$e - $bk██$wh ██$bl ██████$e - $bk██$bl ██$bl ██$bl ██$e - $bk████████████████$e - $bk██$wh ██$e - $bk██████████████$e - $bk██$bl ██$e - $bk████████████████$e" -sleep 0.1 -clear -echo -e " - $bk██████████ ████ - $bk████$wh ████$e $bk██$bl ██$e - $bk██$wh ████$bl ██$e - $bk██$pi $wh ██████████$e - $bk██$pi ██ $wh ██$e - $bk██$pi ██ $wh ██$e - $bk██$pi ██ $wh ██$e - $bk██$pi $wh ██$e - $bk████████$wh ██████ ██$e - $bk██$bl ██████████$wh ████$e - $bk██$bl ████ ██$wh ██$e - $bk██$wh ██$bl ██$wh ████$e - $bk██$wh ██ ███████ ██$bl ██$e - $bk████$bl ██ ██$e - $bk████$bl ████$e - $bk██████$wh $bl ██████$wh ████$e - $bk██$bl ██$wh ██$e$bk ██$wh ██$bl ██$e - $bk██$bl ██$e$bk ████$bl ██$e - $bk████$e$bk ██$bl ██$e - $bk████" -sleep 0.3 -done diff --git a/animated-colorscripts/pipes1 b/animated-colorscripts/pipes1 deleted file mode 100755 index 70a751e..0000000 --- a/animated-colorscripts/pipes1 +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env bash -# Animated pipes.sh terminal screensaver at an angle. -# Copyright (C) 2013 by Yu-Jie Lin -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# Blog: http://blog.yjl.im/2013/07/pipesxsh-animated-pipessh-terminal.html -# Gist: https://gist.github.com/livibetter/5974905 -# Screenshot: https://lh3.googleusercontent.com/-UaCta_DtgrQ/Ud6dqIgcfmI/AAAAAAAAE_8/VXPac0OpULU/s800/pipesX.sh.gif -# Screenshot: https://lh6.googleusercontent.com/-yBety-A8J_c/Ud6dk10sjBI/AAAAAAAAE_0/S98aRRV8t0s/s800/pipesX.sh%25202013-07-11--19%253A51%253A05.png -# Screencast: http://youtu.be/dITTlFPYVPA - -W=$(tput cols) H=$(tput lines) -# maximal random value + 1 -M=32768 - -SETS=('╱╲' '/\') -COLORS=(31 32 33 34 35 36 37) - -# default values -N=1 -T=0 -I=0.05 -P=25 -R=$((W * H / 4)) - -HELP="Usage: $(basename $0) [OPTIONS] -Animated pipes.sh terminal screensaver at an angle. -Options: - -n [1-] number of pipes. (Default: $N) - -t [0-$((${#SETS[@]} - 1))] type of pipes. (Default: $T) - -i [float] piping interval or maze generation interval. (Default: $I) - -P [0-100] probability of a turning pipe or of \\ in maze generation. (Default: $P) - -r [LIMIT] reset after x characters, 0 if no limit. (Default: $R) - -R random starting point. - -C no color. - -X maze generation. - -h this help message. -" - -while getopts "n:t:i:P:r:RCXh" arg; do - case $arg in - n) - ((N = OPTARG > 0 ? OPTARG : N)) - ;; - t) - ((T = (OPTARG >= 0 && OPTARG < ${#SETS[@]}) ? OPTARG : T)) - ;; - i) - I=$OPTARG - ;; - P) - ((P = (OPTARG >= 0 && OPTARG <= 100) ? OPTARG : P)) - ;; - r) - ((R = OPTARG >= 0 ? OPTARG : R)) - ;; - R) - RNDSTART=1 - ;; - C) - NOCOLOR=1 - ;; - X) - MAZE=1 - ;; - h) - echo -e "$HELP" - exit 0 - ;; - esac -done - -do_exit() { - # Show cursor and echo stdin - echo -ne "\e[?25h" - stty echo - clear - exit 0 - } -trap do_exit INT TERM - -# No echo stdin and hide the cursor -stty -echo -echo -ne "\e[?25l" - -# maze geneartion -while [[ $MAZE ]] && clear; do - [[ $NOCOLOR ]] || echo -ne "\e[1;${COLORS[${#COLORS[@]} * RANDOM / M]}m" - for ((i = 0; i < W * H; i++ )); do - echo -ne ${SETS[T]:100 * RANDOM / M < P:1} - done - read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit -done - -# initialze values -for ((n = 0; n < N; n++)); do - ((X[n] = RNDSTART ? (W + 2) * RANDOM / M : W / 2)) - ((Y[n] = RNDSTART ? (H + 2) * RANDOM / M : H / 2)) - D[n]=$((4 * RANDOM / M)) - C[n]=${COLORS[${#COLORS[@]} * RANDOM / M]} -done - -clear -while :; do - for ((n = 0; n < N; n++, CC = 0)); do - x=${X[n]} y=${Y[n]} - d=${D[n]} c=${C[n]} - - # calculate new direction `d` - # 1 0 - # \/ 4 directions 0 to 3 - # /\ - # 2 3 - # valid directions: d: dd', d' is the new direction - # d - # 0: / 00 \ 01 03 - # / / /\ - # 1: / 10 \ 11 12 - # \ \ /\ - # 2: \/ 21 / 22 / 23 - # / \ - # 3: \/ 30 \ 32 \ 33 - # / \ - ((d = (100 * RANDOM / M) < P ? ((d + 1) + 2 * (RANDOM % 2)) % 4 : d)) - ((e = (d + 1) % 4)) - - # calculate new position - # d' x' y' - # 0: x+1 y-1 - # 1: x-1 y-1 - # 2: x-1 y+1 - # 3: x+1 y+1 - ((xn = e < 2 ? x + 1 : x - 1)) - ((yn = d < 2 ? y - 1 : y + 1)) - - # adjust position and change color? - ((d < 2 && y == 0)) && ((yn--, CC=1)) - ((e > 1 && x == 0)) && ((xn--, CC=1)) - ((d > 1 && y == H)) && ((yn++, CC=1)) - ((e < 2 && x == W)) && ((xn++, CC=1)) - ((CC)) && c=${COLORS[${#COLORS[@]} * RANDOM / M]} - - # warp pipe - ((xn = (xn + W + 1) % (W + 1))) - ((yn = (yn + H + 1) % (H + 1))) - - # calculate position in terminal - # d' xt yt - # 0: x' y'+1 - # 1: x'+1 y'+1 - # 2: x'+1 y' - # 3: x' y' - ((xt = e < 2 ? xn : xn + 1)) - ((yt = d < 2 ? yn + 1 : yn)) - - echo -ne "\e[${yt};${xt}H" - [[ $NOCOLOR ]] || echo -ne "\e[1;${c}m" - echo -n "${SETS[T]:d%2:1}" - - X[n]=$xn Y[n]=$yn - D[n]=$d C[n]=$c - done - read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit - ((R)) && ((r += N, r >= R)) && r=0 && clear -done - -do_exit - diff --git a/animated-colorscripts/pipes2 b/animated-colorscripts/pipes2 deleted file mode 100755 index c658f37..0000000 --- a/animated-colorscripts/pipes2 +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash - -declare -i f=75 s=13 r=2000 t=0 c=1 n=0 l=0 -declare -ir w=$(tput cols) h=$(tput lines) -declare -i x=$((w/2)) y=$((h/2)) -declare -ar v=( [00]="\x83" [01]="\x8f" [03]="\x93" - [10]="\x9b" [11]="\x81" [12]="\x93" - [21]="\x97" [22]="\x83" [23]="\x9b" - [30]="\x97" [32]="\x8f" [33]="\x81" ) - -OPTIND=1 -while getopts "f:s:r:h" arg; do -case $arg in - f) ((f=($OPTARG>19 && $OPTARG<101)?$OPTARG:$f));; - s) ((s=($OPTARG>4 && $OPTARG<16 )?$OPTARG:$s));; - r) ((r=($OPTARG>0)?$OPTARG:$r));; - h) echo -e "Usage: pipes [OPTION]..." - echo -e "Animated pipes terminal screensaver.\n" - echo -e " -f [20-100]\tframerate (D=75)." - echo -e " -s [5-15]\tprobability of a straight fitting (D=13)." - echo -e " -r LIMIT\treset after x characters (D=2000)." - echo -e " -h\t\thelp (this screen).\n" - exit 0;; - esac -done - -tput smcup -tput reset -tput civis -while ! read -t0.0$((1000/$f)) -n1; do - # New position: - (($l%2)) && ((x+=($l==1)?1:-1)) - ((!($l%2))) && ((y+=($l==2)?1:-1)) - - # Loop on edges (change color on loop): - ((c=($x>$w || $x<0 || $y>$h || $y<0)?($RANDOM%7-1):$c)) - ((x=($x>$w)?0:(($x<0)?$w:$x))) - ((y=($y>$h)?0:(($y<0)?$h:$y))) - - # New random direction: - ((n=$RANDOM%$s-1)) - ((n=($n>1||$n==0)?$l:$l+$n)) - ((n=($n<0)?3:$n%4)) - - # Print: - tput cup $y $x - echo -ne "\033[1;3${c}m\xe2\x94${v[$l$n]}" - (($t>$r)) && tput reset && tput civis && t=0 || ((t++)) - l=$n -done -tput rmcup - diff --git a/animated-colorscripts/pipes2-slim b/animated-colorscripts/pipes2-slim deleted file mode 100755 index 7b26506..0000000 --- a/animated-colorscripts/pipes2-slim +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash - -declare -i f=75 s=13 r=2000 t=0 c=1 n=0 l=0 -declare -ir w=$(tput cols) h=$(tput lines) -declare -i x=$((w/2)) y=$((h/2)) - -declare -ar v=( [00]="\x82" [01]="\x8c" [03]="\x90" #### - [10]="\x98" [11]="\x80" [12]="\x90" # Normal UTF-8 box characters. - [21]="\x94" [22]="\x82" [23]="\x98" # (These are the default for they are supported almost everywhere.) - [30]="\x94" [32]="\x8c" [33]="\x80" ) #### - -# declare -ar v=( [00]="\x83" [01]="\x8f" [03]="\x93" #### -# [10]="\x9b" [11]="\x81" [12]="\x93" # Heavy UTF-8 box characters. -# [21]="\x97" [22]="\x83" [23]="\x9b" # (Uncomment only if your terminal supports it) -# [30]="\x97" [32]="\x8f" [33]="\x81" ) #### - -OPTIND=1 -while getopts "f:s:r:h" arg; do - case $arg in - f) ((f=($OPTARG>19 && $OPTARG<101)?$OPTARG:$f));; - s) ((s=($OPTARG>4 && $OPTARG<16 )?$OPTARG:$s));; - r) ((r=($OPTARG>0)?$OPTARG:$r));; - h) echo -e "Usage: pipes [OPTION]..." - echo -e "Animated pipes terminal screensaver.\n" - echo -e " -f [20-100]\tframerate (D=75)." - echo -e " -s [5-15]\tprobability of a straight fitting (D=13)." - echo -e " -r LIMIT\treset after x characters (D=2000)." - echo -e " -h\t\thelp (this screen).\n" - exit 0;; - esac - done - -tput smcup -tput reset -tput civis - -trap "tput rmcup; tput reset; exit" SIGINT - -while true; do - # New position: - (($l%2)) && ((x+=($l==1)?1:-1)) - ((!($l%2))) && ((y+=($l==2)?1:-1)) - - # Loop on edges (change color on loop): - ((c=($x>$w || $x<0 || $y>$h || $y<0)?($RANDOM%7):$c)) - ((x=($x>$w)?0:(($x<0)?$w:$x))) - ((y=($y>$h)?0:(($y<0)?$h:$y))) - - # New random direction: - ((n=$RANDOM%$s-1)) - ((n=($n>1||$n==0)?$l:$l+$n)) - ((n=($n<0)?3:$n%4)) - - # Print: - tput cup $y $x - printf "\033[1;3${c}m\xe2\x94${v[$l$n]}" - (($t>$r)) && tput reset && tput civis && t=0 || ((t++)) - l=$n - sleep $(echo "scale=5;1/$f"|bc) -done diff --git a/colorscript.1 b/colorscript.1 index c1a472c..e4eb4a2 100644 --- a/colorscript.1 +++ b/colorscript.1 @@ -18,22 +18,13 @@ colorscript is the program that selects and runs the scripts that were installed Print this help. .SS "-l, --list, list" .PP -List all installed colorscripts. +List all installed color scripts. .SS "-r, --random, random" .PP -Run a random NON-ANIMATED colorscript. -.SS "-R, --random-animated, random-animated" -.PP -Run a random ANIMATED color script. +Run a random color script. .SS "-e, --exec, exec" .PP -Run specified NON-ANIMATED colorscript by SCRIPT NAME or INDEX. -.SS "-E, --exec-animated, exec-animated" -.PP -Run specified ANIAMTED colorscript by SCRIPT NAME or INDEX. -.SS "-a, --all, all" -.PP -Print all NON-ANIMATED colorscripts with their script name. +Run specified color script by SCRIPT NAME or INDEX. .SH "FILES" .SS "/usr/bin/colorscript" diff --git a/colorscript.sh b/colorscript.sh index a053f73..3d30375 100755 --- a/colorscript.sh +++ b/colorscript.sh @@ -9,19 +9,9 @@ else LS_CMD="$(command -v ls) ${DIR_COLORSCRIPTS}" fi -DIR_ANIMATED_COLORSCRIPTS="/opt/shell-color-scripts/animated-colorscripts" -if command -v find &>/dev/null; then - LS_CMD_ANIMATED="$(command -v find) ${DIR_ANIMATED_COLORSCRIPTS} -maxdepth 1 -type f" -else - LS_CMD_ANIMATED="$(command -v ls) ${DIR_ANIMATED_COLORSCRIPTS}" -fi - list_colorscripts="$($LS_CMD | xargs -I $ basename $ | cut -d ' ' -f 1 | nl)" length_colorscripts="$($LS_CMD | wc -l)" -list_colorscripts_animated="$($LS_CMD_ANIMATED | xargs -I $ basename $ | cut -d ' ' -f 1 | nl)" -length_colorscripts_animated="$($LS_CMD_ANIMATED | wc -l)" - fmt_help=" %-20s\t%-54s\n" function _help() { echo "Description: A collection of terminal color scripts." @@ -29,25 +19,15 @@ function _help() { echo "Usage: colorscript [OPTION] [SCRIPT NAME/INDEX]" printf "${fmt_help}" \ "-h, --help, help" "Print this help." \ - "-l, --list, list" "List all installed colorscripts." \ - "-r, --random, random" "Run a random NON-ANIMATED colorscript." \ - "-R, --random-animated, random-animated" "Run a random ANIMATED colorscript." \ - "-e, --exec, exec" "Run a specified NON-ANIMATED colorscript by SCRIPT NAME or INDEX."\ - "-E, --exec-animated, exec-animated" "Run a specified ANIMATED colorscript by SCRIPT NAME or INDEX."\ - "-b, --blacklist, blacklist" "Blacklist a colorscript by SCRIPT NAME or INDEX." \ - "-a, --all, all" "List the outputs of all NON-ANIMATED colorscripts with their SCRIPT NAME" + "-l, --list, list" "List all installed color scripts." \ + "-r, --random, random" "Run a random color script." \ + "-e, --exec, exec" "Run a specified color script by SCRIPT NAME or INDEX."\ + "-b, --blacklist, blacklist" "Blacklist a color script by SCRIPT NAME or INDEX." \ + "-a, --all, all" "List the outputs of all colorscripts with their SCRIPT NAME" } function _list() { - echo "--------------------------------------------------" - echo "There are "$($LS_CMD_ANIMATED | wc -l)" ANIMATED colorscripts. Run with:" - echo " colorscript -E name-or-index" - echo "--------------------------------------------------" - echo "${list_colorscripts_animated}" - echo "--------------------------------------------------" - echo "There are "$($LS_CMD | wc -l)" NON-ANIMATED colorscripts. Run with:" - echo " colorscript -e name-or-index" - echo "--------------------------------------------------" + echo "There are "$($LS_CMD | wc -l)" installed color scripts:" echo "${list_colorscripts}" } @@ -61,24 +41,10 @@ function _random() { exec "${DIR_COLORSCRIPTS}/${random_colorscript}" } -function _random_animated() { - declare -i random_index=$RANDOM%$length_colorscripts - [[ $random_index -eq 0 ]] && random_index=1 - - random_colorscript="$(echo "${list_colorscripts}" | sed -n ${random_index}p \ - | tr -d ' ' | tr '\t' ' ' | cut -d ' ' -f 2)" - # echo "${random_colorscript}" - exec "${DIR_ANIMATED_COLORSCRIPTS}/${random_colorscript}" -} - function ifhascolorscipt() { [[ -e "${DIR_COLORSCRIPTS}/$1" ]] && echo "Has this color script." } -function ifhascolorscipt_animated() { - [[ -e "${DIR_ANIMATED_COLORSCRIPTS}/$1" ]] && echo "Has this color script." -} - function _run_by_name() { if [[ "$1" == "random" ]]; then _random @@ -90,17 +56,6 @@ function _run_by_name() { fi } -function _run_by_name_animated() { - if [[ "$1" == "random" ]]; then - _random - elif [[ -n "$(ifhascolorscipt_animated "$1")" ]]; then - exec "${DIR_ANIMATED_COLORSCRIPTS}/$1" - else - echo "Input error, Don't have color script named $1." - exit 1 - fi -} - function _run_by_index() { if [[ "$1" -gt 0 && "$1" -le "${length_colorscripts}" ]]; then @@ -108,19 +63,7 @@ function _run_by_index() { | tr -d ' ' | tr '\t' ' ' | cut -d ' ' -f 2)" exec "${DIR_COLORSCRIPTS}/${colorscript}" else - echo "Input error, Don't have NON-ANIMATED color script indexed $1." - exit 1 - fi -} - -function _run_by_index_animated() { - if [[ "$1" -gt 0 && "$1" -le "${length_colorscripts_animated}" ]]; then - - colorscript="$(echo "${list_colorscripts_animated}" | sed -n ${1}p \ - | tr -d ' ' | tr '\t' ' ' | cut -d ' ' -f 2)" - exec "${DIR_ANIMATED_COLORSCRIPTS}/${colorscript}" - else - echo "Input error, Don't have ANIMATED color script indexed $1." + echo "Input error, Don't have color script indexed $1." exit 1 fi } @@ -133,14 +76,6 @@ function _run_colorscript() { fi } -function _run_animated_colorscript() { - if [[ "$1" =~ ^[0-9]+$ ]]; then - _run_by_index_animated "$1" - else - _run_by_name_animated "$1" - fi -} - function _run_all() { for s in $DIR_COLORSCRIPTS/* do @@ -169,12 +104,9 @@ case "$#" in -l | --list | list) _list ;; - -r | --random-static | random) + -r | --random | random) _random ;; - -R | --random-animated | random-animated) - _random_animated - ;; -a | --all | all) _run_all ;; @@ -187,8 +119,6 @@ case "$#" in 2) if [[ "$1" == "-e" || "$1" == "--exec" || "$1" == "exec" ]]; then _run_colorscript "$2" - elif [[ "$1" == "-E" || "$1" == "--exec-animated" || "$1" == "exec-animated" ]]; then - _run_animated_colorscript "$2" elif [[ "$1" == "-b" || "$1" == "--blacklist" || "$1" == "blacklist" ]]; then _blacklist_colorscript "$2" else diff --git a/colorscripts/bomber b/colorscripts/bomber new file mode 100755 index 0000000..3c632ed --- /dev/null +++ b/colorscripts/bomber @@ -0,0 +1,99 @@ +#!/usr/bin/env bash +#by necro +e="\e[0m" +bk="\e[38;2;1;1;1m" +bl="\e[48;2;101;166;232m" +wh="\e[48;2;251;253;252m" +pi="\e[48;2;229;139;121m" +while true; do +clear +echo -e " + $bk██████████ $bk████$e + $bk████$wh ████$e$bk ██$bl ██$e + $bk██$wh ██████$bl $bk██$e + $bk██$pi $wh ██$e$bk ████$e + $bk██$pi ██ $wh ██$e + $bk██$pi ██ $wh ██$e + $bk██$pi ██ $wh ██$e + $bk██$pi $wh ██$e + $bk████$wh ██ ██$e + $bk████████$wh ████████$e + $bk██$bl ██$wh ██$bl ██$e + $bk██$bl ██$wh ██$bl ██$e + $bk██$wh ██$bl ██████$e + $bk██$bl ██$bl ██$bl ██$e + $bk████████████████$e + $bk██$wh ██$e + $bk██████████████$e + $bk██$bl ██$e + $bk████████████████$e" +sleep 0.1 +clear +echo -e " + $bk██████████ ████$e + $bk████$wh ██████$bl ██$e + $bk██$wh ██$bl ██$e + $bk██$pi $wh ████$e + $bk████$pi ██ $wh ██$e + $bk████$pi ██ $wh ██$e + $bk████$pi ██ $wh ██$e + $bk██$pi $wh ██$e + $bk████$wh ████ ██$e + $bk██$bl ████$wh ██████████$e + $bk██$bl ██$wh ██$bl ██$wh ██$e + $bk████$wh ██$bl ██$wh ██$e + $bk████$wh ████████████████$e + $bk██$bl ██████ ████$bl ██$e + $bk████$wh $bl $wh ██████$e + $bk██$bl ██$wh ████ ██$e + $bk██$bl ████████$e$bk ██$wh ██$bl ██$e + $bk████ ████$bl ██$e + $bk██$bl ██$e + $bk████$e" +sleep 0.3 +clear +echo -e " + $bk██████████ $bk████$e + $bk████$wh ████$e$bk ██$bl ██$e + $bk██$wh ██████$bl $bk██$e + $bk██$pi $wh ██$e$bk ████$e + $bk██$pi ██ $wh ██$e + $bk██$pi ██ $wh ██$e + $bk██$pi ██ $wh ██$e + $bk██$pi $wh ██$e + $bk████$wh ██ ██$e + $bk████████$wh ████████$e + $bk██$bl ██$wh ██$bl ██$e + $bk██$bl ██$wh ██$bl ██$e + $bk██$wh ██$bl ██████$e + $bk██$bl ██$bl ██$bl ██$e + $bk████████████████$e + $bk██$wh ██$e + $bk██████████████$e + $bk██$bl ██$e + $bk████████████████$e" +sleep 0.1 +clear +echo -e " + $bk██████████ ████ + $bk████$wh ████$e $bk██$bl ██$e + $bk██$wh ████$bl ██$e + $bk██$pi $wh ██████████$e + $bk██$pi ██ $wh ██$e + $bk██$pi ██ $wh ██$e + $bk██$pi ██ $wh ██$e + $bk██$pi $wh ██$e + $bk████████$wh ██████ ██$e + $bk██$bl ██████████$wh ████$e + $bk██$bl ████ ██$wh ██$e + $bk██$wh ██$bl ██$wh ████$e + $bk██$wh ██ ███████ ██$bl ██$e + $bk████$bl ██ ██$e + $bk████$bl ████$e + $bk██████$wh $bl ██████$wh ████$e + $bk██$bl ██$wh ██$e$bk ██$wh ██$bl ██$e + $bk██$bl ██$e$bk ████$bl ██$e + $bk████$e$bk ██$bl ██$e + $bk████" +sleep 0.3 +done diff --git a/colorscripts/pipes1 b/colorscripts/pipes1 new file mode 100755 index 0000000..70a751e --- /dev/null +++ b/colorscripts/pipes1 @@ -0,0 +1,185 @@ +#!/usr/bin/env bash +# Animated pipes.sh terminal screensaver at an angle. +# Copyright (C) 2013 by Yu-Jie Lin +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# Blog: http://blog.yjl.im/2013/07/pipesxsh-animated-pipessh-terminal.html +# Gist: https://gist.github.com/livibetter/5974905 +# Screenshot: https://lh3.googleusercontent.com/-UaCta_DtgrQ/Ud6dqIgcfmI/AAAAAAAAE_8/VXPac0OpULU/s800/pipesX.sh.gif +# Screenshot: https://lh6.googleusercontent.com/-yBety-A8J_c/Ud6dk10sjBI/AAAAAAAAE_0/S98aRRV8t0s/s800/pipesX.sh%25202013-07-11--19%253A51%253A05.png +# Screencast: http://youtu.be/dITTlFPYVPA + +W=$(tput cols) H=$(tput lines) +# maximal random value + 1 +M=32768 + +SETS=('╱╲' '/\') +COLORS=(31 32 33 34 35 36 37) + +# default values +N=1 +T=0 +I=0.05 +P=25 +R=$((W * H / 4)) + +HELP="Usage: $(basename $0) [OPTIONS] +Animated pipes.sh terminal screensaver at an angle. +Options: + -n [1-] number of pipes. (Default: $N) + -t [0-$((${#SETS[@]} - 1))] type of pipes. (Default: $T) + -i [float] piping interval or maze generation interval. (Default: $I) + -P [0-100] probability of a turning pipe or of \\ in maze generation. (Default: $P) + -r [LIMIT] reset after x characters, 0 if no limit. (Default: $R) + -R random starting point. + -C no color. + -X maze generation. + -h this help message. +" + +while getopts "n:t:i:P:r:RCXh" arg; do + case $arg in + n) + ((N = OPTARG > 0 ? OPTARG : N)) + ;; + t) + ((T = (OPTARG >= 0 && OPTARG < ${#SETS[@]}) ? OPTARG : T)) + ;; + i) + I=$OPTARG + ;; + P) + ((P = (OPTARG >= 0 && OPTARG <= 100) ? OPTARG : P)) + ;; + r) + ((R = OPTARG >= 0 ? OPTARG : R)) + ;; + R) + RNDSTART=1 + ;; + C) + NOCOLOR=1 + ;; + X) + MAZE=1 + ;; + h) + echo -e "$HELP" + exit 0 + ;; + esac +done + +do_exit() { + # Show cursor and echo stdin + echo -ne "\e[?25h" + stty echo + clear + exit 0 + } +trap do_exit INT TERM + +# No echo stdin and hide the cursor +stty -echo +echo -ne "\e[?25l" + +# maze geneartion +while [[ $MAZE ]] && clear; do + [[ $NOCOLOR ]] || echo -ne "\e[1;${COLORS[${#COLORS[@]} * RANDOM / M]}m" + for ((i = 0; i < W * H; i++ )); do + echo -ne ${SETS[T]:100 * RANDOM / M < P:1} + done + read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit +done + +# initialze values +for ((n = 0; n < N; n++)); do + ((X[n] = RNDSTART ? (W + 2) * RANDOM / M : W / 2)) + ((Y[n] = RNDSTART ? (H + 2) * RANDOM / M : H / 2)) + D[n]=$((4 * RANDOM / M)) + C[n]=${COLORS[${#COLORS[@]} * RANDOM / M]} +done + +clear +while :; do + for ((n = 0; n < N; n++, CC = 0)); do + x=${X[n]} y=${Y[n]} + d=${D[n]} c=${C[n]} + + # calculate new direction `d` + # 1 0 + # \/ 4 directions 0 to 3 + # /\ + # 2 3 + # valid directions: d: dd', d' is the new direction + # d + # 0: / 00 \ 01 03 + # / / /\ + # 1: / 10 \ 11 12 + # \ \ /\ + # 2: \/ 21 / 22 / 23 + # / \ + # 3: \/ 30 \ 32 \ 33 + # / \ + ((d = (100 * RANDOM / M) < P ? ((d + 1) + 2 * (RANDOM % 2)) % 4 : d)) + ((e = (d + 1) % 4)) + + # calculate new position + # d' x' y' + # 0: x+1 y-1 + # 1: x-1 y-1 + # 2: x-1 y+1 + # 3: x+1 y+1 + ((xn = e < 2 ? x + 1 : x - 1)) + ((yn = d < 2 ? y - 1 : y + 1)) + + # adjust position and change color? + ((d < 2 && y == 0)) && ((yn--, CC=1)) + ((e > 1 && x == 0)) && ((xn--, CC=1)) + ((d > 1 && y == H)) && ((yn++, CC=1)) + ((e < 2 && x == W)) && ((xn++, CC=1)) + ((CC)) && c=${COLORS[${#COLORS[@]} * RANDOM / M]} + + # warp pipe + ((xn = (xn + W + 1) % (W + 1))) + ((yn = (yn + H + 1) % (H + 1))) + + # calculate position in terminal + # d' xt yt + # 0: x' y'+1 + # 1: x'+1 y'+1 + # 2: x'+1 y' + # 3: x' y' + ((xt = e < 2 ? xn : xn + 1)) + ((yt = d < 2 ? yn + 1 : yn)) + + echo -ne "\e[${yt};${xt}H" + [[ $NOCOLOR ]] || echo -ne "\e[1;${c}m" + echo -n "${SETS[T]:d%2:1}" + + X[n]=$xn Y[n]=$yn + D[n]=$d C[n]=$c + done + read -t $I -n 1 && [[ $REPLY =~ q|Q ]] && do_exit + ((R)) && ((r += N, r >= R)) && r=0 && clear +done + +do_exit + diff --git a/colorscripts/pipes2 b/colorscripts/pipes2 new file mode 100755 index 0000000..c658f37 --- /dev/null +++ b/colorscripts/pipes2 @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +declare -i f=75 s=13 r=2000 t=0 c=1 n=0 l=0 +declare -ir w=$(tput cols) h=$(tput lines) +declare -i x=$((w/2)) y=$((h/2)) +declare -ar v=( [00]="\x83" [01]="\x8f" [03]="\x93" + [10]="\x9b" [11]="\x81" [12]="\x93" + [21]="\x97" [22]="\x83" [23]="\x9b" + [30]="\x97" [32]="\x8f" [33]="\x81" ) + +OPTIND=1 +while getopts "f:s:r:h" arg; do +case $arg in + f) ((f=($OPTARG>19 && $OPTARG<101)?$OPTARG:$f));; + s) ((s=($OPTARG>4 && $OPTARG<16 )?$OPTARG:$s));; + r) ((r=($OPTARG>0)?$OPTARG:$r));; + h) echo -e "Usage: pipes [OPTION]..." + echo -e "Animated pipes terminal screensaver.\n" + echo -e " -f [20-100]\tframerate (D=75)." + echo -e " -s [5-15]\tprobability of a straight fitting (D=13)." + echo -e " -r LIMIT\treset after x characters (D=2000)." + echo -e " -h\t\thelp (this screen).\n" + exit 0;; + esac +done + +tput smcup +tput reset +tput civis +while ! read -t0.0$((1000/$f)) -n1; do + # New position: + (($l%2)) && ((x+=($l==1)?1:-1)) + ((!($l%2))) && ((y+=($l==2)?1:-1)) + + # Loop on edges (change color on loop): + ((c=($x>$w || $x<0 || $y>$h || $y<0)?($RANDOM%7-1):$c)) + ((x=($x>$w)?0:(($x<0)?$w:$x))) + ((y=($y>$h)?0:(($y<0)?$h:$y))) + + # New random direction: + ((n=$RANDOM%$s-1)) + ((n=($n>1||$n==0)?$l:$l+$n)) + ((n=($n<0)?3:$n%4)) + + # Print: + tput cup $y $x + echo -ne "\033[1;3${c}m\xe2\x94${v[$l$n]}" + (($t>$r)) && tput reset && tput civis && t=0 || ((t++)) + l=$n +done +tput rmcup + diff --git a/colorscripts/pipes2-slim b/colorscripts/pipes2-slim new file mode 100755 index 0000000..7b26506 --- /dev/null +++ b/colorscripts/pipes2-slim @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +declare -i f=75 s=13 r=2000 t=0 c=1 n=0 l=0 +declare -ir w=$(tput cols) h=$(tput lines) +declare -i x=$((w/2)) y=$((h/2)) + +declare -ar v=( [00]="\x82" [01]="\x8c" [03]="\x90" #### + [10]="\x98" [11]="\x80" [12]="\x90" # Normal UTF-8 box characters. + [21]="\x94" [22]="\x82" [23]="\x98" # (These are the default for they are supported almost everywhere.) + [30]="\x94" [32]="\x8c" [33]="\x80" ) #### + +# declare -ar v=( [00]="\x83" [01]="\x8f" [03]="\x93" #### +# [10]="\x9b" [11]="\x81" [12]="\x93" # Heavy UTF-8 box characters. +# [21]="\x97" [22]="\x83" [23]="\x9b" # (Uncomment only if your terminal supports it) +# [30]="\x97" [32]="\x8f" [33]="\x81" ) #### + +OPTIND=1 +while getopts "f:s:r:h" arg; do + case $arg in + f) ((f=($OPTARG>19 && $OPTARG<101)?$OPTARG:$f));; + s) ((s=($OPTARG>4 && $OPTARG<16 )?$OPTARG:$s));; + r) ((r=($OPTARG>0)?$OPTARG:$r));; + h) echo -e "Usage: pipes [OPTION]..." + echo -e "Animated pipes terminal screensaver.\n" + echo -e " -f [20-100]\tframerate (D=75)." + echo -e " -s [5-15]\tprobability of a straight fitting (D=13)." + echo -e " -r LIMIT\treset after x characters (D=2000)." + echo -e " -h\t\thelp (this screen).\n" + exit 0;; + esac + done + +tput smcup +tput reset +tput civis + +trap "tput rmcup; tput reset; exit" SIGINT + +while true; do + # New position: + (($l%2)) && ((x+=($l==1)?1:-1)) + ((!($l%2))) && ((y+=($l==2)?1:-1)) + + # Loop on edges (change color on loop): + ((c=($x>$w || $x<0 || $y>$h || $y<0)?($RANDOM%7):$c)) + ((x=($x>$w)?0:(($x<0)?$w:$x))) + ((y=($y>$h)?0:(($y<0)?$h:$y))) + + # New random direction: + ((n=$RANDOM%$s-1)) + ((n=($n>1||$n==0)?$l:$l+$n)) + ((n=($n<0)?3:$n%4)) + + # Print: + tput cup $y $x + printf "\033[1;3${c}m\xe2\x94${v[$l$n]}" + (($t>$r)) && tput reset && tput civis && t=0 || ((t++)) + l=$n + sleep $(echo "scale=5;1/$f"|bc) +done -- cgit v1.3-2-g11bf