#!/usr/bin/env perl use strict; use warnings; use utf8; use Curses::UI; use Time::HiRes 'sleep'; use AnyEvent; my $cui = Curses::UI->new(-color_support => 1); my $win = $cui->add('progressbars', 'Window'); my $colors = [qw/red green yellow blue magenta cyan white/]; while (1) { my $cv = AnyEvent->condvar; my $bars = []; my $n = 0; for my $name (1 .. $ENV{LINES}) { $win->delete('progressbar-' . $name); my $bar = $win->add( 'progressbar-' . $name, 'Progressbar', -max => 100, -pos => 0, -nocenterline => 1, -border => 0, -y => $n++, -fg => $colors->[int(rand() * @$colors)], -bg => $colors->[int(rand() * @$colors)], ); $bar->draw; $cv->begin; push @$bars, $bar; my $t; $t = AnyEvent->timer( interval => 0.01, after => 3 * rand, cb => sub { if ($bar->get < 100) { $bar->pos($bar->get + rand() * 3); $bar->draw; } else { undef $t; $cv->end; } } ); } $cv->recv; }
#10 CUI screensaver: Terminal progressbars festa
posted by
#10
at
2010-08-11
, updated at
2010-08-11
blog comments powered by Disqus