summaryrefslogtreecommitdiff
path: root/bin/vcalendar
diff options
context:
space:
mode:
Diffstat (limited to 'bin/vcalendar')
-rwxr-xr-xbin/vcalendar47
1 files changed, 47 insertions, 0 deletions
diff --git a/bin/vcalendar b/bin/vcalendar
new file mode 100755
index 0000000..502d900
--- /dev/null
+++ b/bin/vcalendar
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.010;
+use autodie;
+
+use GD;
+use Getopt::Std;
+
+my %opts;
+
+getopts('a:cfgC:', \%opts);
+
+my $alpha = $opts{'a'} // 0;
+
+my $im = GD::Image->new(200, 40);
+$im->saveAlpha(1);
+
+my $fg = $im->colorAllocateAlpha( 0, 0, 0, $alpha);
+my $bg = $im->colorAllocateAlpha( 0, 0, 0, 127);
+
+if ($opts{'C'}) {
+ $fg = $im->colorAllocateAlpha(split(qr{,}, $opts{'C'}), $alpha);
+}
+
+my @lines = split(/\n/, qx{calendar});
+
+if ($opts{'c'}) {
+ say join("\n", @lines);
+}
+elsif ($opts{'g'}) {
+ $im->filledRectangle(0, 0, 200, 40, $bg);
+
+ for my $i (0 .. $#lines) {
+ $lines[$i] =~ s{\t}{};
+ $im->string(gdSmallFont, 2, 2 + (10 * $i), $lines[$i], $fg);
+ }
+
+ open(my $out_fh, '>', '/tmp/vcalendar.png');
+ binmode $out_fh;
+ print $out_fh $im->png();
+ close($out_fh);
+}
+
+if ($opts{'f'}) {
+ exec('feh', '/tmp/vcalendar.png');
+}