5 authors => "Matti Hiljanen",
6 contact => "qvr\@staff.peliportti.net",
7 name => "mail-maildir",
8 description => "Mail counter statusbar item with maildir support",
9 license => "Public Domain",
10 url => "http://matin.maapallo.org/softa/irssi",
13 # Mail counter statusbar item
14 # for irssi 0.7.99 by Timo Sirainen
16 # Maildir support added by Matti Hiljanen
18 # /SET maildir_mode - ON/OFF
19 # /SET mail_file - specifies mbox file/Maildir location
20 # /SET mail_refresh_time - in seconds, how often to check for new mail
24 my $maildirmode = 0; # maildir=1, file(spools)=0
26 my $last_refresh_time, $refresh_tag;
29 my $last_size, $last_mtime, $last_mailcount, $last_mode;
34 my $maildirmode=Irssi::settings_get_bool('maildir_mode');
36 my @stat = stat($mailfile);
40 # if the file hasn't changed, get the count from cache
41 return $last_mailcount if ($last_size == $size && $last_mtime == $mtime);
46 return 0 if (!open($f, $mailfile));
49 $count++ if (/^From /);
50 $count-- if (/^Subject: .*FOLDER INTERNAL DATA/);
53 $last_mailcount = $count;
55 opendir(DIR, "$mailfile/cur") or return 0;
56 while (defined(my $file = readdir(DIR))) {
57 next if $file =~ /S/ || $file =~ /^(.|..)$/;
62 opendir(DIR, "$mailfile/new") or return 0;
63 while (defined(my $file = readdir(DIR))) {
64 next if $file =~ /^(.|..)$/;
73 my ($item, $get_size_only) = @_;
75 $count = mbox_count(Irssi::settings_get_str('mail_file'));
77 # no mail - don't print the [Mail: ] at all
79 $item->{min_size} = $item->{max_size} = 0;
82 $item->default_handler($get_size_only, undef, $count, 1);
87 Irssi::statusbar_items_redraw('mail');
91 my $time = Irssi::settings_get_int('mail_refresh_time');
92 my $mode = Irssi::settings_get_bool('maildir_mode');
93 unless ($time == $last_refresh_time) {
94 $last_refresh_time = $time;
95 Irssi::timeout_remove($refresh_tag) if ($refresh_tag);
96 $refresh_tag = Irssi::timeout_add($time*1000, 'refresh_mail', undef);
98 return if ($mode == $last_mode);
101 Irssi::settings_set_str('mail_file', "$ENV{'MAIL'}");
103 Irssi::settings_set_str('mail_file', "$ENV{'HOME'}/Maildir");
109 Irssi::settings_add_str('misc', 'mail_file', $ENV{'MAIL'});
111 Irssi::settings_add_str('misc', 'mail_file', "$ENV{'HOME'}/Maildir");
113 Irssi::settings_add_int('misc', 'mail_refresh_time', 60);
114 Irssi::settings_add_bool('misc', 'maildir_mode', "$maildirmode");
116 Irssi::statusbar_item_register('mail', '{sb Mail: $0-}', 'mail');
119 Irssi::signal_add('setup changed', 'read_settings');