Faster Mutt

Mutt is surly Men’s best friend when it comes to managing huge amount of emails with Powers in hand.

Some updates which I made to my .muttrc to make my Mutt faster (on Max OSX):

set header_cache         = /Volumes/ramdisk/headers
set sleep_time = 0
set timeout = 15         # idle time before scanning
set mail_check = 60      # minimum time between scans

As seen above, I am keeping the header cache on a ramdisk, it makes reading the same at least 50% faster. Create a RAM Disk of 100MB by running:

diskutil erasevolume HFS+ "ramdisk" `hdiutil attach -nomount ram://204800`

In the example above 204800 means 100*2048, will create a ramdisk of 100MB.

You can see my .muttrc here, customized to my taste (or download from my github):

# Paths ----------------------------------------------
set folder           = ~/.mail               # mailbox location
set alias_file       = ~/.mutt/alias         # where to store aliases
#set header_cache     = ~/.mutt/cache/headers # where to store headers
set header_cache      = /Volumes/ramdisk/headers # where to store headers
#set message_cachedir = ~/.mutt/cache/bodies  # where to store bodies
set certificate_file = ~/.mutt/certificates  # where to store certs
set mailcap_path     = ~/.mutt/mailcap       # entries for filetypes
set tmpdir           = ~/.mutt/temp          # where to keep temp files
set signature        = ~/.mutt/sig           # my signature file

unset maildir_header_cache_verify 	# don't verify cache
folder-hook . 'set read_inc=10000'	# don't update progress too fast
set sleep_time = 0
bind index,pager f next-new-then-unread
bind index,pager F forward-message
bind index,pager b previous-new-then-unread
bind index,pager B bounce-message
bind index S sort-mailbox
auto_view text/html
set sendmail_wait=-1
set mime_forward=yes
set mime_forward_rest=yes

# Basic Options --------------------------------------
set wait_key = no        # shut up, mutt
set mbox_type = Maildir  # mailbox type
set timeout = 15         # idle time before scanning
set mail_check = 60      # minimum time between scans
unset move               # gmail does that
set delete               # don't ask, just do
unset confirmappend      # don't ask, just do!
set quit                 # don't ask, just do!!
unset mark_old           # read/new is good enough for me
unset beep_new           # bell on new mails
set pipe_decode          # strip headers and eval mimes when piping
set thorough_search      # strip headers and eval mimes before searching

# Sidebar Patch --------------------------------------
set sidebar_delim   = '  '
set sidebar_visible = yes
set sidebar_width   = 26
color sidebar_new color221 color233

# Sidebar Navigation ---------------------------------
bind index,pager    sidebar-next
bind index,pager      sidebar-prev
bind index,pager   sidebar-open

# Status Bar -----------------------------------------
set status_chars  = " *%A"
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"

# Header Options -------------------------------------
ignore *                                # ignore all headers
unignore from: to: cc: date: subject: user-agent:   # show only these
unhdr_order *                           # some distros order things by default
hdr_order from: to: cc: date: subject: user-agent:  # and in this order

# Index View Options ---------------------------------
set date_format = "%D %r"
#set index_format = "[%Z]  %D (%4c)  %-30.30F %s"
set index_format="%4C %Z %D  %-22.22F  (%4c) %s"
set sort = reverse-date
#set sort_aux = reverse-last-date-received  # like gmail
#set uncollapse_jump                        # don't collapse on an unread message
#set sort_re                                # thread based on regex
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"

# Index Key Bindings ---------------------------------
bind index gg       first-entry
bind index G        last-entry

bind index R        group-reply
bind index     sync-mailbox
bind index   collapse-thread

# Pager View Options ---------------------------------
set pager_index_lines = 10 # number of index lines to show
set pager_context = 3      # number of context lines to show
set pager_stop             # don't go to next message automatically
set menu_scroll            # scroll in menus
set tilde                  # show tildes like in vim
unset markers              # no ugly plus signs

set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
alternative_order text/plain text/enriched text/html

# Pager Key Bindings ---------------------------------
bind pager k  previous-line
bind pager j  next-line
bind pager gg top
bind pager G  bottom
set editor="vim -c 'set spell spelllang=en'"

bind pager R  group-reply

# View attachments properly.
bind attach  view-mailcap

# Ctrl-R to mark all as read
macro index \Cr "T~UN." "mark all messages as read"

# URL View
macro pager \Cu "|urlview" "call urlview to open links"

# Saner copy/move dialogs
macro index C "?" "copy a message to a mailbox"
macro index M "?" "move a message to a mailbox"

# Compose View Options -------------------------------
set realname = "Abhinav Gupta"	     # who am i?
set envelope_from                    # which from?
set sig_dashes                       # dashes before sig
set edit_headers                     # show headers when composing
set fast_reply                       # skip to compose when replying
set askcc                            # ask for CC:
set fcc_attach                       # save attachments with the body
#set mime_forward                    # forward attachments as part of body
set forward_format = "Fwd: %s"       # format of subject when forwarding
set forward_decode                   # decode when forwarding
set attribution = "On %d, %n wrote:" # format of quoting header
set reply_to                         # reply to Reply to: field
set reverse_name                     # reply as whomever it was to
set include                          # include message in replies
set forward_quote                    # include message in forwards
bind compose p postpone-message

# Contacts
set query_command = "contacts -Sf '%eTOKEN%n' '%s' | sed -e 's/TOKEN/\t/g'"
bind editor  complete-query
bind editor ^T    complete

Biggest Reference: Steve Losh’s guide to Homely Mutt.

Notify of

Inline Feedbacks
View all comments