Skip to content

Instantly share code, notes, and snippets.

@ttscoff
Created September 15, 2012 18:23

Revisions

  1. ttscoff revised this gist Sep 16, 2012. No changes.
  2. ttscoff revised this gist Sep 16, 2012. 1 changed file with 5 additions and 2 deletions.
    7 changes: 5 additions & 2 deletions matrixish.sh
    Original file line number Diff line number Diff line change
    @@ -2,6 +2,7 @@
    #
    # matrix: matrix-ish display for Bash terminal
    # Author: Brett Terpstra 2012 <http://brettterpstra.com>
    # Contributors: Lauri Ranta and Carl <http://blog.carlsensei.com/>
    #
    # A morning project. Could have been better, but I'm learning when to stop.

    @@ -30,12 +31,14 @@ scroll=${2:-0} # 0 for static, positive integer determines scroll speed
    screenlines=$(expr `tput lines` - 1 + $scroll)
    screencols=$(expr `tput cols` / 2 - 1)

    chars=(a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ^)
    # chars=(a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ^)
    # charset via Carl:
    chars=(ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン)

    count=${#chars[@]}
    colorcount=${#colors[@]}

    trap "clear; exit" SIGTERM SIGINT
    trap "tput sgr0; clear; exit" SIGTERM SIGINT

    if [[ $1 =~ '-h' ]]; then
    echo "Display a Matrix(ish) screen in the terminal"
  3. ttscoff created this gist Sep 15, 2012.
    71 changes: 71 additions & 0 deletions matrixish.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,71 @@
    #!/bin/bash
    #
    # matrix: matrix-ish display for Bash terminal
    # Author: Brett Terpstra 2012 <http://brettterpstra.com>
    #
    # A morning project. Could have been better, but I'm learning when to stop.

    ### Customization:
    blue="\033[0;34m"
    brightblue="\033[1;34m"
    cyan="\033[0;36m"
    brightcyan="\033[1;36m"
    green="\033[0;32m"
    brightgreen="\033[1;32m"
    red="\033[0;31m"
    brightred="\033[1;31m"
    white="\033[1;37m"
    black="\033[0;30m"
    grey="\033[0;37m"
    darkgrey="\033[1;30m"
    # Choose the colors that will be used from the above list
    # space-separated list
    # e.g. `colors=($green $brightgreen $darkgrey $white)`
    colors=($green $brightgreen)
    ### End customization

    ### Do not edit below this line
    spacing=${1:-100} # the likelihood of a character being left in place
    scroll=${2:-0} # 0 for static, positive integer determines scroll speed
    screenlines=$(expr `tput lines` - 1 + $scroll)
    screencols=$(expr `tput cols` / 2 - 1)

    chars=(a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ^)

    count=${#chars[@]}
    colorcount=${#colors[@]}

    trap "clear; exit" SIGTERM SIGINT

    if [[ $1 =~ '-h' ]]; then
    echo "Display a Matrix(ish) screen in the terminal"
    echo "Usage: matrix [SPACING [SCROLL]]"
    echo "Example: matrix 100 0"
    exit 0
    fi


    clear
    tput cup 0 0
    while :
    do for i in $(eval echo {1..$screenlines})
    do for i in $(eval echo {1..$screencols})
    do rand=$(($RANDOM%$spacing))
    case $rand in
    0)
    printf "${colors[$RANDOM%$colorcount]}${chars[$RANDOM%$count]} "
    ;;
    1)
    printf " "
    ;;
    *)
    printf "\033[2C"
    ;;
    esac
    done
    printf "\n"

    # sleep .005
    done
    tput cup 0 0
    done