From 0f8afa2a7fca6d8998c022bae1c1b09540e6bcd1 Mon Sep 17 00:00:00 2001 From: crowetic Date: Tue, 15 Jul 2025 18:08:59 -0700 Subject: [PATCH] re-write on rainbow text --- Qortal-Setup-Linux.sh | 141 ++++++++---------------------------------- 1 file changed, 26 insertions(+), 115 deletions(-) diff --git a/Qortal-Setup-Linux.sh b/Qortal-Setup-Linux.sh index c121444..8078819 100644 --- a/Qortal-Setup-Linux.sh +++ b/Qortal-Setup-Linux.sh @@ -9,85 +9,34 @@ CYAN='\033[0;36m' RED='\033[0;31m' NC='\033[0m' -render_gradient_string() { - local input="$1" - local regex='#([0-9a-fA-F]{6})(.)' - - while [[ "$input" =~ $regex ]]; do - local hex="${BASH_REMATCH[1]}" - local char="${BASH_REMATCH[2]}" - local r=$((16#${hex:0:2})) - local g=$((16#${hex:2:2})) - local b=$((16#${hex:4:2})) - - printf "\e[38;2;%d;%d;%dm%s" "$r" "$g" "$b" "$char" - - input="${input#"#${hex}${char}"}" - done - - echo -e "\e[0m" -} - - - -rainbowize_text() { +print_rainbow_text() { local text="$1" local freq=0.15 local pi=3.14159265 local i=0 - local r g b char while IFS= read -r -n1 char || [ -n "$char" ]; do if [[ "$char" == $'\n' ]]; then - echo # newline + echo continue fi - # ANSI-safe: skip formatting on control characters + # Keep control characters uncolored if [[ "$char" =~ [[:cntrl:]] ]]; then + printf "%s" "$char" continue fi + # Sine wave-based color cycling, clamped to avoid too dark/light r=$(printf "%.0f" "$(echo "s($freq*$i + 0) * 95 + 160" | bc -l)") g=$(printf "%.0f" "$(echo "s($freq*$i + 2*$pi/3) * 95 + 160" | bc -l)") b=$(printf "%.0f" "$(echo "s($freq*$i + 4*$pi/3) * 95 + 160" | bc -l)") - printf "\e[38;2;%d;%d;%dm%s" "$r" "$g" "$b" "$char" + printf "\e[38;2;%d;%d;%dm%s\e[0m" "$r" "$g" "$b" "$char" ((i++)) done <<< "$text" - - echo -e "\e[0m" } - - - -# rainbowize_text() { -# local text="$1" -# local freq=0.15 -# local i=0 -# local output="" -# local pi=3.14159265 - -# while IFS= read -r line; do -# for (( j=0; j<${#line}; j++ )); do -# char="${line:$j:1}" -# if [[ "$char" == " " ]]; then -# output+="$char" -# continue -# fi -# r=$(awk -v i=$i -v f=$freq -v pi=$pi 'BEGIN { printf("%02x", 127 * (sin(f*i + 0) + 1)) }') -# g=$(awk -v i=$i -v f=$freq -v pi=$pi 'BEGIN { printf("%02x", 127 * (sin(f*i + 2*pi/3) + 1)) }') -# b=$(awk -v i=$i -v f=$freq -v pi=$pi 'BEGIN { printf("%02x", 127 * (sin(f*i + 4*pi/3) + 1)) }') -# output+="#${r}${g}${b}${char}" -# ((i++)) -# done -# output+=$'\n' -# done <<< "$text" - -# echo "$output" -# } - intro_block=' ---------------------------------------- -Qortal Universal Linux Install Script - @@ -109,7 +58,7 @@ text_004=' - Correctly establish launchers for Qortal Hub ' text_005=' -- Correctly create entires in desktop environment menus for Qortal Hub +- Correctly create entries in desktop environment menus for Qortal Hub ' text_006=' - Ensure Qortal Hub has required no-sandbox flag if system requires it @@ -136,64 +85,26 @@ text_013=' Script will now begin... ' -introtext=$(rainbowize_text "$intro_block") -rb_001=$(rainbowize_text "$text_001") -rb_002=$(rainbowize_text "$text_002") -rb_003=$(rainbowize_text "$text_003") -rb_004=$(rainbowize_text "$text_004") -rb_005=$(rainbowize_text "$text_005") -rb_006=$(rainbowize_text "$text_006") -rb_007=$(rainbowize_text "$text_007") -rb_008=$(rainbowize_text "$text_008") -rb_009=$(rainbowize_text "$text_009") -rb_010=$(rainbowize_text "$text_010") -rb_011=$(rainbowize_text "$text_011") -rb_012=$(rainbowize_text "$text_012") -rb_013=$(rainbowize_text "$text_013") +echo +print_rainbow_text "$intro_block" +echo; sleep 1 + +print_rainbow_text "$text_001"; sleep 1 +print_rainbow_text "$text_002"; sleep 0.25 +print_rainbow_text "$text_003"; sleep 0.25 +print_rainbow_text "$text_004"; sleep 0.25 +print_rainbow_text "$text_005"; sleep 0.25 +print_rainbow_text "$text_006"; sleep 0.25 +print_rainbow_text "$text_007"; sleep 0.25 +print_rainbow_text "$text_008"; sleep 0.25 +print_rainbow_text "$text_009"; sleep 0.25 +print_rainbow_text "$text_010"; sleep 0.25 +print_rainbow_text "$text_011"; sleep 0.5 +print_rainbow_text "$text_012"; sleep 1 +print_rainbow_text "$text_013" +echo + -echo -e "\n" -render_gradient_string "$introtext" -echo -e "\n" -sleep 1 -echo -e "\n" -render_gradient_string "$rb_001" -sleep 1 -echo -e "\n" -render_gradient_string "$rb_002" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_003" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_004" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_005" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_006" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_007" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_008" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_009" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_010" -sleep 0.25 -echo -e "\n" -render_gradient_string "$rb_011" -sleep 0.5 -echo -e "\n" -render_gradient_string "$rb_012" -sleep 1 -echo -e "\n" -render_gradient_string "$rb_013" -echo -e "\n" BACKUP_EXECUTED=false QORTAL_CORE_GOOD=false