plagger で backtick

plagger のみで backtick れるじゃんと、miyagawaさんにつっこまれたのでやってみた。

まず Plugin::Notify::Stdout を書いた。

package Plagger::Plugin::Notify::Stdout;
use strict;
use warnings;
use base qw/Plagger::Plugin/;

sub register {
    my ( $self, $c ) = @_;
    $c->register_hook(
        $self,
        'publish.feed'     => \&update,
        'publish.finalize' => \&finalize,
    );
    $self->{count} = 0;
}

sub update {
    my ( $self, $c, $args ) = @_;

    $self->{count} += $args->{feed}->count if $args->{feed}->count;
}

sub finalize {
    my ( $self, $c, $args ) = @_;

    if (defined $self->{count}) {
        $self->conf->{format}
            ? printf $self->conf->{format}, $self->{count}
            : print $self->{count};
        print "\n";
    }
}

ので下記のように backtick.yaml を作る

global:
  timezone: Asia/Tokyo
  log:
    level: error

plugins:
  - module: Subscription::Config
    config:
      feed: "https://username:password@mail.google.com/mail/feed/atom/!!Plagger" # !!Plagger はラベル名

  - module: Plagger::Plugin::Aggregator::Simple

  - module: Notify::Stdout
    config:
      format: "Plagger(%d) "

で、あとは .screenrc で

backtick 3 0 60 ${HOME}/plagger/plagger -c ${HOME}/.plagger/config/backtick.yaml

とか書いておけば 60 秒ごとに plagger が実行され、hardstatus とか caption とかで %3` とかけばそこにに plagger の出力が出る。

3 ていうのは backtick で指定した最初の数字 (僕がすでに0 1 2とIDを使ってるので3ってこと)

by typester / at 2006-03-06T15:45:00 / plagger · screen / Comments(0)