blog:mutt_folder_browser_et_ordre

Mutt, folder_browser et ordre

Lorsqu'on utilise des Maildir, Mutt n'est pas capable de trier correctement les boîtes (folders) par date de dernière modification. Il existe un patch (cf. https://dev.mutt.org/trac/wiki/PatchList, chercher maildir-mtime) pour les versions 1.4 et 1.5 de Mutt ; je n'ai pas testé.

Pour rappel :

  • un maildir se présente comme un répertoire contenant trois sous-répertoires cur/, new/ et tmp/ ;
  • les messages arrivent dans tmp/ ;
  • une fois reçus, ils sont « copiés » dans new/ ;
  • lorsque le MUA parcoure la boîte, il les « déplace » dans cur/.

Il n'y a ni déplacement ni copie mais ça n'est pas le sujet. Bref, à la fin, le mtime et l'atime de ces trois sous-répertoires a changé… mais pas ceux du répertoire parent, justement le répertoire que l'on voudrait voir modifié !

Mutt a pourtant une option sort_browser :

.muttrc
set sort_browser=reverse-date

Pour l'exploiter, il faut que les maildirs voient leur mtime changé. Pour cela, utilisons le script suivant :

mtime_maildirs
#!/usr/bin/env perl
#
# $Id: 3fe93bc26d54c058edfb7a25d4667f887b1e8f8d $
#
 
use Getopt::Std;
use File::stat;
 
if ( $#ARGV == 0 ) {
    exit 1;
}
else {
 
    my %opts;
    getopts( 'd:', \%opts );
 
    opendir( MD, $opts{'d'} ) or die "$opts{'d'}: $?\n";
    foreach ( sort readdir(MD) ) {
        if (    -d "$opts{'d'}/$_/new"
            and -d "$opts{'d'}/$_/cur"
            and -d "$opts{'d'}/$_/tmp" )
        {
            my $mtime = stat("$opts{'d'}/$_/new")->mtime;
            utime( $mtime, $mtime, "$opts{'d'}/$_" ) or
                do { warn "$_: $?\n"; }
        }
    }
    closedir(MD);
}

Il attend une option -d path/to/maildir/collection et change le mtime des maildirs trouvés1) à partir de celui de leur new/.

À utiliser avec cron(8) ou via OfflineIMAP avec postsynchook par exemple :

.offlineimaprc
[account foo]
...
postsynchook = mtime_maildirs -d ~/mail/foo/ && notmuch new

Et voilà, lorsqu'on veut changer de maildir ou lorsqu'on déplace des messages en sélectionnant un maildir de destination, les plus « récents » apparaissent en premier (voir folder_format pour choisir les informations à afficher).


1)
Oui, j'ai présupposé qu'un répertoire contenant trois répertoires cur, new et tmp est un maildir.
Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • blog/mutt_folder_browser_et_ordre.txt
  • Dernière modification : 2016/07/18 21:53
  • de pc