These are just rough ideas how a final Muttator should look like, not everything is yet implemented.
Table of Contents
Installation instructions
You might like to run :set go=mTfr, and put it in your .muttatorrc, because muttator isn't too usable without the menus for now.
How to switch modes:
Clicking/tabbing into the message pane activates Message mode. You can also press i or <Enter> on a message to do this. When it loses focus, you go back to normal mode. This can also be done with <Esc> which always focuses the index. In contrast to mutt, the preview pane will be open at all times (at least in the default config, there might be an option to only show it, when in message mode).
Mappings valid in both modes
- gm: get new messages
- gM: get messages for current account
- ctrl-n/p: select next/previous folder
- m: -> open :message<space> prompt, maybe even :message -subject=
- d: delete message
- D: delete message, focus message above
- ctrl-d: delete thread
- r: reply to
- R: reply to all
- ctrl-r: reply to list -> Taken for redo
- f: forward inline NOTE: this breaks 'f' to follow a hint in index mode, so maybe there is a better alternative?
- F: forward as attachment
- ctrl-e: edit as new
- ctrl-[1-9]: toggle tag 1-9 for message
- ctrl-0: remove all tags
- l{r,s,i,l}: toggle read,starred,important(tag),later(tag) (l=label)
- t: select thread
- T: select all messages? Or rather Tr, Td etc. commands?
- ctrl-t: mark all messages read
- a: open :contact ... prompt with predefined values to quickly add the contact of the current message to your addressbook
- A: add messages sender to your "collected addresses" addressbook, without asking much questions.
- [1-9]v: view only tag [1-9], or all tags if no count given
- s: -> open :moveto<space> prompt (like mutt's save "dialog")
- S: -> open :copyto<space> prompt (like mutt's save "dialog")
- ctrl-s: -> save in "Archive" folder (inspired by gmail's y command)
- h: toggle display of all headers
- H: focus first message in viewport if possible
- L: focus last message in viewport if possible
- M: focus center message in viewport if possible -> not possible, since we have a new meaning for M
- ctrl-o/i: jump back/forward in the displayed messages stack
- ]s, ]a, ...: jump to next starred message or message with an attachment
- gi: goto inbox
- c: open :goto prompt
- o: open :open prompt
mappings for index view
- j/k: next/previous message
- J/K: next/previous UNREAD message
- gg/G: select first/last item
- /: search for messages
- z*: commands involving folding of threads
- */#: select next/prev message with the same sender
mappings for message view
- 0/$/h/j/k/l/ctrl-f/ctrl-b/gg/G: scroll message
- J/K: next/previous message, but wrapping around folders?
- /: search inside messages
- f: show hints for the message
- x: toggle fixed width font (or another keybinding, maybe also just a :set[local?] option)
Commands
- :m[essage] [-subject="hello world"] [-bcc=...] [-cc=] [-attachment file] [-text="hello\n\nbye"] recipient1@… recepient2@…
- :m[essage]! -s Hi -t "Hello my friend..." friend@… This is the same as :message, but will send the message immediatly without opening an editor, so -s[ubject] and -t[ext] are probably required/suggested. This is mainly useful for scripting.
- :o[pen] foo<tab> will list you all messages in all folder matching foo in the subject or sender, and selecting one and pressing enter will open it.
- :tags: Shows available tags (used for marking messages)
- :contacts [filter]: Shows your addressbook
- :a[dd] -m[ail] foo@… -p[hone] 0666/6666666 Martin Stubenschrott will add "Martin Stubenschrott" to your addressbook
- :grep filter: to show only messsage matching the filter in a quick list at the bottom of the window
- :emptytrash
- :go[to] [partial_string_of_mailbox_name]: if no string: go to inbox
- :au[tocommand] FolderSwitch?, NewMessageReceived?, MessageSelected?, ...
All other important vim/vimperator commands like :quit, :map, ...
Options
- :set layout=0,1,2: classical, wide, vertical
- :set editor=gvim -f
- :set [no]editheaders (or edit_headers to be mutt compatible? probably not)
- :set flowed (to allow setting the format=flowed behavior)
- :set wrap=0,1,2 [never, always, account], what as default?
Why mutt sucks
I have been asked it quite often, here are the main reasons why i really think mutt sucks hard (order of items not necessarily in order of importance):
- you can't have multiple email-window's open on mutt. you have to leave and postpone the message and open a new one (or open multiple mutt instances). With Thunderbird you can have probably as many separate window's (for each single email) as you wish. (e.g. you want to copy/paste text from one to another etc)
- the incremental searching: you type strings, and 'on-time' you get a list of matches - you don't have in mutt.
- mutt opens large mailboxes very slowly, despite caching etc.
- the way how to open links is painful, Hints are much better, and even work for links which wraps lines.
- Thunderbird etc, can store all mail-addresses you write To:, into the address-book automatically.
- No Esc key to cancel prompts, you have to use ctrl-g
- Painful to watch many images which are sent as attachments. At least kmail shows them all inline, instead of the need to open all one by one with mutt. hat's again one more point, why i think GUI programs would be better than text-only programs WHEN they had they same key bindings as terminal programs.
- Mailboxes are too much separated. If i create folders i want my "Tab" key to cycle them, if only in a hidden mailbox is a new message. In KMail i just download all mails and press n and p to cycle between ALL new mails, no matter in which folder they are. That's why i even have just one big inbox in mutt, where even mailing list messages come in. Also i can't search all mailboxes at once without some external too like mairix. That's just brain dead.
- No vertical layout. On 1680x1050 or even bigger screens, It's really nice to view the actually message right to the index, not below it.
- It blocks my whole mutt while downloading messages with getmail, etc. Sometimes, you just want to check the mail manually and not wait for cron to update the mails for you.
- No proper notification for new mails apart from a beep. If all your terminal apps beep on attention, you don't know for sure, it's coming from your mail client.
- No proper folding. Why can i only TOGGLE fold state of threads? I want a key like zM and zR in vim, to close/open all folds, not toggle them.
- That one might be debatable, and in contrast to some UNIX philosophy, but i think RSS/Newsgroups are so closely related to mails, that the same interface makes sense, instead of having another program for Feeds, which just behaves different again.
- I don't know too much about mutt, so there is sure a way, but it's just not as easy as :map gi :open inbox<cr> like one would do in vim But even in KMail i could just set such shortcuts on each folder to quickly navigate between them.
- Most sane e-mail clients allow you to select parts of a mail, and when replying, it just replies to the selected text, not the whole mail.
Well, i think that are the most important annoyances of mutt, it of course also lacks other features which would be nice (like instead of just showing "r" that there is a replied mail, it should provide a way to jump there, or */# to jump to the next/previous mail from the same sender, etc. etc.).
