apt-get install libdate-calc-perl #!/usr/bin/perl -w use strict; use Date::Calc qw(Day_of_Week check_date Day_of_Year leap_year Easter_Sunday Week_Number Today); my $key; my $jahr; my $mon_ende; my $mon; my $tg = 1; my $sj; my $year; my $month; my $day; my $os; my @tag = ("","Mo","Di","Mi","Do","Fr","Sa","So"); my @monat = ("","Januar","Februar","Maerz","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember"); ($year,$month,$day) = Today(); if (! defined $ARGV[0] ) {$jahr = $year;} else {$jahr = $ARGV[0];} if (leap_year($jahr)) {$sj = 1;} else {$sj = 0;} $os = Day_of_Year(Easter_Sunday($jahr)); print "|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n"; if ($jahr == $year){ printf("|\e[7m \e[0m %2s %2d. %-10s %4d \e[7m \e[0m|\n",$tag[Day_of_Week($year,$month,$day)],$day,$monat[$month],$year);} else {print "|\e[7m \e[0m $jahr \e[7m \e[0m|\n";} print "|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|"; foreach $mon (1..12) { printf(" %2d %-10s|",$mon,$monat[$mon]); }; print "\n|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|\n|"; foreach $tg (1..31) { foreach $mon (1..12) { if (check_date($jahr,$mon,$tg)) { if (Day_of_Week($jahr,$mon,$tg) == 7){printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} elsif (Day_of_Week($jahr,$mon,$tg) == 6){printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} elsif (Day_of_Year($jahr,$mon,$tg) == 1){ # Neujahr if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 6){ # Hl. 3 Koenige if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == $os-47) {printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Faschingsdienstag elsif (Day_of_Year($jahr,$mon,$tg) == $os-2) {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Karfreitag elsif (Day_of_Year($jahr,$mon,$tg) == $os+1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} # Ostermontag elsif (Day_of_Year($jahr,$mon,$tg) == $os+39) {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Christi Himmelfahrt elsif (Day_of_Year($jahr,$mon,$tg) == $os+50) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} # Pfingstmontag elsif (Day_of_Year($jahr,$mon,$tg) == $os+60) {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Fronleichnam elsif (Day_of_Year($jahr,$mon,$tg) == 121+$sj){ # Tag der Arbeit if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 276+$sj){ # Tag der Dt. Einheit if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 305+$sj){ # Allerheiligen if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 358+$sj){ # Hl. Abend if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s \e[0m %2d|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 359+$sj){ # 1. Weihnachtstag if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 360+$sj){ # 2. Weihnachtstag if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 365+$sj){ # Silvester if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s \e[0m %2d|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} else { if (Day_of_Week($jahr,$mon,$tg) == 1) {printf(" %2d %2s %2d|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf(" %2d %2s |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}}} else {print " |";} }; print "\n|"; }; print "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n"; ==== Auf CTRL-F3-Taste ==== apt-get install libdate-calc-perl apt-get install libterm-readkey-perl $HOME/.fluxbox/keys Control F3 :execCommand xterm -T `date +%Y` -g 181x38+110+100 -e /home/ms/bin/kal-f3.pl #!/usr/bin/perl -w use strict; use Date::Calc qw(Day_of_Week check_date Day_of_Year leap_year Easter_Sunday Week_Number Today); use Term::ReadKey; my $key; my $jahr; my $mon_ende; my $mon; my $tg = 1; my $sj; my $year; my $month; my $day; my $os; my @tag = ("","Mo","Di","Mi","Do","Fr","Sa","So"); my @monat = ("","Januar","Februar","Maerz","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember"); ($year,$month,$day) = Today(); $jahr = $year; if (leap_year($jahr)) {$sj = 1;} else {$sj = 0;} $os = Day_of_Year(Easter_Sunday($jahr)); print "|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n"; if ($jahr == $year){ printf("|\e[7m \e[0m %2s %2d. %-10s %4d \e[7m \e[0m|\n",$tag[Day_of_Week($year,$month,$day)],$day,$monat[$month],$year);} else {print "|\e[7m \e[0m $jahr \e[7m \e[0m|\n";} print "|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n|"; foreach $mon (1..12) { printf(" %2d %-10s|",$mon,$monat[$mon]); }; print "\n|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|\n|"; foreach $tg (1..31) { foreach $mon (1..12) { if (check_date($jahr,$mon,$tg)) { if (Day_of_Week($jahr,$mon,$tg) == 7){printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} elsif (Day_of_Week($jahr,$mon,$tg) == 6){printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} elsif (Day_of_Year($jahr,$mon,$tg) == 1){ # Neujahr if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 6){ # Hl. 3 Koenige if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == $os-47) {printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Faschingsdienstag elsif (Day_of_Year($jahr,$mon,$tg) == $os-2) {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Karfreitag elsif (Day_of_Year($jahr,$mon,$tg) == $os+1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} # Ostermontag elsif (Day_of_Year($jahr,$mon,$tg) == $os+39) {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Christi Himmelfahrt elsif (Day_of_Year($jahr,$mon,$tg) == $os+50) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} # Pfingstmontag elsif (Day_of_Year($jahr,$mon,$tg) == $os+60) {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);} # Fronleichnam elsif (Day_of_Year($jahr,$mon,$tg) == 121+$sj){ # Tag der Arbeit if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 276+$sj){ # Tag der Dt. Einheit if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 305+$sj){ # Allerheiligen if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 358+$sj){ # Hl. Abend if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s \e[0m %2d|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 359+$sj){ # 1. Weihnachtstag if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 360+$sj){ # 2. Weihnachtstag if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s %2d\e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} elsif (Day_of_Year($jahr,$mon,$tg) == 365+$sj){ # Silvester if (Day_of_Week($jahr,$mon,$tg) == 1) {printf("\e[44m %2d %2s \e[0m %2d|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf("\e[44m %2d %2s \e[0m |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}} else { if (Day_of_Week($jahr,$mon,$tg) == 1) {printf(" %2d %2s %2d|",$tg,$tag[Day_of_Week($jahr,$mon,$tg)],Week_Number($jahr,$mon,$tg));} else {printf(" %2d %2s |",$tg,$tag[Day_of_Week($jahr,$mon,$tg)]);}}} else {print " |";} }; print "\n|"; }; print "-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n"; ReadMode 'cbreak'; $key = ReadKey(0); ReadMode 'normal';