1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
|
# Imap stuff from https://unix.stackexchange.com/questions/689590/configure-mutt-and-hydroxide-for-protonmail
set ssl_starttls=no
set ssl_force_tls=no
set send_charset="us-ascii:utf-8"
set imap_user = "matthewlemon@protonmail.com"
set imap_pass = `pass show AppPasswords/hydroxide`
set folder ="imap://localhost:1143/"
set spoolfile = "imap://localhost:1143/INBOX"
set postponed = "imap://localhost:1143/Drafts"
set crypt_use_gpgme = yes # from https://openports.se/mail/mutt
set mbox = "imap://localhost:1143/[Protonmail]/All Mail"
mailboxes +INBOX +Archive +Starred +Sent +Drafts +Trash +Scans +Mailing\ Lists
set smtp_pass = `pass show AppPasswords/hydroxide`
set smtp_url = "smtp://matthewlemon@protonmail.com@localhost:1025/"
## END OF IMAP STUFF
#
# Saner copy/move dialogs
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
set alias_file = ~/.mutt/aliases # where to store aliases
#set header_cache = ~/.mutt/cache/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/signature # my signature file
# Abook ----------------------------------------------
set query_command= "abook --mutt-query '%s'"
macro generic,index,pager \ca "<shell-escape>abook<return>" "launch abook"
macro index,pager A "<pipe-message>abook --add-email<return>" "Add this sender to Abook"
bind editor <Tab> complete-query
bind editor ^T complete
# Basic Options --------------------------------------
set wait_key = no # shut up, mutt
#set mbox_type = Maildir # mailbox type
set timeout = 3 # idle time before scanning
set mail_check = 0 # 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
#set 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
# nicer text
set text_flowed=yes
# Sidebar Patch --------------------------------------
#set sidebar_delim = '│'
set sidebar_visible = yes
set sidebar_width = 16
#set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S"
#set mail_check_stats
#set sidebar_width = 24
## not working in xubuntu set sidebar_shortpath = yes
#set sidebar_sort = yes
## Paths ----------------------------------------------
#color sidebar_new color221 color233
# 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: bcc: subject: # show only these
unhdr_order * # some distros order things by default
hdr_order from: to: cc: bcc: date: subject: # and in this order
# Allow forwarding of attachments with emails
set mime_forward
set mime_forward_rest
#
# Index View Options ---------------------------------
set date_format = "%d-%m-%Y"
set index_format = "[%Z] %B %D %-20.20F %s"
set sort = threads # like gmail
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 g noop
bind index gg first-entry
bind index G last-entry
bind pager g noop
bind pager gg top
bind pager G bottom
#
# Navigate threads
bind index { previous-thread
bind pager { half-up
bind index } next-thread
bind pager } half-down
bind index R group-reply
bind index <tab> sync-mailbox
bind index <space> collapse-thread
# Ctrl-R to mark all as read
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
# Sidebar Navigation ---------------------------------
bind index,pager <down> sidebar-next
bind index,pager <up> sidebar-prev
bind index,pager <right> sidebar-open
# 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
# Saner copy/move dialogs
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
# Pager Key Bindings ---------------------------------
bind pager k previous-line
bind pager j next-line
#bind pager gg top
bind pager G bottom
bind pager R group-reply
# View attachments properly.
bind attach <return> view-mailcap
# open links
macro pager \Cu "|urlview<enter>" "call urlview to open links"
# Compose View Options -------------------------------
set realname = "Matthew Lemon" # 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
unset 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
#set editor = "vim" # Use terminal Vim to compose email.
set editor = "vim %s"
#source ~/.mutt/gpg.rc # Use GPG
#source ~/.mutt/auto_views # Define auto_views.
source ~/.mutt/aliases # Load in my aliases.
source ~/.mutt/subscriptions # Define the list of subscribed mailing lists.
#source ~/.mutt/mailboxes # Define the list of folders that receive mail.
#source ~/.mutt/headers # Configure header display.
#source ~/.mutt/folder-hooks # Define folder-hooks.
#source ~/.mutt/save-hooks # Define save-hooks.
#source ~/.mutt/fcc-hooks # Define fcc-hooks.
#source ~/.mutt/message-hooks # Define message hooks.
#source ~/.mutt/bindings # Define key bindings.
#source ~/.mutt/macros # Define macros.
source ~/.mutt/colours # Define colours.
#source ~/.mutt/sidebar # Define sidebar support (requires sidebar patch)
#
# MAILCAP
auto_view text/html
#
# Sync email
macro index O "<shell-escape>mbsync matthewlemonproton<enter>" "run offlineimap to sync all mail"
# get an email from mutt to taskwarrior
macro index T "<pipe-message>mutt2task.py<enter> <move-message>/INBOX.Archive<enter>"
# smtp
# set my_user=matthewlemon@protonmail.com
# set my_pass=C5yFW_QtYH5ck2zU0ek32Q
#set smtp_url="smtp://matthewlemon@protonmail.com:C5yFW_QtYH5ck2zU0ek32Q@127.0.0.1:1025"
set ssl_starttls
#set spoolfile = "+INBOX"
set from = "matt@matthewlemon.com"
#set record = +Sent
# example notmuch config:
virtual-mailboxes "Joanna" "notmuch://?query=from:joanna"
# --------------------------------------------------------------------------
# VARIABLES – shown with their default values
# --------------------------------------------------------------------------
# This variable specifies notmuch query limit.
set nm_db_limit = 0
# This variable specifies the default Notmuch database in format:
# notmuch://<absolute path>
set nm_default_url = "notmuch:///home/lemon/Mail"
#set nm_default_url = ""
# The messages tagged with these tags are excluded and not loaded
# from notmuch DB to NeoMutt unless specified explicitly.
set nm_exclude_tags = ""
# This option specifies timeout for Notmuch database. Default is 5 seconds.
set nm_open_timeout = 5
# This variable specifies notmuch query type, supported types: 'threads' and
# 'messages'.
set nm_query_type = messages
# When writing a message in the NeoMutt record (see $record in the NeoMutt docs),
# also add it to the notmuch DB. Replies inherit the tags from the original email.
set nm_record = no
# Tags modifications to the messages stored in the NeoMutt record.
# example:
# set record = "~/sent-mails"
# set nm_record = yes
# set nm_record_tags = "-inbox,archive,me"
set nm_record_tags = ""
# This variable specifies the notmuch tag used for unread messages.
set nm_unread_tag = unread
# This variable allows you to customize the file browser display for virtual
# folders to your personal taste.
# %C current folder number
# %f folder name (description)
# %m number of messages in the mailbox *
# %n number of unread messages in the mailbox *
# %N N if mailbox has new mail, blank otherwise
# %>X right justify the rest of the string and pad with character ``X''
# %|X pad to the end of the line with character ``X''
# %*X soft-fill with character ``X'' as pad
set vfolder_format = "%6n(%6N) %f"
# When set, NeoMutt will use the first virtual mailbox (see virtual-mailboxes)
# as a spool_file.
set virtual_spool_file = no
# setup time window preferences
# first setup the duration, and then the time unit of that duration
# when set to 0 (the default) the search window feature is disabled
# unless explicitly enabled with nm_query_window_enable.
set nm_query_window_enable=no
set nm_query_window_duration=0
set nm_query_window_timebase="year" # or "hour", "day", "week", "month", "year"
# Extend query window to always show mail matching these terms.
#set nm_query_window_or_terms="tag:unread and tag:flagged"
# --------------------------------------------------------------------------
# FUNCTIONS – shown with an example mapping
# --------------------------------------------------------------------------
# open a different virtual folder
bind index,pager X change-vfolder
# read entire thread of the current message
bind index,pager + entire-thread
# generate virtual folder from query
bind index,pager \eX vfolder-from-query
# generate virtual folder from query with time window
bind index < vfolder-window-backward
bind index > vfolder-window-forward
# toggle between mailboxes and virtual mailboxes
# bind index,pager ??? sidebar-toggle-virtual
# --------------------------------------------------------------------------
# COMMANDS – shown with an example
# --------------------------------------------------------------------------
# virtual-mailboxes description notmuch-URL { description notmuch-URL ...}
# virtual-mailboxes "Climbing" "notmuch://?query=climbing"
# unvirtual-mailboxes { * | mailbox ...}
#
# --------------------------------------------------------------------------
|