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/
ettmp/
; - 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).
cur
, new
et tmp
est un maildir.