Contest: Design a digital clock

Contest

This is my little script that displays a digital clock in the terminal:

bashclock
#!/usr/bin/env bash
# A rather nice looking digital clock in the terminal.

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

REFRESH_INTERVAL=0.2  # display the clock every 0.2 seconds, adjust if necessary
TIME_FORMAT="%H:%M:%S" # change to "%I:%M:%S" for 12-hour format

# Feel free to modify the FONT, the only restriction is that all characters are
# of equal height. There should be 11 characters, in this order: "0123456789:"
FONT=(
"β–ˆβ–€β–€β–ˆ "
"β–ˆ  β–ˆ "
"β–ˆ  β–ˆ "
"β–€β–€β–€β–€ "
"   β–ˆ "
"   β–ˆ "
"   β–ˆ "
"   β–€ "
"β–€β–€β–€β–ˆ "
"β–„β–„β–„β–ˆ "
"β–ˆ    "
"β–€β–€β–€β–€ "
"β–€β–€β–€β–ˆ "
"β–„β–„β–„β–ˆ "
"   β–ˆ "
"β–€β–€β–€β–€ "
"β–ˆ  β–ˆ "
"β–ˆβ–„β–„β–ˆ "
"   β–ˆ "
"   β–€ "
"β–ˆβ–€β–€β–€ "
"β–ˆβ–„β–„β–„ "
"   β–ˆ "
"β–€β–€β–€β–€ "
"β–ˆβ–€β–€β–€ "
"β–ˆβ–„β–„β–„ "
"β–ˆ  β–ˆ "
"β–€β–€β–€β–€ "
"β–€β–€β–€β–ˆ "
"   β–ˆ "
"   β–ˆ "
"   β–€ "
"β–ˆβ–€β–€β–ˆ "
"β–ˆβ–„β–„β–ˆ "
"β–ˆ  β–ˆ "
"β–€β–€β–€β–€ "
"β–ˆβ–€β–€β–ˆ "
"β–ˆβ–„β–„β–ˆ "
"   β–ˆ "
"β–€β–€β–€β–€ "
"    "
" β–€  "
"    "
" β–€  "
)
FONT_HEIGHT=$(( ${#FONT[@]} / 11 )) # FONT height in characters

function figletise() {
  read str;
  for (( line = 0; line < FONT_HEIGHT; line++ )); do
    printf "  "
    for (( c=0; c<${#str}; c++ )); do
      local ch=$(LC_CTYPE=C printf '%d' "'${str:$c:1}") # get ascii value
      ch=$((ch-48))
      if (( ch >= 0 && ch <= 10 )); then
        local i=$(( ch * FONT_HEIGHT + line )) # 2D -> 1D array conversion
        printf "${FONT[$i]}"
      fi
    done
    printf "\n"
  done
}

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

while true; do
  date +"$TIME_FORMAT" | figletise

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

  printf "\033[${FONT_HEIGHT}A\r" # move cursor to beginning
done

It looks like this:

bashclock

Its font is nice but rather bland.

Design a better font for it. Whoever comes up with the best looking font wins. If there is interest in this, I’ll pick a few good ones, and there will be a vote to determine the winner. You can post as many entries as you want. There is no prize, at the moment :rofl:

Adding the font to the script is fairly simple, no advanced bash scripting is needed. All characters are listed one after the other, in the variable FONT. They have to be of the same height, and there has to be exactly 11 of them, in this order:

0
1
2
3
4
5
6
7
8
9
:

They can be of variable width (though that may look a bit funny). Try not to make them too wide (the entire clock display should not be much wider than 80 characters).

Here is an example of what I came up with (far from perfect, but it gives you the idea of the possibilities):

Nixie tube clock
#!/usr/bin/env bash
# Nixie tube Clock

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

REFRESH_INTERVAL=0.2  # display the clock every 0.2 seconds, adjust if necessary
TIME_FORMAT="%H:%M:%S" # change to "%I:%M:%S" for 12-hour format

# Feel free to modify the FONT, the only restriction is that all characters are
# of equal height. There should be 11 characters, in this order: "0123456789:"
FONT=(
"\033[48;2;13;17;57m\033[38;2;4;8;18mβ–€\033[48;2;27;41;116m\033[38;2;7;14;51mβ–€\033[48;2;33;56;154m\033[38;2;47;80;152mβ–€\033[48;2;48;55;155m\033[38;2;49;81;182mβ–€\033[48;2;25;20;103m\033[38;2;21;51;144mβ–€\033[48;2;25;31;118m\033[38;2;33;60;154mβ–€\033[48;2;25;34;134m\033[38;2;53;81;173mβ–€\033[48;2;34;44;159m\033[38;2;41;61;120mβ–€\033[48;2;29;27;105m\033[38;2;5;6;38mβ–€\033[48;2;6;3;22m\033[38;2;6;1;12mβ–€\033[0m"
"\033[48;2;42;14;87m\033[38;2;34;27;102mβ–€\033[48;2;59;10;64m\033[38;2;48;29;113mβ–€\033[48;2;70;18;22m\033[38;2;41;15;47mβ–€\033[48;2;133;87;49m\033[38;2;58;13;34mβ–€\033[48;2;204;148;81m\033[38;2;66;3;45mβ–€\033[48;2;178;112;62m\033[38;2;57;6;24mβ–€\033[48;2;112;43;23m\033[38;2;62;15;30mβ–€\033[48;2;83;26;38m\033[38;2;52;9;67mβ–€\033[48;2;45;5;59m\033[38;2;37;8;91mβ–€\033[48;2;21;5;46m\033[38;2;15;3;54mβ–€\033[0m"
"\033[48;2;66;10;104m\033[38;2;79;38;109mβ–€\033[48;2;74;4;64m\033[38;2;67;7;55mβ–€\033[48;2;157;99;58m\033[38;2;96;36;19mβ–€\033[48;2;156;88;46m\033[38;2;197;139;86mβ–€\033[48;2;111;22;28m\033[38;2;123;48;19mβ–€\033[48;2;106;23;20m\033[38;2;137;65;33mβ–€\033[48;2;198;126;63m\033[38;2;177;106;62mβ–€\033[48;2;125;66;41m\033[38;2;99;37;40mβ–€\033[48;2;50;3;41m\033[38;2;45;3;43mβ–€\033[48;2;21;3;35m\033[38;2;20;4;35mβ–€\033[0m"
"\033[48;2;84;25;155m\033[38;2;75;15;137mβ–€\033[48;2;110;43;110m\033[38;2;86;15;90mβ–€\033[48;2;201;143;116m\033[38;2;180;124;84mβ–€\033[48;2;110;33;27m\033[38;2;115;43;28mβ–€\033[48;2;101;13;31m\033[38;2;101;14;19mβ–€\033[48;2;104;14;34m\033[38;2;99;13;22mβ–€\033[48;2;162;91;63m\033[38;2;169;109;60mβ–€\033[48;2;166;103;68m\033[38;2;164;106;64mβ–€\033[48;2;54;3;48m\033[38;2;54;3;50mβ–€\033[48;2;22;1;35m\033[38;2;23;3;37mβ–€\033[0m"
"\033[48;2;58;16;105m\033[38;2;80;25;138mβ–€\033[48;2;66;3;75m\033[38;2;88;22;84mβ–€\033[48;2;129;68;42m\033[38;2;162;92;63mβ–€\033[48;2;181;116;66m\033[38;2;129;59;46mβ–€\033[48;2;118;32;23m\033[38;2;108;21;28mβ–€\033[48;2;117;36;17m\033[38;2;113;22;32mβ–€\033[48;2;204;146;90m\033[38;2;182;104;60mβ–€\033[48;2;112;46;46m\033[38;2;130;63;40mβ–€\033[48;2;50;3;36m\033[38;2;54;4;38mβ–€\033[48;2;18;2;24m\033[38;2;20;2;30mβ–€\033[0m"
"\033[48;2;37;13;110m\033[38;2;58;23;106mβ–€\033[48;2;51;19;107m\033[38;2;56;4;84mβ–€\033[48;2;58;7;39m\033[38;2;85;20;24mβ–€\033[48;2;93;35;23m\033[38;2;201;138;79mβ–€\033[48;2;147;86;59m\033[38;2;176;98;48mβ–€\033[48;2;143;91;68m\033[38;2;177;110;68mβ–€\033[48;2;76;15;31m\033[38;2;166;118;79mβ–€\033[48;2;66;22;73m\033[38;2;95;27;44mβ–€\033[48;2;50;26;106m\033[38;2;53;5;58mβ–€\033[48;2;24;19;66m\033[38;2;15;3;41mβ–€\033[0m"
"\033[48;2;6;10;46m\033[38;2;34;33;107mβ–€\033[48;2;52;67;152m\033[38;2;46;37;138mβ–€\033[48;2;66;105;199m\033[38;2;38;21;91mβ–€\033[48;2;52;86;191m\033[38;2;52;9;61mβ–€\033[48;2;31;53;173m\033[38;2;52;7;64mβ–€\033[48;2;39;79;178m\033[38;2;47;5;59mβ–€\033[48;2;76;154;212m\033[38;2;53;15;88mβ–€\033[48;2;83;154;208m\033[38;2;32;34;126mβ–€\033[48;2;28;50;105m\033[38;2;44;52;153mβ–€\033[48;2;5;1;20m\033[38;2;8;8;54mβ–€\033[0m"
"\033[38;2;2;8;15mβ–€\033[38;2;2;5;42mβ–€\033[38;2;20;41;88mβ–€\033[38;2;48;74;144mβ–€\033[38;2;51;80;167mβ–€\033[38;2;47;87;158mβ–€\033[38;2;43;86;137mβ–€\033[38;2;5;32;72mβ–€\033[38;2;2;8;42mβ–€\033[38;2;5;4;13mβ–€\033[0m"
"\033[48;2;3;4;18m\033[38;2;3;3;5mβ–€\033[48;2;15;25;73m\033[38;2;5;5;7mβ–€\033[48;2;38;63;144m\033[38;2;15;27;56mβ–€\033[48;2;50;85;194m\033[38;2;45;66;131mβ–€\033[48;2;16;47;157m\033[38;2;34;55;131mβ–€\033[48;2;8;32;149m\033[38;2;36;55;124mβ–€\033[48;2;22;60;179m\033[38;2;36;62;123mβ–€\033[48;2;39;80;185m\033[38;2;22;44;88mβ–€\033[48;2;21;38;106m\033[38;2;1;5;16mβ–€\033[48;2;3;3;31m\033[38;2;3;3;2mβ–€\033[0m"
"\033[48;2;16;13;71m\033[38;2;9;17;58mβ–€\033[48;2;27;23;102m\033[38;2;27;39;120mβ–€\033[48;2;33;4;46m\033[38;2;27;31;111mβ–€\033[48;2;49;3;24m\033[38;2;31;24;90mβ–€\033[48;2;63;9;17m\033[38;2;29;22;67mβ–€\033[48;2;65;8;6m\033[38;2;22;8;46mβ–€\033[48;2;59;5;21m\033[38;2;28;13;53mβ–€\033[48;2;39;3;27m\033[38;2;21;13;75mβ–€\033[48;2;27;6;69m\033[38;2;18;19;108mβ–€\033[48;2;16;7;56m\033[38;2;16;16;71mβ–€\033[0m"
"\033[48;2;52;22;78m\033[38;2;51;22;75mβ–€\033[48;2;53;10;74m\033[38;2;52;16;73mβ–€\033[48;2;42;2;26m\033[38;2;41;2;24mβ–€\033[48;2;81;9;12m\033[38;2;68;7;18mβ–€\033[48;2;165;102;40m\033[38;2;169;102;55mβ–€\033[48;2;199;137;60m\033[38;2;172;100;45mβ–€\033[48;2;91;11;10m\033[38;2;90;8;7mβ–€\033[48;2;58;5;30m\033[38;2;49;3;17mβ–€\033[48;2;37;3;48m\033[38;2;30;2;51mβ–€\033[48;2;21;3;43m\033[38;2;15;4;46mβ–€\033[0m"
"\033[48;2;65;24;129m\033[38;2;47;9;99mβ–€\033[48;2;63;5;128m\033[38;2;59;5;109mβ–€\033[48;2;66;11;70m\033[38;2;50;1;41mβ–€\033[48;2;84;8;38m\033[38;2;75;5;15mβ–€\033[48;2;158;87;34m\033[38;2;168;112;48mβ–€\033[48;2;190;114;52m\033[38;2;197;141;64mβ–€\033[48;2;85;3;30m\033[38;2;82;9;9mβ–€\033[48;2;62;7;46m\033[38;2;59;7;30mβ–€\033[48;2;41;4;59m\033[38;2;40;6;46mβ–€\033[48;2;19;3;46m\033[38;2;21;3;40mβ–€\033[0m"
"\033[48;2;51;8;100m\033[38;2;67;23;125mβ–€\033[48;2;58;4;106m\033[38;2;65;6;121mβ–€\033[48;2;55;3;40m\033[38;2;72;23;73mβ–€\033[48;2;86;9;22m\033[38;2;90;10;37mβ–€\033[48;2;175;105;53m\033[38;2;173;98;37mβ–€\033[48;2;180;108;54m\033[38;2;198;121;49mβ–€\033[48;2;81;4;23m\033[38;2;85;7;22mβ–€\033[48;2;62;6;34m\033[38;2;61;8;32mβ–€\033[48;2;46;7;44m\033[38;2;41;6;45mβ–€\033[48;2;16;3;36m\033[38;2;18;3;41mβ–€\033[0m"
"\033[48;2;34;9;93m\033[38;2;50;17;96mβ–€\033[48;2;43;11;106m\033[38;2;46;4;94mβ–€\033[48;2;42;1;42m\033[38;2;50;1;35mβ–€\033[48;2;61;1;23m\033[38;2;78;9;24mβ–€\033[48;2;102;29;25m\033[38;2;171;97;59mβ–€\033[48;2;119;40;40m\033[38;2;160;79;47mβ–€\033[48;2;69;1;36m\033[38;2;83;5;36mβ–€\033[48;2;44;5;35m\033[38;2;63;6;36mβ–€\033[48;2;44;21;81m\033[38;2;48;8;39mβ–€\033[48;2;22;17;73m\033[38;2;12;2;31mβ–€\033[0m"
"\033[48;2;7;12;47m\033[38;2;15;18;83mβ–€\033[48;2;50;60;142m\033[38;2;31;31;137mβ–€\033[48;2;39;67;156m\033[38;2;30;13;70mβ–€\033[48;2;20;51;132m\033[38;2;54;6;39mβ–€\033[48;2;19;31;122m\033[38;2;48;4;44mβ–€\033[48;2;12;34;120m\033[38;2;44;1;44mβ–€\033[48;2;28;74;147m\033[38;2;48;4;63mβ–€\033[48;2;61;119;181m\033[38;2;26;11;77mβ–€\033[48;2;56;93;161m\033[38;2;27;34;118mβ–€\033[48;2;5;18;66m\033[38;2;37;43;104mβ–€\033[0m"
"\033[38;2;3;2;21mβ–€\033[38;2;3;11;44mβ–€\033[38;2;41;78;135mβ–€\033[38;2;70;115;196mβ–€\033[38;2;61;93;194mβ–€\033[38;2;54;98;192mβ–€\033[38;2;73;140;207mβ–€\033[38;2;82;137;173mβ–€\033[38;2;8;29;63mβ–€\033[38;2;1;2;27mβ–€\033[0m"
"\033[48;2;3;7;25m\033[38;2;3;5;2mβ–€\033[48;2;19;28;87m\033[38;2;1;6;15mβ–€\033[48;2;46;73;173m\033[38;2;26;41;78mβ–€\033[48;2;43;74;194m\033[38;2;44;69;127mβ–€\033[48;2;14;30;166m\033[38;2;33;48;124mβ–€\033[48;2;17;35;164m\033[38;2;39;52;127mβ–€\033[48;2;33;60;175m\033[38;2;39;62;123mβ–€\033[48;2;56;74;179m\033[38;2;18;31;66mβ–€\033[48;2;21;26;100m\033[38;2;2;11;19mβ–€\033[48;2;2;2;24m\033[38;2;2;5;6mβ–€\033[0m"
"\033[48;2;23;15;83m\033[38;2;22;28;77mβ–€\033[48;2;33;18;93m\033[38;2;30;36;120mβ–€\033[48;2;49;8;37m\033[38;2;35;30;104mβ–€\033[48;2;68;17;27m\033[38;2;36;25;84mβ–€\033[48;2;73;17;18m\033[38;2;36;16;63mβ–€\033[48;2;72;14;16m\033[38;2;35;10;52mβ–€\033[48;2;74;13;17m\033[38;2;44;18;54mβ–€\033[48;2;67;14;31m\033[38;2;34;15;82mβ–€\033[48;2;39;6;66m\033[38;2;27;17;101mβ–€\033[48;2;19;5;58m\033[38;2;13;7;56mβ–€\033[0m"
"\033[48;2;59;24;99m\033[38;2;61;33;95mβ–€\033[48;2;50;1;61m\033[38;2;53;5;60mβ–€\033[48;2;62;6;15m\033[38;2;70;14;22mβ–€\033[48;2;91;21;20m\033[38;2;144;71;57mβ–€\033[48;2;103;21;18m\033[38;2;150;68;40mβ–€\033[48;2;111;24;19m\033[38;2;138;57;36mβ–€\033[48;2;137;61;39m\033[38;2;139;62;52mβ–€\033[48;2;167;102;63m\033[38;2;104;47;25mβ–€\033[48;2;50;7;34m\033[38;2;47;8;48mβ–€\033[48;2;22;4;31m\033[38;2;19;3;49mβ–€\033[0m"
"\033[48;2;72;25;134m\033[38;2;56;11;106mβ–€\033[48;2;60;10;115m\033[38;2;52;6;89mβ–€\033[48;2;60;11;62m\033[38;2;49;3;32mβ–€\033[48;2;69;7;42m\033[38;2;61;1;18mβ–€\033[48;2;87;15;21m\033[38;2;85;15;23mβ–€\033[48;2;99;22;13m\033[38;2;96;21;21mβ–€\033[48;2;143;67;69m\033[38;2;110;39;22mβ–€\033[48;2;124;61;67m\033[38;2;163;101;73mβ–€\033[48;2;45;4;59m\033[38;2;49;7;46mβ–€\033[48;2;20;3;40m\033[38;2;22;4;36mβ–€\033[0m"
"\033[48;2;58;11;116m\033[38;2;75;29;138mβ–€\033[48;2;58;3;92m\033[38;2;68;15;115mβ–€\033[48;2;78;8;33m\033[38;2;72;13;67mβ–€\033[48;2;183;111;76m\033[38;2;103;40;42mβ–€\033[48;2;176;100;56m\033[38;2;178;108;65mβ–€\033[48;2;117;25;23m\033[38;2;177;96;63mβ–€\033[48;2;86;7;28m\033[38;2;141;66;55mβ–€\033[48;2;74;7;32m\033[38;2;79;11;40mβ–€\033[48;2;36;4;30m\033[38;2;40;4;46mβ–€\033[48;2;16;5;24m\033[38;2;17;3;31mβ–€\033[0m"
"\033[48;2;42;11;103m\033[38;2;56;17;108mβ–€\033[48;2;48;10;96m\033[38;2;50;4;77mβ–€\033[48;2;91;29;32m\033[38;2;95;25;24mβ–€\033[48;2;162;87;56m\033[38;2;183;101;66mβ–€\033[48;2;155;82;39m\033[38;2;140;47;11mβ–€\033[48;2;168;105;72m\033[38;2;126;38;33mβ–€\033[48;2;160;91;70m\033[38;2;101;28;35mβ–€\033[48;2;122;65;73m\033[38;2;76;12;29mβ–€\033[48;2;54;16;85m\033[38;2;41;8;45mβ–€\033[48;2;24;12;61m\033[38;2;9;1;30mβ–€\033[0m"
"\033[48;2;12;22;65m\033[38;2;31;18;94mβ–€\033[48;2;59;72;158m\033[38;2;41;29;126mβ–€\033[48;2;37;62;161m\033[38;2;56;14;53mβ–€\033[48;2;28;48;139m\033[38;2;79;18;54mβ–€\033[48;2;30;24;114m\033[38;2;62;7;50mβ–€\033[48;2;25;42;116m\033[38;2;52;1;43mβ–€\033[48;2;29;87;143m\033[38;2;79;9;57mβ–€\033[48;2;71;125;183m\033[38;2;58;11;81mβ–€\033[48;2;54;78;145m\033[38;2;41;43;123mβ–€\033[48;2;4;7;46m\033[38;2;27;27;79mβ–€\033[0m"
"\033[38;2;1;9;20mβ–€\033[38;2;7;18;60mβ–€\033[38;2;44;89;153mβ–€\033[38;2;58;113;194mβ–€\033[38;2;57;93;196mβ–€\033[38;2;59;100;194mβ–€\033[38;2;73;154;202mβ–€\033[38;2;68;124;150mβ–€\033[38;2;5;17;63mβ–€\033[38;2;4;3;24mβ–€\033[0m"
"\033[48;2;11;6;33m\033[38;2;9;2;14mβ–€\033[48;2;24;35;88m\033[38;2;2;7;23mβ–€\033[48;2;46;86;171m\033[38;2;27;48;82mβ–€\033[48;2;37;78;182m\033[38;2;36;65;127mβ–€\033[48;2;21;30;150m\033[38;2;27;48;127mβ–€\033[48;2;35;34;153m\033[38;2;38;56;129mβ–€\033[48;2;41;58;179m\033[38;2;41;58;125mβ–€\033[48;2;54;65;186m\033[38;2;14;21;71mβ–€\033[48;2;21;22;95m\033[38;2;3;6;23mβ–€\033[48;2;2;3;14m\033[38;2;3;4;4mβ–€\033[0m"
"\033[48;2;30;18;88m\033[38;2;23;26;79mβ–€\033[48;2;43;20;90m\033[38;2;31;31;115mβ–€\033[48;2;108;61;45m\033[38;2;38;28;107mβ–€\033[48;2;207;145;76m\033[38;2;66;31;80mβ–€\033[48;2;212;151;60m\033[38;2;78;28;52mβ–€\033[48;2;221;163;65m\033[38;2;84;26;43mβ–€\033[48;2;225;174;69m\033[38;2;79;30;46mβ–€\033[48;2;159;113;63m\033[38;2;62;23;82mβ–€\033[48;2;63;21;72m\033[38;2;43;13;101mβ–€\033[48;2;20;4;50m\033[38;2;16;3;44mβ–€\033[0m"
"\033[48;2;55;26;93m\033[38;2;61;33;94mβ–€\033[48;2;42;4;59m\033[38;2;48;7;63mβ–€\033[48;2;43;2;9m\033[38;2;76;14;13mβ–€\033[48;2;63;2;11m\033[38;2;116;39;22mβ–€\033[48;2;96;19;26m\033[38;2;111;28;18mβ–€\033[48;2;156;96;54m\033[38;2;130;56;10mβ–€\033[48;2;191;135;77m\033[38;2;225;168;67mβ–€\033[48;2;97;28;26m\033[38;2;128;63;31mβ–€\033[48;2;54;6;43m\033[38;2;68;17;52mβ–€\033[48;2;22;2;40m\033[38;2;24;2;43mβ–€\033[0m"
"\033[48;2;73;31;145m\033[38;2;47;12;110mβ–€\033[48;2;59;8;109m\033[38;2;47;6;85mβ–€\033[48;2;51;3;63m\033[38;2;39;1;30mβ–€\033[48;2;68;4;38m\033[38;2;60;4;22mβ–€\033[48;2;93;23;26m\033[38;2;95;25;17mβ–€\033[48;2;175;113;53m\033[38;2;216;158;76mβ–€\033[48;2;223;161;79m\033[38;2;143;82;24mβ–€\033[48;2;128;63;58m\033[38;2;95;26;45mβ–€\033[48;2;54;4;53m\033[38;2;50;3;56mβ–€\033[48;2;21;3;37m\033[38;2;20;3;35mβ–€\033[0m"
"\033[48;2;63;15;121m\033[38;2;77;28;153mβ–€\033[48;2;55;4;77m\033[38;2;65;14;113mβ–€\033[48;2;62;5;29m\033[38;2;51;10;58mβ–€\033[48;2;85;6;24m\033[38;2;62;2;40mβ–€\033[48;2;91;12;26m\033[38;2;75;5;39mβ–€\033[48;2;113;21;33m\033[38;2;110;24;26mβ–€\033[48;2;141;71;33m\033[38;2;170;112;61mβ–€\033[48;2;211;146;80m\033[38;2;189;130;84mβ–€\033[48;2;72;9;30m\033[38;2;64;8;31mβ–€\033[48;2;25;4;25m\033[38;2;23;4;27mβ–€\033[0m"
"\033[48;2;42;9;100m\033[38;2;59;17;108mβ–€\033[48;2;46;6;95m\033[38;2;51;2;77mβ–€\033[48;2;121;80;57m\033[38;2;109;59;48mβ–€\033[48;2;223;167;95m\033[38;2;135;64;40mβ–€\033[48;2;200;151;56m\033[38;2;114;29;23mβ–€\033[48;2;201;149;54m\033[38;2;130;29;29mβ–€\033[48;2;208;165;69m\033[38;2;183;120;47mβ–€\033[48;2;101;45;53m\033[38;2;185;132;56mβ–€\033[48;2;63;17;89m\033[38;2;68;16;44mβ–€\033[48;2;22;8;56m\033[38;2;18;2;29mβ–€\033[0m"
"\033[48;2;21;27;66m\033[38;2;37;26;107mβ–€\033[48;2;62;75;163m\033[38;2;45;26;132mβ–€\033[48;2;43;53;157m\033[38;2;50;13;65mβ–€\033[48;2;50;39;126m\033[38;2;113;62;39mβ–€\033[48;2;64;30;123m\033[38;2;191;138;77mβ–€\033[48;2;46;43;125m\033[38;2;177;123;65mβ–€\033[48;2;49;82;165m\033[38;2;89;38;53mβ–€\033[48;2;75;121;198m\033[38;2;63;13;100mβ–€\033[48;2;48;72;139m\033[38;2;60;48;137mβ–€\033[48;2;1;3;33m\033[38;2;21;20;69mβ–€\033[0m"
"\033[38;2;4;4;20mβ–€\033[38;2;7;21;58mβ–€\033[38;2;68;90;162mβ–€\033[38;2;81;107;189mβ–€\033[38;2;62;83;198mβ–€\033[38;2;69;105;205mβ–€\033[38;2;81;152;204mβ–€\033[38;2;56;106;141mβ–€\033[38;2;3;12;48mβ–€\033[38;2;2;1;15mβ–€\033[0m"
"\033[48;2;3;7;29m\033[38;2;4;5;7mβ–€\033[48;2;27;35;102m\033[38;2;3;8;23mβ–€\033[48;2;45;81;189m\033[38;2;28;49;93mβ–€\033[48;2;32;66;182m\033[38;2;40;68;126mβ–€\033[48;2;15;25;147m\033[38;2;25;44;116mβ–€\033[48;2;32;35;161m\033[38;2;42;55;126mβ–€\033[48;2;43;66;190m\033[38;2;46;62;127mβ–€\033[48;2;55;66;175m\033[38;2;12;20;60mβ–€\033[48;2;23;23;84m\033[38;2;2;5;14mβ–€\033[48;2;3;2;15m\033[38;2;2;3;5mβ–€\033[0m"
"\033[48;2;31;21;93m\033[38;2;25;30;86mβ–€\033[48;2;41;14;77m\033[38;2;36;36;115mβ–€\033[48;2;38;5;27m\033[38;2;29;32;103mβ–€\033[48;2;57;3;7m\033[38;2;37;27;78mβ–€\033[48;2;120;64;34m\033[38;2;47;6;52mβ–€\033[48;2;196;138;64m\033[38;2;80;35;57mβ–€\033[48;2;114;51;15m\033[38;2;65;21;57mβ–€\033[48;2;86;27;54m\033[38;2;48;17;93mβ–€\033[48;2;42;7;73m\033[38;2;35;18;100mβ–€\033[48;2;11;3;47m\033[38;2;8;3;48mβ–€\033[0m"
"\033[48;2;63;21;92m\033[38;2;64;29;95mβ–€\033[48;2;60;1;53m\033[38;2;54;2;51mβ–€\033[48;2;73;10;15m\033[38;2;55;3;19mβ–€\033[48;2;108;41;22m\033[38;2;88;18;22mβ–€\033[48;2;216;145;78m\033[38;2;184;125;55mβ–€\033[48;2;180;106;55m\033[38;2;218;162;68mβ–€\033[48;2;133;64;31m\033[38;2;138;77;31mβ–€\033[48;2;97;30;41m\033[38;2;94;30;45mβ–€\033[48;2;42;2;39m\033[38;2;47;6;55mβ–€\033[48;2;15;2;32m\033[38;2;15;4;40mβ–€\033[0m"
"\033[48;2;83;26;150m\033[38;2;63;12;116mβ–€\033[48;2;84;18;111m\033[38;2;65;2;81mβ–€\033[48;2;126;51;66m\033[38;2;73;9;18mβ–€\033[48;2;190;111;77m\033[38;2;175;111;57mβ–€\033[48;2;132;28;24m\033[38;2;170;94;48mβ–€\033[48;2;172;80;48m\033[38;2;169;96;57mβ–€\033[48;2;125;41;34m\033[38;2;127;58;33mβ–€\033[48;2;102;29;68m\033[38;2;99;28;53mβ–€\033[48;2;43;3;50m\033[38;2;45;4;45mβ–€\033[48;2;15;1;29m\033[38;2;15;3;30mβ–€\033[0m"
"\033[48;2;73;13;115m\033[38;2;88;27;145mβ–€\033[48;2;73;6;78m\033[38;2;92;27;108mβ–€\033[48;2;194;131;84m\033[38;2;184;116;91mβ–€\033[48;2;207;139;72m\033[38;2;146;62;34mβ–€\033[48;2;213;140;63m\033[38;2;138;38;29mβ–€\033[48;2;233;166;53m\033[38;2;199;118;61mβ–€\033[48;2;183;120;52m\033[38;2;129;53;27mβ–€\033[48;2;115;41;47m\033[38;2;107;33;58mβ–€\033[48;2;50;1;35m\033[38;2;45;1;44mβ–€\033[48;2;19;1;24m\033[38;2;17;1;26mβ–€\033[0m"
"\033[48;2;46;10;109m\033[38;2;67;16;110mβ–€\033[48;2;42;7;80m\033[38;2;54;2;68mβ–€\033[48;2;63;5;25m\033[38;2;89;26;22mβ–€\033[48;2;80;4;24m\033[38;2;122;44;25mβ–€\033[48;2;118;33;27m\033[38;2;138;46;35mβ–€\033[48;2;202;123;66m\033[38;2;208;133;74mβ–€\033[48;2;122;51;27m\033[38;2;140;71;32mβ–€\033[48;2;80;20;65m\033[38;2;94;22;36mβ–€\033[48;2;50;24;83m\033[38;2;48;1;47mβ–€\033[48;2;15;7;49m\033[38;2;16;1;32mβ–€\033[0m"
"\033[48;2;29;34;85m\033[38;2;37;22;113mβ–€\033[48;2;63;73;168m\033[38;2;38;28;122mβ–€\033[48;2;33;54;147m\033[38;2;37;5;55mβ–€\033[48;2;26;41;129m\033[38;2;47;1;41mβ–€\033[48;2;26;22;112m\033[38;2;66;5;30mβ–€\033[48;2;39;48;132m\033[38;2;157;93;88mβ–€\033[48;2;46;89;165m\033[38;2;104;38;62mβ–€\033[48;2;77;121;191m\033[38;2;57;16;99mβ–€\033[48;2;49;64;130m\033[38;2;50;51;122mβ–€\033[48;2;2;3;38m\033[38;2;14;14;53mβ–€\033[0m"
"\033[38;2;2;11;20mβ–€\033[38;2;15;23;82mβ–€\033[38;2;63;104;172mβ–€\033[38;2;67;106;195mβ–€\033[38;2;61;90;201mβ–€\033[38;2;60;106;198mβ–€\033[38;2;73;155;204mβ–€\033[38;2;52;99;138mβ–€\033[38;2;1;10;53mβ–€\033[38;2;2;4;19mβ–€\033[0m"
"\033[48;2;3;7;29m\033[38;2;4;5;7mβ–€\033[48;2;27;35;102m\033[38;2;3;8;23mβ–€\033[48;2;45;81;189m\033[38;2;28;49;93mβ–€\033[48;2;32;66;182m\033[38;2;40;68;126mβ–€\033[48;2;15;25;147m\033[38;2;25;44;116mβ–€\033[48;2;32;35;161m\033[38;2;42;55;126mβ–€\033[48;2;43;66;190m\033[38;2;46;62;127mβ–€\033[48;2;55;66;175m\033[38;2;12;20;60mβ–€\033[48;2;23;23;84m\033[38;2;2;5;14mβ–€\033[48;2;3;2;15m\033[38;2;2;3;5mβ–€\033[0m"
"\033[48;2;26;14;75m\033[38;2;27;22;77mβ–€\033[48;2;52;20;88m\033[38;2;36;32;122mβ–€\033[48;2;99;50;41m\033[38;2;45;27;97mβ–€\033[48;2;155;101;55m\033[38;2;56;21;74mβ–€\033[48;2;162;104;65m\033[38;2;57;21;67mβ–€\033[48;2;138;91;55m\033[38;2;44;12;41mβ–€\033[48;2;168;117;87m\033[38;2;56;24;48mβ–€\033[48;2;93;43;34m\033[38;2;46;19;75mβ–€\033[48;2;56;17;66m\033[38;2;31;13;107mβ–€\033[48;2;23;6;51m\033[38;2;16;7;69mβ–€\033[0m"
"\033[48;2;54;25;90m\033[38;2;63;37;81mβ–€\033[48;2;62;7;77m\033[38;2;66;15;58mβ–€\033[48;2;96;43;33m\033[38;2;145;93;62mβ–€\033[48;2;166;98;68m\033[38;2;165;99;58mβ–€\033[48;2;113;34;14m\033[38;2;161;81;43mβ–€\033[48;2;98;22;22m\033[38;2;140;61;32mβ–€\033[48;2;78;13;22m\033[38;2;100;28;16mβ–€\033[48;2;67;13;26m\033[38;2;78;21;32mβ–€\033[48;2;39;5;47m\033[38;2;54;17;55mβ–€\033[48;2;22;5;42m\033[38;2;23;4;42mβ–€\033[0m"
"\033[48;2;72;26;133m\033[38;2;58;15;118mβ–€\033[48;2;66;7;115m\033[38;2;65;4;110mβ–€\033[48;2;78;15;82m\033[38;2;76;5;42mβ–€\033[48;2;86;17;44m\033[38;2;153;88;51mβ–€\033[48;2;119;43;36m\033[38;2;203;126;68mβ–€\033[48;2;137;51;41m\033[38;2;154;77;45mβ–€\033[48;2;143;57;56m\033[38;2;101;25;27mβ–€\033[48;2;114;32;63m\033[38;2;89;17;45mβ–€\033[48;2;50;1;54m\033[38;2;48;2;48mβ–€\033[48;2;23;3;40m\033[38;2;23;3;36mβ–€\033[0m"
"\033[48;2;57;11;107m\033[38;2;73;26;131mβ–€\033[48;2;51;2;92m\033[38;2;64;7;112mβ–€\033[48;2;60;5;39m\033[38;2;66;13;67mβ–€\033[48;2;78;17;15m\033[38;2;68;6;39mβ–€\033[48;2;91;15;22m\033[38;2;86;11;41mβ–€\033[48;2;104;15;33m\033[38;2;106;19;38mβ–€\033[48;2;151;67;53m\033[38;2;152;61;46mβ–€\033[48;2;157;85;57m\033[38;2;134;55;52mβ–€\033[48;2;57;11;27m\033[38;2;50;2;39mβ–€\033[48;2;22;3;29m\033[38;2;24;3;35mβ–€\033[0m"
"\033[48;2;39;10;98m\033[38;2;57;12;99mβ–€\033[48;2;46;9;100m\033[38;2;49;2;83mβ–€\033[48;2;62;7;35m\033[38;2;76;21;31mβ–€\033[48;2;134;69;48m\033[38;2;154;88;65mβ–€\033[48;2;174;95;59m\033[38;2;131;47;31mβ–€\033[48;2;169;98;68m\033[38;2;126;38;31mβ–€\033[48;2;122;62;37m\033[38;2;191;120;83mβ–€\033[48;2;92;19;55m\033[38;2;125;52;39mβ–€\033[48;2;60;26;88m\033[38;2;68;19;51mβ–€\033[48;2;29;19;71m\033[38;2;23;2;44mβ–€\033[0m"
"\033[48;2;29;34;85m\033[38;2;23;25;95mβ–€\033[48;2;63;73;168m\033[38;2;36;36;136mβ–€\033[48;2;33;54;147m\033[38;2;37;11;71mβ–€\033[48;2;26;41;129m\033[38;2;50;16;55mβ–€\033[48;2;26;22;112m\033[38;2;58;16;49mβ–€\033[48;2;39;48;132m\033[38;2;57;4;48mβ–€\033[48;2;46;89;165m\033[38;2;69;18;66mβ–€\033[48;2;77;121;191m\033[38;2;51;16;96mβ–€\033[48;2;49;64;130m\033[38;2;44;45;127mβ–€\033[48;2;2;3;38m\033[38;2;35;35;88mβ–€\033[0m"
"\033[38;2;2;11;20mβ–€\033[38;2;15;23;82mβ–€\033[38;2;63;104;172mβ–€\033[38;2;67;106;195mβ–€\033[38;2;61;90;201mβ–€\033[38;2;60;106;198mβ–€\033[38;2;73;155;204mβ–€\033[38;2;52;99;138mβ–€\033[38;2;1;10;53mβ–€\033[38;2;2;4;19mβ–€\033[0m"
"\033[48;2;24;23;66m\033[38;2;9;3;5mβ–€\033[48;2;22;41;127m\033[38;2;7;29;64mβ–€\033[48;2;33;66;165m\033[38;2;50;87;158mβ–€\033[48;2;42;54;146m\033[38;2;45;77;171mβ–€\033[48;2;19;16;98m\033[38;2;21;50;154mβ–€\033[48;2;22;32;122m\033[38;2;37;63;161mβ–€\033[48;2;19;41;147m\033[38;2;47;79;167mβ–€\033[48;2;33;44;155m\033[38;2;31;49;116mβ–€\033[48;2;21;23;95m\033[38;2;3;6;34mβ–€\033[48;2;2;5;15m\033[38;2;6;2;7mβ–€\033[0m"
"\033[48;2;38;15;84m\033[38;2;29;34;106mβ–€\033[48;2;39;6;51m\033[38;2;34;28;103mβ–€\033[48;2;48;4;18m\033[38;2;29;10;45mβ–€\033[48;2;66;11;20m\033[38;2;39;8;42mβ–€\033[48;2;116;59;29m\033[38;2;44;4;37mβ–€\033[48;2;86;29;13m\033[38;2;41;4;27mβ–€\033[48;2;47;1;10m\033[38;2;36;9;29mβ–€\033[48;2;37;5;41m\033[38;2;27;6;62mβ–€\033[48;2;26;4;70m\033[38;2;27;11;89mβ–€\033[48;2;9;2;41m\033[38;2;7;4;37mβ–€\033[0m"
"\033[48;2;57;9;110m\033[38;2;74;38;100mβ–€\033[48;2;60;3;61m\033[38;2;50;2;38mβ–€\033[48;2;79;5;23m\033[38;2;65;4;18mβ–€\033[48;2;141;60;26m\033[38;2;108;35;18mβ–€\033[48;2;202;115;65m\033[38;2;206;128;67mβ–€\033[48;2;104;18;9m\033[38;2;119;47;24mβ–€\033[48;2;71;2;22m\033[38;2;65;3;20mβ–€\033[48;2;59;10;39m\033[38;2;49;6;44mβ–€\033[48;2;36;3;52m\033[38;2;34;4;54mβ–€\033[48;2;15;1;31m\033[38;2;14;1;28mβ–€\033[0m"
"\033[48;2;84;26;153m\033[38;2;66;18;139mβ–€\033[48;2;108;35;118m\033[38;2;74;11;80mβ–€\033[48;2;115;39;58m\033[38;2;87;15;27mβ–€\033[48;2;202;123;83m\033[38;2;177;101;56mβ–€\033[48;2;197;111;55m\033[38;2;167;80;32mβ–€\033[48;2;165;92;70m\033[38;2;110;30;13mβ–€\033[48;2;124;65;67m\033[38;2;78;7;34mβ–€\033[48;2;70;17;55m\033[38;2;66;11;59mβ–€\033[48;2;36;4;53m\033[38;2;35;4;53mβ–€\033[48;2;9;2;21m\033[38;2;11;3;21mβ–€\033[0m"
"\033[48;2;69;11;113m\033[38;2;83;24;138mβ–€\033[48;2;82;10;67m\033[38;2;88;16;83mβ–€\033[48;2;161;74;60m\033[38;2;160;79;68mβ–€\033[48;2;134;35;14m\033[38;2;165;73;53mβ–€\033[48;2;127;20;16m\033[38;2;134;27;24mβ–€\033[48;2;131;36;29m\033[38;2;130;34;27mβ–€\033[48;2;183;103;78m\033[38;2;181;111;80mβ–€\033[48;2;83;15;27m\033[38;2;74;10;32mβ–€\033[48;2;36;3;33m\033[38;2;38;5;35mβ–€\033[48;2;6;3;16m\033[38;2;9;3;10mβ–€\033[0m"
"\033[48;2;43;22;120m\033[38;2;67;20;113mβ–€\033[48;2;51;14;97m\033[38;2;72;7;70mβ–€\033[48;2;75;18;32m\033[38;2;120;40;28mβ–€\033[48;2;91;23;34m\033[38;2;173;84;66mβ–€\033[48;2;88;25;28m\033[38;2;151;59;44mβ–€\033[48;2;86;28;29m\033[38;2;180;88;69mβ–€\033[48;2;82;11;43m\033[38;2;151;81;71mβ–€\033[48;2;70;19;87m\033[38;2;81;25;45mβ–€\033[48;2;41;33;112m\033[38;2;35;4;56mβ–€\033[48;2;3;6;29m\033[38;2;14;3;26mβ–€\033[0m"
"\033[48;2;16;25;63m\033[38;2;29;40;123mβ–€\033[48;2;53;77;155m\033[38;2;38;37;132mβ–€\033[48;2;61;108;195m\033[38;2;36;19;82mβ–€\033[48;2;38;76;175m\033[38;2;50;14;67mβ–€\033[48;2;24;52;162m\033[38;2;39;3;55mβ–€\033[48;2;36;94;175m\033[38;2;38;9;65mβ–€\033[48;2;87;162;217m\033[38;2;42;30;100mβ–€\033[48;2;78;134;201m\033[38;2;28;34;135mβ–€\033[48;2;22;33;84m\033[38;2;50;50;155mβ–€\033[48;2;5;2;16m\033[38;2;4;4;29mβ–€\033[0m"
"\033[38;2;5;7;22mβ–€\033[38;2;4;5;39mβ–€\033[38;2;25;52;91mβ–€\033[38;2;52;81;142mβ–€\033[38;2;55;82;165mβ–€\033[38;2;49;95;161mβ–€\033[38;2;34;76;122mβ–€\033[38;2;5;26;60mβ–€\033[38;2;10;7;35mβ–€\033[38;2;2;2;11mβ–€\033[0m"
"\033[48;2;18;24;64m\033[38;2;1;3;20mβ–€\033[48;2;26;37;115m\033[38;2;14;23;64mβ–€\033[48;2;42;60;167m\033[38;2;50;83;171mβ–€\033[48;2;43;47;149m\033[38;2;47;78;178mβ–€\033[48;2;18;11;105m\033[38;2;21;46;156mβ–€\033[48;2;33;24;123m\033[38;2;39;65;165mβ–€\033[48;2;32;36;140m\033[38;2;52;80;170mβ–€\033[48;2;38;46;157m\033[38;2;37;46;116mβ–€\033[48;2;24;25;98m\033[38;2;2;3;32mβ–€\033[48;2;4;1;21m\033[38;2;6;3;1mβ–€\033[0m"
"\033[48;2;52;12;86m\033[38;2;36;29;106mβ–€\033[48;2;68;16;57m\033[38;2;42;24;100mβ–€\033[48;2;168;103;74m\033[38;2;64;21;51mβ–€\033[48;2;157;91;48m\033[38;2;67;19;41mβ–€\033[48;2;199;139;61m\033[38;2;60;6;27mβ–€\033[48;2;169;94;49m\033[38;2;77;15;33mβ–€\033[48;2;179;101;62m\033[38;2;94;27;42mβ–€\033[48;2;101;40;33m\033[38;2;60;19;59mβ–€\033[48;2;46;5;60m\033[38;2;34;13;84mβ–€\033[48;2;19;2;38m\033[38;2;10;2;39mβ–€\033[0m"
"\033[48;2;58;12;100m\033[38;2;81;39;101mβ–€\033[48;2;57;2;61m\033[38;2;65;9;43mβ–€\033[48;2;64;4;14m\033[38;2;116;57;35mβ–€\033[48;2;92;14;15m\033[38;2;132;61;30mβ–€\033[48;2;130;29;34m\033[38;2;169;90;34mβ–€\033[48;2;165;84;61m\033[38;2;154;66;27mβ–€\033[48;2;158;90;61m\033[38;2;172;96;49mβ–€\033[48;2;92;30;39m\033[38;2;107;44;38mβ–€\033[48;2;43;4;45m\033[38;2;45;3;45mβ–€\033[48;2;15;1;26m\033[38;2;17;1;27mβ–€\033[0m"
"\033[48;2;74;30;153m\033[38;2;65;20;135mβ–€\033[48;2;73;21;115m\033[38;2;57;2;93mβ–€\033[48;2;63;4;55m\033[38;2;57;2;37mβ–€\033[48;2;80;5;39m\033[38;2;80;8;23mβ–€\033[48;2;118;31;18m\033[38;2;114;22;29mβ–€\033[48;2;185;103;70m\033[38;2;153;68;48mβ–€\033[48;2;97;14;34m\033[38;2;127;52;44mβ–€\033[48;2;72;8;62m\033[38;2;79;18;52mβ–€\033[48;2;34;3;51m\033[38;2;38;5;51mβ–€\033[48;2;12;2;26m\033[38;2;14;2;28mβ–€\033[0m"
"\033[48;2;59;11;117m\033[38;2;71;25;139mβ–€\033[48;2;49;1;68m\033[38;2;55;4;81mβ–€\033[48;2;56;5;24m\033[38;2;56;3;26mβ–€\033[48;2;84;18;18m\033[38;2;82;13;27mβ–€\033[48;2;191;124;74m\033[38;2;161;95;53mβ–€\033[48;2;129;65;40m\033[38;2;189;129;80mβ–€\033[48;2;73;4;27m\033[38;2;81;15;19mβ–€\033[48;2;70;15;38m\033[38;2;70;14;39mβ–€\033[48;2;30;2;37m\033[38;2;32;2;40mβ–€\033[48;2;9;1;16m\033[38;2;9;1;17mβ–€\033[0m"
"\033[48;2;34;24;118m\033[38;2;52;20;113mβ–€\033[48;2;27;14;91m\033[38;2;38;3;67mβ–€\033[48;2;43;5;39m\033[38;2;48;2;20mβ–€\033[48;2;61;12;30m\033[38;2;92;32;21mβ–€\033[48;2;103;51;36m\033[38;2;199;134;85mβ–€\033[48;2;68;10;36m\033[38;2;106;30;39mβ–€\033[48;2;48;2;44m\033[38;2;68;4;35mβ–€\033[48;2;37;18;85m\033[38;2;60;15;50mβ–€\033[48;2;37;36;106m\033[38;2;25;4;59mβ–€\033[48;2;14;11;41m\033[38;2;9;1;25mβ–€\033[0m"
"\033[48;2;14;22;63m\033[38;2;32;38;123mβ–€\033[48;2;51;75;157m\033[38;2;33;40;131mβ–€\033[48;2;66;105;193m\033[38;2;32;15;78mβ–€\033[48;2;44;79;176m\033[38;2;38;8;72mβ–€\033[48;2;22;54;161m\033[38;2;34;8;62mβ–€\033[48;2;41;89;181m\033[38;2;28;6;58mβ–€\033[48;2;92;159;216m\033[38;2;29;25;84mβ–€\033[48;2;79;140;200m\033[38;2;13;41;131mβ–€\033[48;2;15;40;78m\033[38;2;39;57;133mβ–€\033[48;2;5;1;19m\033[38;2;4;4;34mβ–€\033[0m"
"\033[38;2;3;2;19mβ–€\033[38;2;2;6;47mβ–€\033[38;2;26;51;108mβ–€\033[38;2;44;78;142mβ–€\033[38;2;44;82;151mβ–€\033[38;2;49;90;157mβ–€\033[38;2;39;80;132mβ–€\033[38;2;6;24;62mβ–€\033[38;2;3;7;21mβ–€\033[38;2;7;2;12mβ–€\033[0m"
"\033[48;2;3;7;28m\033[38;2;1;3;7mβ–€\033[48;2;25;32;88m\033[38;2;1;3;20mβ–€\033[48;2;46;67;162m\033[38;2;31;49;91mβ–€\033[48;2;52;66;182m\033[38;2;50;73;147mβ–€\033[48;2;25;30;155m\033[38;2;27;46;144mβ–€\033[48;2;26;30;149m\033[38;2;35;59;148mβ–€\033[48;2;35;50;165m\033[38;2;38;70;148mβ–€\033[48;2;49;70;182m\033[38;2;25;43;86mβ–€\033[48;2;21;31;104m\033[38;2;1;9;22mβ–€\033[48;2;2;3;29m\033[38;2;2;4;3mβ–€\033[0m"
"\033[48;2;33;11;80m\033[38;2;31;26;82mβ–€\033[48;2;50;17;94m\033[38;2;41;35;122mβ–€\033[48;2;55;8;33m\033[38;2;38;24;86mβ–€\033[48;2;138;102;45m\033[38;2;44;16;65mβ–€\033[48;2;203;153;62m\033[38;2;64;21;60mβ–€\033[48;2;204;151;64m\033[38;2;66;9;39mβ–€\033[48;2;151;99;45m\033[38;2;62;6;50mβ–€\033[48;2;76;17;30m\033[38;2;40;13;75mβ–€\033[48;2;58;11;69m\033[38;2;38;16;101mβ–€\033[48;2;23;3;52m\033[38;2;19;7;69mβ–€\033[0m"
"\033[48;2;59;23;90m\033[38;2;67;34;85mβ–€\033[48;2;68;1;71m\033[38;2;67;4;60mβ–€\033[48;2;117;57;27m\033[38;2;94;38;10mβ–€\033[48;2;199;132;64m\033[38;2;216;158;76mβ–€\033[48;2;128;34;28m\033[38;2;137;60;21mβ–€\033[48;2;118;31;14m\033[38;2;138;66;21mβ–€\033[48;2;204;136;70m\033[38;2;206;147;70mβ–€\033[48;2;120;46;31m\033[38;2;101;35;38mβ–€\033[48;2;68;11;49m\033[38;2;64;17;62mβ–€\033[48;2;25;2;36m\033[38;2;21;5;38mβ–€\033[0m"
"\033[48;2;81;29;146m\033[38;2;60;9;120mβ–€\033[48;2;82;13;113m\033[38;2;73;3;104mβ–€\033[48;2;110;35;61m\033[38;2;97;33;35mβ–€\033[48;2;207;150;74m\033[38;2;210;151;73mβ–€\033[48;2;219;172;61m\033[38;2;171;109;28mβ–€\033[48;2;214;160;62m\033[38;2;158;97;23mβ–€\033[48;2;204;141;75m\033[38;2;196;147;68mβ–€\033[48;2;124;46;63m\033[38;2;115;34;50mβ–€\033[48;2;65;7;55m\033[38;2;65;5;50mβ–€\033[48;2;25;1;37m\033[38;2;26;2;32mβ–€\033[0m"
"\033[48;2;63;12;107m\033[38;2;80;29;142mβ–€\033[48;2;62;4;82m\033[38;2;80;16;108mβ–€\033[48;2;170;129;73m\033[38;2;158;105;73mβ–€\033[48;2;162;98;44m\033[38;2;191;133;79mβ–€\033[48;2;126;22;28m\033[38;2;126;41;27mβ–€\033[48;2;132;24;32m\033[38;2;140;48;30mβ–€\033[48;2;169;81;56m\033[38;2;192;118;68mβ–€\033[48;2;174;113;72m\033[38;2;156;93;64mβ–€\033[48;2;70;25;34m\033[38;2;66;16;39mβ–€\033[48;2;18;2;26m\033[38;2;25;2;32mβ–€\033[0m"
"\033[48;2;41;12;98m\033[38;2;62;13;98mβ–€\033[48;2;48;9;95m\033[38;2;58;2;71mβ–€\033[48;2;68;13;31m\033[38;2;130;89;51mβ–€\033[48;2;168;115;66m\033[38;2;200;141;82mβ–€\033[48;2;216;156;72m\033[38;2;135;46;18mβ–€\033[48;2;209;152;73m\033[38;2;132;38;18mβ–€\033[48;2;155;96;56m\033[38;2;206;121;81mβ–€\033[48;2;76;25;55m\033[38;2;133;69;49mβ–€\033[48;2;62;24;86m\033[38;2;66;19;44mβ–€\033[48;2;31;17;62m\033[38;2;18;3;30mβ–€\033[0m"
"\033[48;2;13;17;59m\033[38;2;28;20;97mβ–€\033[48;2;56;69;149m\033[38;2;41;29;132mβ–€\033[48;2;53;71;165m\033[38;2;47;9;72mβ–€\033[48;2;41;52;154m\033[38;2;60;7;46mβ–€\033[48;2;33;29;130m\033[38;2;93;31;40mβ–€\033[48;2;31;48;129m\033[38;2;99;36;37mβ–€\033[48;2;55;95;168m\033[38;2;76;20;63mβ–€\033[48;2;83;132;194m\033[38;2;53;15;98mβ–€\033[48;2;53;76;139m\033[38;2;58;42;125mβ–€\033[48;2;2;9;44m\033[38;2;33;26;76mβ–€\033[0m"
"\033[38;2;1;3;17mβ–€\033[38;2;1;10;45mβ–€\033[38;2;54;82;141mβ–€\033[38;2;69;103;183mβ–€\033[38;2;58;94;194mβ–€\033[38;2;56;103;195mβ–€\033[38;2;76;138;194mβ–€\033[38;2;58;98;132mβ–€\033[38;2;5;8;43mβ–€\033[38;2;10;2;15mβ–€\033[0m"
"\033[48;2;18;21;53m\033[38;2;11;3;8mβ–€\033[48;2;27;50;118m\033[38;2;3;18;28mβ–€\033[48;2;51;78;192m\033[38;2;41;74;119mβ–€\033[48;2;38;48;174m\033[38;2;35;71;148mβ–€\033[48;2;14;21;123m\033[38;2;15;46;135mβ–€\033[48;2;28;40;158m\033[38;2;36;63;153mβ–€\033[48;2;48;65;184m\033[38;2;39;67;133mβ–€\033[48;2;45;55;153m\033[38;2;7;21;43mβ–€\033[48;2;12;11;74m\033[38;2;2;9;16mβ–€\033[48;2;2;4;17m\033[38;2;1;4;7mβ–€\033[0m"
"\033[48;2;40;21;100m\033[38;2;35;36;118mβ–€\033[48;2;61;17;68m\033[38;2;38;32;117mβ–€\033[48;2;102;39;25m\033[38;2;37;25;77mβ–€\033[48;2;186;115;69m\033[38;2;56;25;72mβ–€\033[48;2;189;114;60m\033[38;2;58;11;37mβ–€\033[48;2;192;119;57m\033[38;2;61;18;51mβ–€\033[48;2;128;60;29m\033[38;2;54;13;55mβ–€\033[48;2;77;27;59m\033[38;2;41;15;97mβ–€\033[48;2;40;5;67m\033[38;2;33;14;97mβ–€\033[48;2;8;4;14m\033[38;2;3;1;29mβ–€\033[0m"
"\033[48;2;80;16;104m\033[38;2;86;33;102mβ–€\033[48;2;86;27;40m\033[38;2;79;17;29mβ–€\033[48;2;211;155;94m\033[38;2;197;140;81mβ–€\033[48;2;110;25;4m\033[38;2;155;79;30mβ–€\033[48;2;120;24;12m\033[38;2;139;50;29mβ–€\033[48;2;114;35;5m\033[38;2;154;79;30mβ–€\033[48;2;205;152;76m\033[38;2;201;127;69mβ–€\033[48;2;121;68;35m\033[38;2;107;46;38mβ–€\033[48;2;46;4;51m\033[38;2;45;3;57mβ–€\033[48;2;9;3;19m\033[38;2;10;3;23mβ–€\033[0m"
"\033[48;2;89;27;147m\033[38;2;76;12;128mβ–€\033[48;2;97;25;99m\033[38;2;87;21;56mβ–€\033[48;2;180;116;78m\033[38;2;212;152;85mβ–€\033[48;2;208;128;79m\033[38;2;129;43;16mβ–€\033[48;2;180;114;35m\033[38;2;117;24;18mβ–€\033[48;2;212;146;65m\033[38;2;133;47;17mβ–€\033[48;2;176;105;66m\033[38;2;211;150;79mβ–€\033[48;2;124;56;78m\033[38;2;118;55;45mβ–€\033[48;2;47;6;43m\033[38;2;45;4;50mβ–€\033[48;2;12;1;15m\033[38;2;10;2;24mβ–€\033[0m"
"\033[48;2;66;12;119m\033[38;2;88;25;146mβ–€\033[48;2;51;1;64m\033[38;2;84;16;93mβ–€\033[48;2;63;6;25m\033[38;2;95;21;27mβ–€\033[48;2;102;16;21m\033[38;2;158;86;49mβ–€\033[48;2;167;100;42m\033[38;2;197;135;60mβ–€\033[48;2;194;136;67m\033[38;2;226;169;72mβ–€\033[48;2;107;16;33m\033[38;2;134;56;30mβ–€\033[48;2;91;18;33m\033[38;2;105;33;52mβ–€\033[48;2;44;4;35m\033[38;2;48;5;45mβ–€\033[48;2;9;1;16m\033[38;2;10;1;21mβ–€\033[0m"
"\033[48;2;41;17;112m\033[38;2;59;21;97mβ–€\033[48;2;38;7;77m\033[38;2;40;2;58mβ–€\033[48;2;44;6;11m\033[38;2;53;9;13mβ–€\033[48;2;97;40;33m\033[38;2;91;16;19mβ–€\033[48;2;192;128;81m\033[38;2;206;137;75mβ–€\033[48;2;104;26;27m\033[38;2;142;68;38mβ–€\033[48;2;62;2;23m\033[38;2;83;3;33mβ–€\033[48;2;59;20;85m\033[38;2;70;9;42mβ–€\033[48;2;34;25;99m\033[38;2;35;4;42mβ–€\033[48;2;3;4;22m\033[38;2;4;2;15mβ–€\033[0m"
"\033[48;2;43;44;109m\033[38;2;26;32;130mβ–€\033[48;2;58;75;171m\033[38;2;34;27;124mβ–€\033[48;2;37;66;153m\033[38;2;31;6;52mβ–€\033[48;2;28;44;136m\033[38;2;60;12;49mβ–€\033[48;2;28;26;127m\033[38;2;76;23;42mβ–€\033[48;2;37;62;151m\033[38;2;48;6;46mβ–€\033[48;2;65;116;191m\033[38;2;43;11;82mβ–€\033[48;2;76;116;194m\033[38;2;30;20;119mβ–€\033[48;2;27;42;103m\033[38;2;46;51;137mβ–€\033[48;2;7;4;17m\033[38;2;2;3;23mβ–€\033[0m"
"\033[38;2;1;7;28mβ–€\033[38;2;14;32;80mβ–€\033[38;2;64;99;173mβ–€\033[38;2;61;99;192mβ–€\033[38;2;52;95;200mβ–€\033[38;2;59;116;199mβ–€\033[38;2;78;139;183mβ–€\033[38;2;25;57;93mβ–€\033[38;2;3;6;31mβ–€\033[38;2;7;2;8mβ–€\033[0m"
"\033[48;2;4;6;27m\033[38;2;4;3;5mβ–€\033[48;2;23;35;97m\033[38;2;6;4;18mβ–€\033[48;2;36;71;168m\033[38;2;27;50;90mβ–€\033[48;2;39;64;166m\033[38;2;46;77;148mβ–€\033[48;2;22;24;108m\033[38;2;24;54;137mβ–€\033[48;2;18;27;131m\033[38;2;33;51;128mβ–€\033[48;2;28;46;165m\033[38;2;44;66;139mβ–€\033[48;2;49;70;179m\033[38;2;24;37;84mβ–€\033[48;2;22;30;103m\033[38;2;5;6;26mβ–€\033[48;2;3;4;24m\033[38;2;4;1;5mβ–€\033[0m"
"\033[48;2;25;12;76m\033[38;2;21;24;71mβ–€\033[48;2;33;19;91m\033[38;2;26;36;115mβ–€\033[48;2;39;6;28m\033[38;2;22;28;94mβ–€\033[48;2;55;4;14m\033[38;2;32;20;71mβ–€\033[48;2;74;15;17m\033[38;2;32;13;52mβ–€\033[48;2;69;11;15m\033[38;2;26;6;41mβ–€\033[48;2;51;4;13m\033[38;2;25;9;52mβ–€\033[48;2;39;4;31m\033[38;2;17;9;72mβ–€\033[48;2;26;5;80m\033[38;2;25;20;102mβ–€\033[48;2;12;5;54m\033[38;2;10;9;56mβ–€\033[0m"
"\033[48;2;51;26;83m\033[38;2;64;31;79mβ–€\033[48;2;53;3;65m\033[38;2;55;4;53mβ–€\033[48;2;44;3;21m\033[38;2;44;3;23mβ–€\033[48;2;91;14;8m\033[38;2;84;13;14mβ–€\033[48;2;191;121;47m\033[38;2;192;121;66mβ–€\033[48;2;174;111;40m\033[38;2;155;87;33mβ–€\033[48;2;77;9;12m\033[38;2;76;7;15mβ–€\033[48;2;55;6;23m\033[38;2;52;4;23mβ–€\033[48;2;33;3;45m\033[38;2;31;2;48mβ–€\033[48;2;16;4;40m\033[38;2;14;3;41mβ–€\033[0m"
"\033[48;2;75;27;152m\033[38;2;55;12;117mβ–€\033[48;2;55;7;110m\033[38;2;47;4;87mβ–€\033[48;2;48;6;49m\033[38;2;45;3;41mβ–€\033[48;2;39;4;46m\033[38;2;52;10;45mβ–€\033[48;2;45;8;43m\033[38;2;137;59;37mβ–€\033[48;2;48;9;45m\033[38;2;130;57;36mβ–€\033[48;2;45;4;43m\033[38;2;55;5;41mβ–€\033[48;2;42;4;44m\033[38;2;53;6;42mβ–€\033[48;2;34;2;46m\033[38;2;34;3;50mβ–€\033[48;2;17;2;36m\033[38;2;16;3;35mβ–€\033[0m"
"\033[48;2;56;10;106m\033[38;2;75;26;148mβ–€\033[48;2;48;2;82m\033[38;2;52;6;99mβ–€\033[48;2;56;3;36m\033[38;2;42;5;52mβ–€\033[48;2;80;21;36m\033[38;2;49;9;45mβ–€\033[48;2;146;76;45m\033[38;2;69;23;46mβ–€\033[48;2;142;63;30m\033[38;2;55;15;48mβ–€\033[48;2;101;31;31m\033[38;2;39;3;44mβ–€\033[48;2;61;13;39m\033[38;2;42;3;45mβ–€\033[48;2;31;1;42m\033[38;2;36;3;45mβ–€\033[48;2;16;1;29m\033[38;2;18;2;31mβ–€\033[0m"
"\033[48;2;37;10;106m\033[38;2;59;15;100mβ–€\033[48;2;39;16;106m\033[38;2;48;3;74mβ–€\033[48;2;47;6;32m\033[38;2;51;2;24mβ–€\033[48;2;66;5;24m\033[38;2;85;16;18mβ–€\033[48;2;95;27;32m\033[38;2;189;105;64mβ–€\033[48;2;102;30;37m\033[38;2;141;55;34mβ–€\033[48;2;58;2;23m\033[38;2;83;12;31mβ–€\033[48;2;41;12;53m\033[38;2;54;13;32mβ–€\033[48;2;39;24;92m\033[38;2;26;7;42mβ–€\033[48;2;18;14;57m\033[38;2;13;2;29mβ–€\033[0m"
"\033[48;2;12;19;60m\033[38;2;21;25;95mβ–€\033[48;2;50;74;169m\033[38;2;35;35;134mβ–€\033[48;2;45;74;177m\033[38;2;37;6;65mβ–€\033[48;2;32;54;136m\033[38;2;45;7;43mβ–€\033[48;2;17;33;128m\033[38;2;32;8;54mβ–€\033[48;2;14;48;136m\033[38;2;28;3;46mβ–€\033[48;2;35;80;149m\033[38;2;34;10;61mβ–€\033[48;2;75;129;195m\033[38;2;21;17;89mβ–€\033[48;2;49;73;147m\033[38;2;35;48;136mβ–€\033[48;2;1;5;40m\033[38;2;19;30;79mβ–€\033[0m"
"\033[38;2;2;4;12mβ–€\033[38;2;2;11;50mβ–€\033[38;2;49;80;143mβ–€\033[38;2;66;107;177mβ–€\033[38;2;55;92;187mβ–€\033[38;2;54;91;181mβ–€\033[38;2;65;123;174mβ–€\033[38;2;54;103;137mβ–€\033[38;2;1;14;53mβ–€\033[38;2;2;4;14mβ–€\033[0m"
)
FONT_HEIGHT=$(( ${#FONT[@]} / 11 )) # FONT height in characters

function figletise() {
  read str;
  for (( line = 0; line < FONT_HEIGHT; line++ )); do
    printf "  "
    for (( c=0; c<${#str}; c++ )); do
      local ch=$(LC_CTYPE=C printf '%d' "'${str:$c:1}") # get ascii value
      ch=$((ch-48))
      if (( ch >= 0 && ch <= 10 )); then
        local i=$(( ch * FONT_HEIGHT + line )) # 2D -> 1D array conversion
        printf "${FONT[$i]}"
      fi
    done
    printf "\n"
  done
}

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

while true; do
  date +"$TIME_FORMAT" | figletise

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

  printf "\033[${FONT_HEIGHT}A\r" # move cursor to beginning
done

It looks like this:

nixieclock

The escape sequences were generated using fay, my little experimental terminal image rasteriser. You can use whatever tool you want. It can be a simple ascii art, or a complicated rasterised image. While you don’t have to, you are allowed to modify the script in any way you want (as long as the clock still works). Figure it out, be creative, and make the best looking digital clock in the terminal. :frog:

5 Likes

Here’s my first ASCII entry, which practically have started this thread in a way :upside_down_face:

image

#!/usr/bin/env bash

# A rather nice looking digital clock in the terminal.
# by KreΕ‘imir
# 
# The way of obtaining ASCII code of a character, using printf function and a single quote character –
# a rather insane syntax which I haven’t seen before, but it works.
# Read about it here: http://mywiki.wooledge.org/BashFAQ/071

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

REFRESH_INTERVAL=0.2  # display the clock every 0.2 seconds, adjust if necessary
TIME_FORMAT="%H:%M:%S" # change to "%I:%M:%S" for 12-hour format

# Feel free to modify the FONT, the only restriction is that all characters are
# of equal height. There should be 11 characters, in this order: "0123456789:"
FONT=(
" ######\  "
"### __##\ "
"####\ ## |"
"##\##\## |"
"## \#### |"
"## |\### |"
"\######  /"
" \______/ "
"   ##\    "
" #### |   "
" \_## |   "
"   ## |   "
"   ## |   "
"   ## |   "
" ######\  "
" \______| "
" ######\  "
"##  __##\ "
"\__/  ## |"
" ######  |"
"##  ____/ "
"## |      "
"########\ "
"\________|"
" ######\  "
"## ___##\ "
"\_/   ## |"
"  ##### / "
"  \___##\ "
"##\   ## |"
"\######  |"
" \______/ "
"##\   ##\ "
"## |  ## |"
"## |  ## |"
"######## |"
"\_____## |"
"      ## |"
"      ## |"
"      \__|"
"#######\  "
"##  ____| "
"## |      "
"#######\  "
"\_____##\ "
"##\   ## |"
"\######  |"
" \______/ "
" ######\  "
"##  __##\ "
"## /  \__|"
"#######\  "
"##  __##\ "
"## /  ## |"
" ######  |"
" \______/ "
"########\ "
"\____##  |"
"    ##  / "
"   ##  /  "
"  ##  /   "
" ##  /    "
"##  /     "
"\__/      "
" ######\  "
"##  __##\ "
"## /  ## |"
" ######  |"
"##  __##< "
"## /  ## |"
"\######  |"
" \______/ "
" ######\  "
"##  __##\ "
"## /  ## |"
"\####### |"
" \____## |"
"##\   ## |"
"\######  |"
" \______/ "
"        "
"        "
"  ##\   "
"  \__|  "
"        "
"  ##\   "
"  \__|  "
"        "
)
FONT_HEIGHT=$(( ${#FONT[@]} / 11 )) # FONT height in characters

function figletise() {
    read str;
    for (( line = 0; line < FONT_HEIGHT; line++ )); do
        printf "  "
        for (( c=0; c<${#str}; c++ )); do
            local ch=$(LC_CTYPE=C printf '%d' "'${str:$c:1}") # get ascii value
            ch=$((ch-48))

            if (( ch >= 0 && ch <= 10 )); then
                local i=$(( ch * FONT_HEIGHT + line )) # 2D -> 1D array conversion
                printf '%s' "${FONT[$i]}"
            fi
        done
        printf "\n"
    done
}

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

while true; do
    date +"$TIME_FORMAT" | figletise

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

    printf "\033[${FONT_HEIGHT}A\r" # move cursor to beginning, fixed for crappy terminals
done

Real deal to come soon! :partying_face:

3 Likes

Who said Nixie tube?! :sunglasses:

image

image

Body is limited to 90000 characters; you entered 135220.

Now…Where can i get the prize? :rofl:

P.S. Script is awesome, as well as fay! :frog:

3 Likes

It’s gorgeous, but so wide! I had to reduce the font size of my terminal to display it correctly.

Fantastic work, nevertheless. It doesn’t even look like something in the terminal…

1 Like

You should buy bigger screen to watch this! :rofl:
Yeah from the distance looks pretty damn…real

1 Like

Yeah, I just ordered two 32" monitors (LG-32GN600-B). :rofl:

4 Likes

This was so neat I added this so I can change the text colour. Just need to run the script with a valid value

stty -echo 2>/dev/null

reg='^[0-9]+|30[037]$'
if ! [ -z $1 ] && [[ $1 =~ $reg ]]; then 
    printf "\x1B[$1m"
fi


printf '\033[?25l\n' # hide cursor

Works great with text fonts.

Screenshot from 2021-07-20 20-32-39
bluedigiclock

4 Likes

I’m actually going to reply twice (sorry for the double post) as this is a different change. It turns out; that you can make an extremely simple code change.

FONT=(
xxx
xxx
xxx
)

To something like this:

readarray -t FONT < $1

This allows you to use a file to set the font. Which helps because now; you can go to any text to ascii converter and simply create a new text output with 1-9: in a column. Then copy and paste the output to a file with a nice name. Then load the program with the script and the file name. A little fiddling with which fonts work; some messing around pasting it into their own files and you get this:

Screenshot from 2021-07-20 21-50-10

This sort of broke the colour code I added above even if you more the arguments around; would have to fix whatever bug but too tired right this minute. And it would take some tweaking to figure out how to put that nix monstrosity in its own file. Still the best looking one though; gets my vote.

2 Likes

Less faithful Nixie tube with transparency

image

Screenshot_20210720_141735

:sunglasses:

2 Likes

Now make one small enough that the clock fits into an 80-column terminal :stuck_out_tongue:

1 Like

No. :rofl:

1 Like