Hi! Ok, the attached script is waht I use... I use it everyday, but you probably need to change stuff to make it work. *It only works with Maildir folders* and it has a four or five commands (all undocumented :) commands are: new (show only folders with new messages) all (show all folders) /exp (filter previous two commands) * (remove filter) n (n = number -> run mutt with that folder) =fn (fn = folder name -> run mutt with that folder) q (quit) I plan to clean it up and put it available somewhere eventualy... :) It was a two hours hack anyway... Best regards, On Thu, Jan 18, 2001 at 09:01:42PM -0800, Trae McCombs wrote: > Hey gang, > Sorry to bug *. I have a question that has long plagued me with using > Mutt. I've always had to have everything come to one mailbox, and then > simply leave everything in one huge archive. > > I have procmail setup, and that's great, but I hate having to change into > the mailboxes to see if there is anything new in those mailboxes. > > One thing that I think would help not only me, but tons of others is > something like this: > > mailbox 1 3 new messages > mailbox 2 12 new messages > mailbox 3 8 new messages > > > Where you had the "status bar" that you could move up and down between > mailboxes... and then you would get into the messages of that mailbox. > > I'd also think it would be cool to have some sort of key binding that > would allow you to get back out to the main mailbox once deep in another > mailbox so you wouldn't have to quit. > > Anyhoo... > Sorry I'm such a lamer, especially if this is something easy to fix. If > someone has the time, and can provide a .muttrc to accomplish this, or > better still, what I need to toss into my .muttrc, I would be forever in > your debt. > :) > > Yours, > Trae > > -- > Trae McCombs | [EMAIL PROTECTED] > Community Evangelist > 1 888 546 8948 ext. 76900 > Founder: Themes.org -- Linux.com > http://octobrx.com/ -- Personal page -- Pedro Melo Cunha - <[EMAIL PROTECTED]> Novis - Dir. Rede - ISP - Infraes. Portal <http://www.novis.pt/> Ed. Atrium Saldanha - Pça. Dq. Saldanha, 1 - 7º / 1050-094 Lisboa tel: +351 21 0104340 - Fax: +351 21 0104301
#!/usr/bin/perl -w # # Verifica quantas mensagens tem cada folder... # use strict; use Storable; my $base = $ENV{HOME}."/MyMail"; my $filter = undef; my $options = "n"; while (1) { print "Scanning $base for folders...\n"; my $folders = rescan($base, $options); my $i = 0; my %idx; my $t = "Folder list"; if ($options eq "n") { $t .= " (only folders with new messages)"; } if ($filter) { $t .= " (filter: $filter)"; } print "\n\n$t\n" . "^" x length($t) . "\n"; foreach my $f (@$folders) { next if $f->[0] ne 'Inbox' && $filter && $f->[0] !~ /$filter/i; my $mc = sprintf("%d/%d", $f->[1], $f->[2]); my $s = sprintf("%3d %9s %s", $i, $mc, $f->[0]); print $s; $s = length($s); print " " x (40 - $s) unless $i % 2; print "\n" if $i % 2; $idx{$i} = $f; $i++; } print "\n" if $i % 2; $_ = <>; chomp; if ($_ eq 'quit' || $_ eq 'q') { exit; } if ($_ eq 'all') { $options = "a"; next; } if ($_ eq 'new') { $options = "n"; next; } if ($_ eq '*' || $_ eq '/') { $filter = undef; next; } if (/^\s*\/(\w+)\s*$/) { $filter = $1; next; } if (/^\s*(\d+)\s*$/ && $idx{$1}) { delete $ENV{QMAILINJECT}; system("mutt -f =$idx{$1}[0]"); } if (/^\s*=([^\s]+)\s*$/) { delete $ENV{QMAILINJECT}; system("mutt -f =$1"); } } ################################## sub count_files { my $dir = shift; my $c = 0; my $mtime = (stat($dir))[9]; my $cache; if (-r "$dir.cache") { $cache = retrieve("$dir.cache"); } $cache ||= {}; if (exists $cache->{mtime} && exists $cache->{count} && $cache->{mtime} == $mtime) { # print "Cache hit :) $dir $cache->{count}\n"; return $cache->{count}; } opendir(DDD, $dir); while(my $f = readdir(DDD)) { next if $f =~ /^\.\.?$/; next unless -f "$dir/$f"; $c++; } closedir(DDD); $cache = { mtime => $mtime, count => $c }; store($cache, "$dir.cache"); # print "$dir $c\n"; return $c; } sub rescan { my $base = shift; my $options = shift; my @folders; local $| = 1; my $tf = 0; my $tm = 0; my $nm = 0; opendir(D, $base); while(my $folder = readdir(D)) { next if $folder =~ /^\.\.?$/; next unless -d "$base/$folder" && -d "$base/$folder/new" && -d "$base/$folder/cur"; print "\rScanning $folder..."; my $new = count_files("$base/$folder/new"); my $cur = count_files("$base/$folder/cur"); push @folders, [ $folder, $new, $new + $cur ]; $nm += $new; $tm += $new + $cur; $tf++; } closedir(D); print "\r", " " x 70; print "\rDone scanning folders...\n$tf folders with $tm messages ($nm unread)\n"; my @idx = sort { ($a->[0] eq 'Inbox' && -1) || ($b->[0] eq 'Inbox' && 1) || $b->[1] <=> $a->[1] || $b->[2] <=> $a->[2] } grep { $_->[0] eq 'Inbox' || ($_->[1] && $options eq 'n') || ($options eq 'a') } @folders; return \@idx; }