Blog

converting time to color

So, Danny pointed out this website and asked if one can write a script to do this on a computer. Here is what I came up with:

#!/bin/bash
while true
do
    #read time
    TIME=$(date +"%T") 

    #delete colons and add a pound sign to the begining
    COLOR=$(echo "$(echo $TIME | sed 's/://g')" | sed 's/^/#/') 

    #to change the background color I need to change it in the profile, so first I find the ID, here I'm acutally assuming there's only 1 ID
    MYID=$(dconf list /org/gnome/terminal/legacy/profiles:/ | sed '1d' | sed 's/\///g' ) 

    #this is where things need to be changed
    BAK=/org/gnome/terminal/legacy/profiles:/$MYID/background-color 

    #clear the terminal screen
    clear 
    #change the color of background
    dconf write $BAK "'$COLOR'" 

    #this is to center the text
    MyX=$(stty size | awk '{print $1}') #get the number of rows of terminal
    MyY=$(stty size | awk '{print $2}') #get the number of columns of terminal

    HalfX=$((($MyX)/2)) #divide the x by two
    HalfY=$((($MyY-5)/2)) #divide the y by 2. Here -5 is accounting for the half of the length of the stirng to be printed

    #puch the cursor to the middle of the screen
    tput cup $HalfX $HalfY
    #write time
    echo ${TIME}
    #push the cursor to the last line
    tput cup $MyX 0
    #wait for a second
    sleep 1
done

I bet one can make it look nicer :)

Leave a comment