#!/bin/bash colors=(black red green yellow blue purple cyan white) declare -A COL BG TEXT for c in ${!colors[@]} do COL[${colors[$c]}]="$(tput setaf $c)" BG[${colors[$c]}]="$(tput setab $c)" done unset c COL[0]="$(tput sgr0)" TEXT[underline]="$(tput smul)" TEXT[no-underline]="$(tput rmul)" TEXT[blink]="$(tput blink)" TEXT[bold]="$(tput bold)" TEXT[dim]="$(tput dim)" TEXT[italic]="$(tput sitm)" TEXT[reverse]="$(tput rev)" COL_show() { for b in {0..7}; do for c in {0..7};do tput setaf $c tput setab $b printf $c tput sgr0 done echo done } COL.show() { cap="${1:-8}" # declare -p cap if [ "$cap" = 8 ]; then for c in ${colors[@]}; do echo -e ${COL[$c]}\${COL[$c]}${COL[0]}"\t"${BG[$c]}\${BG[$c]}${COL[0]} done elif [ "$cap" = 256 ]; then echo ${COL[0]}" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" for n in {0..15}; do printf "`tput setab $n`%s`tput sgr0`" " " done echo echo 16 for n in {0..5}; do local from=$(($n * 36 + 16)) to=$(($n * 36 + 16 + 35)) # declare -p from to printf '%3s' $from for nn in $(seq $from $to); do printf "`tput setab $nn`%s`tput sgr0`" " " done echo $to done echo echo 24 greys from 231 + '<1 to 24>' for n in {232..256}; do printf "`tput setab $n`%s`tput sgr0`" " " done echo fi } COL.greys(){ printf $((232+$1)); } COL.rgb(){ echo $(( 16 + ($1*36) + ($2*6) + ($3) )); } COL.square(){ printf "${BG[$1]}%s" ' '; } # COL.gradient (R|G|B) | ( R G | R B | G R | G B | B R | B G ) COL.gradient() { echo $# local R=0 G=0 B=0 n a b case $# in 1) for n in {0..5};do [[ $1 = R ]] && R=$n [[ $1 = G ]] && G=$n [[ $1 = B ]] && B=$n COL.square $R$G$B done echo ${COL[0]} ;; 2) for a in {0..5};do for b in {0..5};do [[ $1 = R ]] && R=$b [[ $2 = R ]] && R=$a [[ $1 = G ]] && G=$b [[ $2 = G ]] && G=$a [[ $1 = B ]] && B=$b [[ $2 = B ]] && B=$a COL.square $R$G$B done echo ${COL[0]} done echo ${COL[0]} ;; *) echo "help" ;; esac } # RGB indexed colors for 256 colors terminals for r in {0..5}; do for g in {0..5}; do for b in {0..5}; do COL[$r$g$b]="$(tput setaf `COL.rgb $r $g $b`)" BG[$r$g$b]="$(tput setab `COL.rgb $r $g $b`)" done done done unset r g b # Greys for g in {0..23}; do COL[grey$g]="$(tput setaf `COL.greys $g`)" BG[grey$g]="$(tput setab `COL.greys $g`)" done export COL BG TEXT # 'COL.show' 'COL.greys' 'COL.rgb' 'COL.square' 'COL.gradient' #css() #{ # [[ ! -z $color ]] && printf ${COL[$color]} # [[ ! -z $background ]] && printf ${BG[$background]} # [[ ! -z $style ]] && printf ${COL[$style]} ## echo CSS ## printf ${COL[reset]} #} # #style() #{ # local color background _style # for kv in "$@";do # case $kv in # color=*) color=${kv} ;; # esac # done #} #declare -A class=() #color=red #class[title]=$(color=blue background=white style=underline css) #$(h1 class=title)Coucou$(/h1) #echo "`css` #Normal text ${class[title]}TITLE STYLE${COL[reset]}`css` and normal again # #"