OK, this I’ve been using for a little while now, but starting a few days ago it’s undergone quite a few changes. So It’s time this script is recognized for what it is – a GREAT – two line horizontal calendar.

My version looks like this:

Feb_2010

Yes, you are reading that correctly, Feb 10, 2010 and it’s only Dec 2009. I was testing for the width and the fact it would show days beyond the 28 days in Feb.

The script was originally created by: ans – Thank you who ever you are. and searchOne did some work on it to get it to display to the 31st day always. It had problems and mobilediesel and dk75 went to work on it.

dk75 came up with language codes for the day names which is really a nice touch. My system is in English but I want the day names in Spanish for my wife, yes, I can read them as well.

It’s been edited, changed, cut apart and pasted together and then along come our friend, Crinos512 with itchy fingers. You have to like a guy that pops in with:

OK you guys are having WAY too much fun with this for me to resist.

I took the last one and made a few… ok, a lot of changes.
.. added comments.
.. rolled the english weekdays in with the other languages for consistancy.
.. replaced a few ‘if’ statements with ‘case’.
.. reorginized the code to reflect the logic. (because I like it like that)
.. removed some unused code.
.. closed the ${color xxxxxx} statements in the day row.
.. excluded “NEXTMONTH” from displaying ${color xxxxxx} statements if the current month is 31 days long.

So here’s that version.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash
# horizontal calendar for conky by ans
# Updated by: mobilediesel, dk75, Bruce, Crinos512, et al.
# locale depend week day names
lang=$1
case ${lang:=$LANG} in
        en*  ) Sun="Su";   Mon="Mo";   Tue="Tu";   Wed="We";   Thu="Th";   Fri="Fr";   Sat="Sa" ;;   # English (English)
        af*  ) Sun="So";   Mon="Ma";   Tue="Di";   Wed="Wo";   Thu="Do";   Fri="Vr";   Sat="Sa" ;;   # Afrikaans (Afrikaans)
        be*  ) Sun="Ня";   Mon="Па";   Tue="Аў";   Wed="Се";   Thu="Ча";   Fri="Пя";   Sat="Су" ;;   # Belarusian (Беларуская) x
        bg*  ) Sun="Не";   Mon="По";   Tue="Вт";   Wed="Ср";   Thu="Че";   Fri="Пе";   Sat="Съ" ;;   # Bulgarian (Български) x
        bs*  ) Sun="Ne";   Mon="Po";   Tue="Ut";   Wed="Sr";   Thu="Če";   Fri="Pe";   Sat="Su" ;;   # Bosnian (Bosanac)
        cs*  ) Sun="Ne";   Mon="Po";   Tue="Út";   Wed="St";   Thu="Čt";   Fri="Pá";   Sat="So" ;;   # Czech (Čeština)
        da*  ) Sun="Sø";   Mon="Ma";   Tue="Ti";   Wed="On";   Thu="To";   Fri="Fr";   Sat="Lø" ;;   # Danish (Dánština) 6
        de*  ) Sun="So";   Mon="Mo";   Tue="Di";   Wed="Mi";   Thu="Do";   Fri="Fr";   Sat="Sa" ;;   # German (Deutche)
        el*  ) Sun="Κυ";   Mon="Δε";   Tue="Τρ";   Wed="Τε";   Thu="Πέ";   Fri="Πα";   Sat="Σά" ;;   # Greek (Ελληνικά) x
        es*  ) Sun="Do";   Mon="Lu";   Tue="Ma";   Wed="Mi";   Thu="Ju";   Fri="Vi";   Sat="Sá" ;;   # Spanish (Español)
        et*  ) Sun="Pü";   Mon="Es";   Tue="Te";   Wed="Ko";   Thu="Ne";   Fri="Re";   Sat="La" ;;   # Estonian (Eesti)
        tl*  ) Sun="Li";   Mon="Lu";   Tue="Ma";   Wed="Mi";   Thu="Hu";   Fri="Bi";   Sat="Sa" ;;   # Philippine (Filipino)
        fi*  ) Sun="Su";   Mon="Ma";   Tue="Ti";   Wed="Ke";   Thu="To";   Fri="Pe";   Sat="La" ;;   # Finnish (Suomen) 12
        fr*  ) Sun="Di";   Mon="Lu";   Tue="Ma";   Wed="Me";   Thu="Je";   Fri="Ve";   Sat="Sa" ;;   # French (Français)
        gl*  ) Sun="Do";   Mon="Lu";   Tue="Ma";   Wed="Mé";   Thu="Xo";   Fri="Ve";   Sat="Sá" ;;   # Galician (Galego)
        hr*  ) Sun="Ne";   Mon="Po";   Tue="Ut";   Wed="Ut";   Thu="Sr";   Fri="Če";   Sat="Su" ;;   # Croatian (Hrvatska)
        hu*  ) Sun="Va";   Mon="Hé";   Tue="Ke";   Wed="Se";   Thu="Cü";   Fri="Pé";   Sat="So" ;;   # Hungarian (Magyar)
        id*  ) Sun="Mi";   Mon="Se";   Tue="Se";   Wed="Ra";   Thu="Ka";   Fri="Ju";   Sat="Sa" ;;   # Indonesian (Indonesia)
        is*  ) Sun="Su";   Mon="Má";   Tue="Þr";   Wed="Mi";   Thu="Fi";   Fri="Fö";   Sat="La" ;;   # Icelandic (Íslenska) 18
        it*  ) Sun="Do";   Mon="Lu";   Tue="Ma";   Wed="Me";   Thu="Gi";   Fri="Ve";   Sat="Sa" ;;   # Italian (Italiano)
        ja*  ) Sun="日曜";  Mon="月曜";  Tue="火曜"; Wed="水曜";  Thu="木曜";  Fri="金曜"; Sat="土曜";;   # Japanese (日本語) x
        ko*  ) Sun="일요";  Mon="월요";  Tue="화요"; Wed="수요";  Thu="목요";  Fri="금요"; Sat="토요";;   # Korean (한국어) x
        lt*  ) Sun="se";   Mon="pi";   Tue="an";   Wed="tr";   Thu="ke";   Fri="pe";   Sat="še" ;;   # Lithuanian (Lietuviškai)
        lv*  ) Sun="Sv";   Mon="Pr";   Tue="Ot";   Wed="Tr";   Thu="Ce";   Fri="Pe";   Sat="Se" ;;   # Latvian (Latviešu)
        mk*  ) Sun="Не";   Mon="По";   Tue="Вт";   Wed="Ср";   Thu="Че";   Fri="Пе";   Sat="Са" ;;   # Macedonian (Македонски) 24 x
        ml*  ) Sun="Mi";   Mon="Is";   Tue="Se";   Wed="Ra";   Thu="Ra";   Fri="Ju";   Sat="Sa" ;;   # Malay (Bahasa Melayu)
        nb*  ) Sun="sø";   Mon="ma";   Tue="ti";   Wed="on";   Thu="to";   Fri="fr";   Sat="lø" ;;   # Norwegian (Norsk)
        nl*  ) Sun="Zo";   Mon="Ma";   Tue="Di";   Wed="Wo";   Thu="Do";   Fri="Vr";   Sat="Za" ;;   # Dutch (Nederlandse)
        pl*  ) Sun="Nd";   Mon="Po";   Tue="Wt";   Wed="Śr";   Thu="Cz";   Fri="Pt";   Sat="So" ;;   # Polish (Polska)
        pt*  ) Sun="Do";   Mon="Sq";   Tue="Te";   Wed="Qa";   Thu="Qi";   Fri="Se";   Sat="Sá" ;;   # Portuguese (Português)
        ro*  ) Sun="Du";   Mon="Lu";   Tue="Ma";   Wed="Mi";   Thu="Jo";   Fri="Vi";   Sat="Sa" ;;   # Romanian (Român) 30
        ru*  ) Sun="Во";   Mon="По";   Tue="Вт";   Wed="Ср";   Thu="Че";   Fri="Пя";   Sat="Су" ;;   # Russian (Русский) x
        sk*  ) Sun="Ne";   Mon="Po";   Tue="Ut";   Wed="St";   Thu="Št";   Fri="Pi";   Sat="So" ;;   # Slovak (Slovenčina)
        sl*  ) Sun="Ne";   Mon="Po";   Tue="To";   Wed="Sr";   Thu="Če";   Fri="Pe";   Sat="So" ;;   # Slovenian (Slovenski)
        sr*  ) Sun="Ne";   Mon="Po";   Tue="Ut";   Wed="Sr";   Thu="Če";   Fri="Pe";   Sat="Su" ;;   # Serbian (Српски)
        sv*  ) Sun="Sö";   Mon="Må";   Tue="Ti";   Wed="On";   Thu="To";   Fri="Fr";   Sat="Lö" ;;   # Swedish (Svenska)
        tr*  ) Sun="Pa";   Mon="Pa";   Tue="Sa";   Wed="Ça";   Thu="Pe";   Fri="Cu";   Sat="Cu" ;;   # Turkish (Türkçe) 36
        uk*  ) Sun="Не";   Mon="По";   Tue="Ві";   Wed="Се";   Thu="Че";   Fri="П'";   Sat="Су" ;;   # Ukrainian (Українська) x
esac
 
COLOROLD="445566" #MidSlateGrey
COLORTODAY="FF8C00" #Darkorange
COLORREST="445566" #MidSlateGrey
COLORNEXT="778899" #LightSlateGrey
 
TODAY=$(date +%d)
LASTDAY=$(date -d "-$TODAY days +1 month" +%d)
FIRSTDAY=$(date -d "-$[${TODAY/#0/}-1] days" +%u)
TODAYC="\${color $COLORTODAY} $TODAY\${color}"
 
# Build $TOPLINE
j=31
k=$FIRSTDAY
while [ $j -gt 0 ]; do
  case "$k" in
    1) TOPLINE="$TOPLINE $Mon";;
    2) TOPLINE="$TOPLINE $Tue";;
    3) TOPLINE="$TOPLINE $Wed";;
    4) TOPLINE="$TOPLINE $Thu";;
    5) TOPLINE="$TOPLINE $Fri";;
    6) TOPLINE="$TOPLINE \${color FF8C00}$Sat\${color}";;
    7) TOPLINE="$TOPLINE \${color FFFF00}$Sun\${color}"
       k=0
       ;;
  esac
  j=$[$j-1]
  k=$[$k+1]
done
 
# Build $OVER
i=1
OVER="\${color $COLOROLD}"
while [ $i -lt $TODAY ]; do
  case $i in
    [1-9])   OVER="$OVER 0$i" ;;
    *)       OVER="$OVER $i"  ;;
  esac
  i=$[$i+1]
done
OVER="$OVER\${color}"
 
# skip i where value of i=$TODAY
i=$[$i+1] 
 
# Build $REST
REST="\${color $COLORREST}"
while [ $i -le $LASTDAY ]; do
  case $i in
    [1-9])   REST="$REST 0$i" ;;
    *)       REST="$REST $i"  ;;
  esac
  i=$[$i+1]
done
REST="$REST\${color}"
 
# Build $NEXTMONTH
i=$LASTDAY
j=1
NEXTMONTH=""
if [ $i -ne 31 ] ; then
  NEXTMONTH="\${color $COLORNEXT}"
  while [ $i -lt 31 ] ; do
     NEXTMONTH="$NEXTMONTH 0$j"
     i=$[$i+1]
     j=$[$j+1]
  done
  NEXTMONTH="$NEXTMONTH\${color}"
fi
 
echo "\${goto 240}$TOPLINE\${tab 20}"
echo "\${goto 240}$OVER$TODAYC$REST$NEXTMONTH\${tab 20}"

My working copy can be seen here just under Niagara Falls at night.

Kudos to ans, mobilediesel, dk75 & Crinos512 for a job well done.