|
|
- #!/usr/bin/env perl
-
- use strict;
- use warnings;
- use 5.10.0;
-
- use Time::HiRes qw(sleep);
- use Term::ReadKey qw(GetTerminalSize);
- use File::Slurp;
-
- my @snowflakes = qw(❄ ❅ ❆);
- my ($width, $height) = GetTerminalSize();
-
- my $cpu_count = grep { /^processor\s+: [0-9]/ } read_file('/proc/cpuinfo');
-
- while (1) {
- my ($load) = (read_file('/proc/loadavg') =~ m/^([\d.]+)/);
- my $heaviness = int($load / $cpu_count);
- for (0 .. $heaviness) {
- my $flake = $snowflakes[ rand @snowflakes ];
- say ' ' x int(rand($width)) . $flake;
- }
-
- if ($heaviness > 0) {
- sleep (1 / $heaviness)
- } else {
- sleep .75;
- }
- }
|