-
-
Save sontek/1505483 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
LINES=$(tput lines) | |
COLUMNS=$(tput cols) | |
declare -A snowflakes | |
declare -A lastflakes | |
clear | |
function move_flake() { | |
i="$1" | |
if [ "${snowflakes[$i]}" = "" ] || [ "${snowflakes[$i]}" = "$LINES" ]; then | |
snowflakes[$i]=0 | |
else | |
if [ "${lastflakes[$i]}" != "" ]; then | |
printf "\033[%s;%sH \033[1;1H " ${lastflakes[$i]} $i | |
fi | |
fi | |
printf "\033[%s;%sH\u274$[($RANDOM%6)+3]\033[1;1H" ${snowflakes[$i]} $i | |
lastflakes[$i]=${snowflakes[$i]} | |
snowflakes[$i]=$((${snowflakes[$i]}+1)) | |
} | |
while : | |
do | |
i=$(($RANDOM % $COLUMNS)) | |
move_flake $i | |
for x in "${!lastflakes[@]}" | |
do | |
move_flake "$x" | |
done | |
sleep 0.1 | |
done |
@amstan @blottis
I've also been trying to get the snow effect as a background on my running terminal. I don't think this is possible without some major refactoring in the bash script as the print out to stdout would collide with normal terminal function use.
In case you are like me and found this post years later, many modern terminals now have built in functionality for effects. I've been using Windows Terminal
to get the desired snow effect I want.
Yeah, the only way to get the effect during usage is built-in features of the terminal like shaders and stuff like what you did for the windows terminal. This is a generic / cross platform way of getting effects that doesn't depend on the shell at all
Same issue
@heyarviind @alaz-aura @sandippingle the previous revision works: https://gist.github.com/sontek/1505483/ed3449161c88f3ca5f96c1286009fc68d326d4e8
Yea new revision doesnt work for me either but old revision works great
Wow, interesting that others are finding this today. I've done a lot of work on this over the years and its currently packaged over here:
I think people are finding it through a python implementation that got to hackernews front page https://news.ycombinator.com/item?id=38652339
Oh thats also yours hahaha @sontek
For people on MacOS that the new version isn't working on, it's due to the bash version shipping with macOS being too old to support unicode escape.
If you have a newer version of bash installed in homebrew you can change the bang at the top e.g. #!/opt/homebrew/bin/bash
(or use the author's python version)
Thanks for the script it is very cool, but could you provides us with some additional info about how to make it more functional ... for example how to make the snow appear on a functional terminal screen as @amstan stated in his comment. I am new with bash scripting and want to use your code to decorate a script I am creating but I can not deduce where to put my code... thanks