Russian Fedora Remix 11
Gnome 2.28
Compiz+Emerald
Icons : Black-Gnome
Gtk: Gray-Flat
Увидев скриншот KozakUA. Поставил его творение себе, через пару недель было решено добавить в календарь разделители недель. Еще через пару решил сделать статичным текущий день недели, и чтобы остальные просто сдвигались.
Вот собственно код:
#!/usr/bin/perl
use Term::ANSIColor;
$time=scalar(localtime);
chomp($time);
#Wed Sep 9 16:22:46 2009
$time =~ /(\w*)\s(\w*)\s*(\d*)\s([\d:]*)\s(\d*)/;
$pointer = 0;
$lim =0;
$left =@ARGV[1];
$right =@ARGV[2];
#$left = -1;
#$right = -1;
if ($1 eq 'Mon') {$pointer =$left+ 6;}
if ($1 eq 'Tue') {$pointer =$left+ 5;}
if ($1 eq 'Wed') {$pointer =$left+ 4;}
if ($1 eq 'Thu') {$pointer =$left+ 3;}
if ($1 eq 'Fri') {$pointer =$left+ 2;}
if ($1 eq 'Sat') {$pointer =$left+ 1;}
if ($1 eq 'Sun') {$pointer =$left+ 0;}
while ($pointer-7 > 0) {$pointer=$pointer-7;}
if (($2 eq 'Jan' ) or ($2 eq 'March' ) or ($2 eq 'May' ) or ($2 eq 'July' ) or ($2 eq 'Aug' ) or ($2 eq 'Oct' ) or ($2 eq 'Dec' ))
{$lim=31; $lim_low = 30; $lim_hi=30;}
else
{$lim=30; $lim_low = 31; $lim_hi=31;}
if ($2 eq 'Jan')
{
$lim_low = 31;
if ($5 % 4) {$lim_hi= 28;}
else {$lim_hi = 27; }
}
if ($2 eq 'Feb')
{
if ($5 % 4) {$lim= 28;}
else {$lim = 27;}
}
if ($2 eq 'Dec')
{
$lim_hi = 31;
}
if ($left==-1){ $left=$3-1;}
if ($right == -1){ $right = $lim - $3; }
for ($i=0;($left-$i>-1) and ($3-$i>0);$i++) {@arr[$left-$i]=$3-$i; }
for ($i=0;($left-$3-$i)>-1;$i++) {@arr[$left-$3-$i]=$lim_low-$i;}
for ($i=1;($left+$i<$right+$left) and ($3+$i-1<$lim);$i++) {@arr[$left+$i]=$3+$i;}
for ($i=1;($left+$i+$lim-$3<$right+$left+1);$i++) {@arr[$left+$i+$lim-$3]=$i;}
if (@ARGV[0] == 1)
{
for($i=0;$i<($left);$i++)
{
$p2=$i;
if ($i==$pointer) {print "@arr[$i]| "; $pointer=$pointer+7; }
else { print "@arr[$i] "; }
}
}
if (@ARGV[0] == 2)
{
{print "[$3]";}
}
if (@ARGV[0] == 3)
{
if ($1 eq 'Mon') {$pointer =$left + 6;}
if ($1 eq 'Tue') {$pointer =$left + 5;}
if ($1 eq 'Wed') {$pointer =$left + 4;}
if ($1 eq 'Thu') {$pointer =$left + 3;}
if ($1 eq 'Fri') {$pointer =$left + 2;}
if ($1 eq 'Sat') {$pointer =$left + 1;}
if ($1 eq 'Sun') {$pointer =$left + 0;}
for($i=$left+1;($i<$left+$right+1) ;$i++)
{ if ($i==$pointer+1) { print "| @arr[$i]"; $pointer=$pointer+7; }
else { print " @arr[$i]"; }
#print "@data[($3)..$i]";
}
}
На скриншоте второй и третий параметр скрипта 15. Первый параметр позволяет установить количество дней до текущего, второй - количество дней после текущего. Запустив скрипт с параметрами x,-1, -1, получим оригинальный календарь с разделителями недель.
>>> Просмотр (1920x1080, 521 Kb)