Neomutt: mailboxes directive incompatibility between neomutt and mutt

Created on 29 Oct 2019  ·  3Comments  ·  Source: neomutt/neomutt

Expected Behaviour

In my mutt configuration, I use the following mailboxes directive to list the folders that I'm concerned with. Each account is prefixed with a "=-AccountName-" with the intent of showing a label on the sidebar to separate each of the accounts:

mailboxes "=-myAccount1-" "+myAccount1/INBOX" "+myAccount1/Alerts" "+myAccount1/Support-SN" "+myAccount1/Systems-SN" "+myAccount1/Sent Items" "=-myAccount2-" "+myAccount2/INBOX" "+myAccount2/INBOX. Promos" "+myAccount2/Drafts" "+myAccount2/FCEUX" "+myAccount2/Sent" "=-myAccount3-" "+myAccount3/INBOX" "+myAccount3/Drafts" "+myAccount3/Sent" "=-myAccount4-" "+myAccount4/INBOX" "+myAccount4/Drafts" "+myAccount4/Sent"

Actual Behaviour

In mutt, this works as expected. In the above example, the sidebar shows the following:

  INBOX
  Alerts
  Support-SN
  (etc)
-myAccount2-
  INBOX
    Promos
  Drafts
  (etc)
-myAccount3-
  (...)
-myAccount4-
  (...)

However, in neomutt, each of the "labels" ("=-accountName-") are omitted completely from the sidebar, and looks like so:

  Alerts
  Support-SN
  (etc)
  INBOX
    Promos
  Drafts
  (etc)

Steps to Reproduce

Add a "label" mailbox to your `mailboxes" directive in your neomutt configuration with "=-myLabel-". Start neomutt with a sidebar configured, and notice the "label" is missing.

How often does this happen?

  • Always on neomutt, never on mutt.

When did it start to happen?

Ever since I tried my configuration with neomutt for the first time.

NeoMutt Version

2019-10-25 (from archlinux packages)

NeoMutt 2019-10-25
Copyright (C) 1996-2016 Michael R. Elkins and others.
NeoMutt comes with ABSOLUTELY NO WARRANTY; for details type 'neomutt -vv'.
NeoMutt is free software, and you are welcome to redistribute it
under certain conditions; type 'neomutt -vv' for details.

System: Linux 5.3.7-arch1-1-ARCH (x86_64)
ncurses: ncurses 6.1.20180127 (compiled with 6.1.20180127)
libidn2: 2.2.0 (compiled with 2.2.0)
GPGme: 1.13.1
hcache backends: kyotocabinet, gdbm, lmdb

Compiler:
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,obj
c,obj-c++ --enable-shared --enable-threads=posix --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-bu
ild-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp --enable-cet=
auto
Thread model: posix
gcc version 9.2.0 (GCC) 

Configure options: --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --gpgme --enable-lua --notmuch --gss --ssl --sasl --with-ui=ncurses --with-idn2=/usr --idn=0 --idn2=1 --lmdb --kyotocabinet --gdbm

Compilation CFLAGS: -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -std=c99 -fno-delete-null-pointer-checks -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D__EXTENSIONS__ -I/usr/include -DNCURSES_WIDECHAR

Default options:
  +attach_headers_color +compose_to_sender +compress +cond_date +debug 
  +encrypt_to_self +forgotten_attachments +forwref +ifdef +imap +index_color 
  +initials +limit_current_thread +multiple_fcc +nested_if +new_mail +nntp +pop 
  +progress +quasi_delete +regcomp +reply_with_xorig +sensible_browser +sidebar 
  +skip_quoted +smtp +status_color +timeout +tls_sni +trash 

Compile options:
  -autocrypt +bkgdset +color +curs_set +fcntl -flock -fmemopen +futimens 
  +getaddrinfo -gnutls +gpgme +gss +hcache -homespool +idn +inotify 
  -locales_hack +lua +meta -mixmaster +nls +notmuch +openssl +pgp +sasl +smime 
  -sqlite +start_color +sun_attachment +typeahead 
MAILPATH="/var/mail"
PKGDATADIR="/usr/share/neomutt"
SENDMAIL="/usr/sbin/sendmail"
SYSCONFDIR="/etc"

To learn more about NeoMutt, visit: https://neomutt.org
If you find a bug in NeoMutt, please raise an issue at:
    https://github.com/neomutt/neomutt/issues
or send an email to: <[email protected]>

Extra Info

  • Operating System and its version

    • Arch Linux (latest)

  • Were you using multiple copies of NeoMutt at once?

    • No

  • Were you using 'screen' or 'tmux'?

    • Yes, but can reproduce without it

  • Is your email local (maildir) or remote (IMAP)?

    • maildir

Most helpful comment

Don't worry, @prg318, it's still possible. Feel free to ignore the next paragraph...

NeoMutt is undergoing some large architectural changes to make it easier to maintain and add new features.
One of these changes was to teach NeoMutt about Accounts.
Another has been to make the Mailbox handling stricter. This means you can't add fake mailboxes any more.
These steps are moving us towards a new Sidebar that understands the data it's displaying.

To insert account lines, or dividers, you'll need to create an empty file for each in your mail directory.

touch -- '-myAccount1-' '-myAccount2-'

Then in Mutt/NeoMutt, you can mailboxes =-myAccount1- =-myAccount2-


In NeoMutt, there's another command you can use: named-mailboxes.
It takes pairs of parameters and allows you to choose the display name for each:

named-mailboxes "Work (boo!)" =work
named-mailboxes "Fun (woo!)"  =fun

This can be applied to the fake entries, too.

All 3 comments

Don't worry, @prg318, it's still possible. Feel free to ignore the next paragraph...

NeoMutt is undergoing some large architectural changes to make it easier to maintain and add new features.
One of these changes was to teach NeoMutt about Accounts.
Another has been to make the Mailbox handling stricter. This means you can't add fake mailboxes any more.
These steps are moving us towards a new Sidebar that understands the data it's displaying.

To insert account lines, or dividers, you'll need to create an empty file for each in your mail directory.

touch -- '-myAccount1-' '-myAccount2-'

Then in Mutt/NeoMutt, you can mailboxes =-myAccount1- =-myAccount2-


In NeoMutt, there's another command you can use: named-mailboxes.
It takes pairs of parameters and allows you to choose the display name for each:

named-mailboxes "Work (boo!)" =work
named-mailboxes "Fun (woo!)"  =fun

This can be applied to the fake entries, too.

Thank you so much for the prompt, kind, detailed response, @flatcap . Creating the empty files for each account-line/divider allows neomutt to show the dividers in the sidebar. I am also happy to see the new named-mailboxes command and can see that being very useful.

I really appreciate the explanation! Thanks again for the response and for all your work with neomutt

Is there any chance we could reintroduce the previous behavior, perhaps by using a special leading symbol to disable the 'do I exist' check? example:

mailboxes !--account1 +1/INBOX +1/Sent #....
mailboxes !--account2 +2/INBOX +2/Sent #....
mailboxes !--account3 +3/INBOX +3/Sent #....
mailboxes !--account4 +4/INBOX +4/Sent #....
#...

I ask, as I run neomutt+offlineimap and a number of machines, with a number of accounts, and touching a number of fake mboxs to get rid of errors is somewhat kludgy (and means I can't simply run GNU Stow to spin up a new instance).

Was this page helpful?
0 / 5 - 0 ratings