App-wmiirc

 view release on metacpan or  search on metacpan

lib/App/wmiirc/Battery.pm  view on Meta::CPAN

);

sub BUILD {
  my($self) = @_;
  $self->battery((grep $config{default} eq $_, $self->_list_bat)[0]
    || ($self->list_bat)[0]);

  $self->fade_start_color('#ffffff #aa2222 #ff44cc');
  $self->fade_end_color('#ffffff #999922 #ff4444');

  my $timer = IO::Async::Timer::Countdown->new(
    delay => 30,
    on_expire => sub {
      my($timer) = @_;
      $self->render;
      $timer->start;
    },
  );

  $self->render;
  $self->core->loop->add($timer);
  $timer->start;
}

sub render {
  my($self) = @_;
  state $previous_power = $self->_bat("power_now");

  # Take the mean of this and the previous power level, to hopefully give a
  # better estimate.
  my $power_now = ($self->_bat("power_now") + $previous_power) / 2;
  $previous_power = $self->_bat("power_now");

lib/App/wmiirc/Clock.pm  view on Meta::CPAN

    split /,\s*/, config("clock",
      extra_tz => "America/Los_Angeles, America/New_York, Europe/Paris")
  ]}
);

has current_tz => (
  is => 'rw',
  default => sub { -1 }
);

has _timer => (
  is => 'rw'
);

with 'App::wmiirc::Role::Widget';

sub BUILD {
  my($self) = @_;
  $self->render;
}

lib/App/wmiirc/Clock.pm  view on Meta::CPAN

  if($self->current_tz == -1) {
    ($text, $next) = _format($self->format, localtime);
  } else {
    local $ENV{TZ} = $self->extra_tz->[$self->current_tz];
    ($text, $next) = _format($self->format_other_tz, localtime);
    $color = $self->core->main_config->{focuscolors};
  }

  $self->label($text, $color);

  $self->core->loop->add($self->_timer(IO::Async::Timer::Absolute->new(
    time => $next,
    on_expire => sub {
      my($timer) = @_;
      $self->render unless $self->_timer != $timer;
    }
  )));
}

sub _format {
  my($format, @args) = @_;
  # Not sure it's worth going to these lengths to maybe save some wakeups, but
  # why not...
  my $next = $format =~ /%[^\w]?[EO]?[sSTr]/
      ? time + 1 : 60 * int(time / 60) + 60;

lib/App/wmiirc/Loadavg.pm  view on Meta::CPAN

    config('loadavg', 'show', 'one') eq 'all';
  }
);

with 'App::wmiirc::Role::Widget';
#with 'App::wmiirc::Role::Fade';

sub BUILD {
  my($self) = @_;

  my $timer = IO::Async::Timer::Countdown->new(
    delay => 10,
    on_expire => sub {
      my($timer) = @_;
      $self->render;
      $timer->start;
    }
  );

  $timer->start;
  $self->core->loop->add($timer);
  $self->render;
}

sub render {
  my($self) = @_;
  $self->label(join " ", (Unix::Uptime->load)[0 .. $self->{_show_all} && 2]);
}

sub widget_click {
  my($self, $button) = @_;

lib/App/wmiirc/Msg.pm  view on Meta::CPAN

  $App::wmiirc::Msg::VERSION = '1.000';
}
use App::wmiirc::Plugin;
use IO::Async::Timer::Countdown;

has name => (
  is => 'ro',
  default => sub { '!notice' }
);

has _timer => (
  is => 'rw',
);

with 'App::wmiirc::Role::Widget';
with 'App::wmiirc::Role::Fade';

sub event_msg {
  my($self, @msg) = @_;
  my $msg = "@msg";
  $msg =~ s/\n//g;

  my $timer = IO::Async::Timer::Countdown->new(
    delay => .3,
    on_expire => sub {
      my $timer = shift;
      if(!defined $self->_timer || $self->_timer != $timer) {
        # Cancelled
        $self->core->loop->remove($timer);
        return;
      }

      $self->label($msg, $self->fade_current_color);

      if($self->fade_next) {
        $timer->start
      } else {
        $self->_timer(undef);
        $self->core->loop->remove($timer);
      }
    }
  );
  $timer->start;
  $self->core->loop->add($timer);
  $self->_timer($timer);

  $self->fade_set(0);
  $self->label($msg, $self->fade_current_color);
}

# Lower priority notification, don't interrupt an active msg.
sub event_notice {
  my($self, @msg) = @_;
  my $msg = "@msg";
  $msg =~ s/\n//g;

  if(!$self->_timer) {
    $self->label($msg);
  }
}

sub widget_click {
  my($self, $button) = @_;
  $self->label(" ");
  $self->_timer(undef);
}

1;

__END__
=pod

=head1 NAME

App::wmiirc::Msg

lib/App/wmiirc/Volume.pm  view on Meta::CPAN

  default => sub {
    config("volume", "device", "Master")
  }
);

with 'App::wmiirc::Role::Key';
with 'App::wmiirc::Role::Widget';

sub BUILD {
  my($self) = @_;
  my $timer = IO::Async::Timer::Countdown->new(
    delay => 10,
    on_expire => sub {
      my($timer) = @_;
      $self->render;
      $timer->start;
    }
  );
  $timer->start;
  $self->core->loop->add($timer);
  $self->render;
}

sub render {
  my($self) = @_;

  my $vol = `amixer get $self->{device},0`;
  $self->volume(($vol =~ /\[(off)\]/)[0] || $vol =~ /\[(\d+)%\]/);

  $self->label($self->volume . ($self->volume =~ /\d/ && '%'));



( run in 1.021 second using v1.01-cache-2.11-cpan-49f99fa48dc )