summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Iannetta <paul.iannetta@ens-lyon.fr>2022-04-21 23:53:31 +0200
committerPaul Iannetta <paul.iannetta@ens-lyon.fr>2022-04-22 08:24:15 +0200
commite83c4515e0179221e7315abb606452ab2f7b561d (patch)
tree355f7c3fd0e9e05c5d8d7ddc2786521eb8bd8b5c
parente5cb4057fda66962ccb710b460a363bd8aab7414 (diff)
add partial mutt config
-rwxr-xr-x.config/mutt/aliases2
-rwxr-xr-x.config/mutt/bindings31
-rwxr-xr-x.config/mutt/colors/darnir.mutt169
-rwxr-xr-x.config/mutt/colors/default.mutt91
-rwxr-xr-x.config/mutt/colors/gruvbox-alpha.mutt88
-rwxr-xr-x.config/mutt/colors/gruvbox.mutt88
-rwxr-xr-x.config/mutt/colors/monokai.mutt67
-rwxr-xr-x.config/mutt/colors/solarized.mutt73
-rwxr-xr-x.config/mutt/common60
-rwxr-xr-x.config/mutt/ens21
-rwxr-xr-x.config/mutt/gpg12
-rwxr-xr-x.config/mutt/inria22
-rwxr-xr-x.config/mutt/mailboxes.py12
-rwxr-xr-x.config/mutt/mailcap11
-rwxr-xr-x.config/mutt/mailcap.new107
-rwxr-xr-x.config/mutt/mutt-gnupg-howto611
-rwxr-xr-x.config/mutt/muttrc39
-rwxr-xr-x.config/mutt/paplevetoe22
-rwxr-xr-x.config/mutt/pgp24
-rwxr-xr-x.config/mutt/sig_ens.sig0
-rwxr-xr-x.config/mutt/sig_inria.sig0
-rwxr-xr-x.config/mutt/sig_paplevetoe.sig0
-rwxr-xr-x.config/mutt/vmailboxes1
23 files changed, 1551 insertions, 0 deletions
diff --git a/.config/mutt/aliases b/.config/mutt/aliases
new file mode 100755
index 0000000..8c7056e
--- /dev/null
+++ b/.config/mutt/aliases
@@ -0,0 +1,2 @@
+# vim: set ft=muttrc
+
diff --git a/.config/mutt/bindings b/.config/mutt/bindings
new file mode 100755
index 0000000..efb8675
--- /dev/null
+++ b/.config/mutt/bindings
@@ -0,0 +1,31 @@
+# ==
+# Regular bindings
+# ===========================
+
+# Ctrl-Shift-P – Previous Mailbox
+bind index,pager \CP sidebar-prev
+
+# Ctrl-Shift-N – Next Mailbox
+bind index,pager \CN sidebar-next
+
+# Ctrl-Shift-O – Open Highlighted Mailbox
+bind index,pager \cO sidebar-open
+
+# Shift-Tab-t — Toggle sidebar
+bind index,pager <backtab>t sidebar-toggle-visible
+
+# i — Notmuch query
+bind index i vfolder-from-query
+
+# ==
+# Macros
+# ===========================
+macro generic ,<Space> ":source ~/.mail_config/mutt/muttrc\n" "Reload mutt's configuration file"
+
+#macro index \cn <next-unread-mailbox>
+
+macro pager j <next-line>
+
+macro pager k <previous-line>
+
+# vim: ft=muttrc
diff --git a/.config/mutt/colors/darnir.mutt b/.config/mutt/colors/darnir.mutt
new file mode 100755
index 0000000..fae2160
--- /dev/null
+++ b/.config/mutt/colors/darnir.mutt
@@ -0,0 +1,169 @@
+# Credit: https://gist.github.com/darnir/0c3cedf42c7684c8f6ae50a765edb066
+# for background in 16 color terminal, valid background colors include:
+# base03, bg, black, any of the non brights
+
+# style notes:
+# when bg=235, that's a highlighted message
+# normal bg=233
+
+# basic colors ---------------------------------------------------------
+# color normal brightyellow default
+color error color196 color235 # message line error text
+color tilde color81 color233 # vi-like tildes marking blank lines
+color message color82 color235
+color markers brightcolor232 color222 # wrapped-line /^\+/ markers
+color attachment brightcolor165 color235 # attachment headers
+color search color232 color154 # search patterns in pager
+color status brightcolor232 color39
+color indicator brightcolor232 color154 # selected email in index
+color tree brightcolor165 color233 # arrow in threads (`-->')
+
+# basic monochrome screen
+mono bold bold
+mono underline underline
+mono indicator reverse
+mono error bold
+mono header bold "^(From|Subject|Date|To|Cc|Bcc):"
+mono quoted bold
+
+# index ----------------------------------------------------------------
+
+color index color160 color233 "~A" # all messages
+color index color166 color233 "~E" # expired messages
+color index brightcolor154 color233 "~N" # new messages
+color index color154 color233 "~O" # old messages
+color index color244 color233 "~R" # read messages
+color index brightcolor39 color233 "~Q" # messages that have been replied to
+color index brightcolor154 color233 "~U" # unread messages
+color index brightcolor154 color233 "~U~$" # unread, unreferenced messages
+color index color222 color233 "~v" # messages part of a collapsed thread
+color index color222 color233 "~P" # messages from me
+#color index color39 color233 "~p!~F" # messages to me
+#color index color39 color233 "~N~p!~F" # new messages to me
+#color index color39 color233 "~U~p!~F" # unread messages to me
+#color index color244 color233 "~R~p!~F" # messages to me
+color index brightcolor165 color233 "~F" # flagged messages
+color index brightcolor165 color233 "~F~p" # flagged messages to me
+color index brightcolor165 color233 "~N~F" # new flagged messages
+color index brightcolor165 color233 "~N~F~p" # new flagged messages to me
+color index brightcolor165 color233 "~U~F~p" # new flagged messages to me
+color index color232 color196 "!~N ~D" # deleted messages
+color index color232 color196 "~N ~D" # deleted new messages
+color index color244 color233 "~v~(!~N)" # collapsed thread with no unread
+color index color81 color233 "~v~(~N)" # collapsed thread with some unread
+color index color81 color233 "~N~v~(~N)" # collapsed thread with unread parent
+# statusbg used to indicated flagged when foreground color shows other status
+# for collapsed thread
+color index color160 color233 "~v~(~F)!~N" # collapsed thread with flagged, no unread
+color index color81 color233 "~v~(~F~N)" # collapsed thread with some unread & flagged
+color index color81 color233 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
+color index color81 color233 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
+color index color39 color233 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly
+color index color81 color160 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
+color index color222 color233 "~T" # tagged messages
+color index brightcolor222 color233 "~T~F" # tagged, flagged messages
+color index brightcolor222 color233 "~T~N" # tagged, new messages
+color index brightcolor222 color233 "~T~U" # tagged, unread messages
+
+# color index red default "~D(!~p|~p)" # deleted
+# color index black default ~F # flagged
+# color index brightred default ~= # duplicate messages
+# color index brightgreen default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest
+# color index brightgreen default "~A~N!~T!~p!~Q!~F!~D" # the rest, new
+color index black red "~D" # deleted messages
+color index yellow default "~(~N)" # messages in threads with some unread
+color index green default "~S" # superseded messages
+color index yellow default "~T" # tagged messages
+color index brightred red "~=" # duplicated messages
+
+# message headers ------------------------------------------------------
+
+color hdrdefault brightcolor222 color235
+color header brightcolor39 color235 "^(From|To|Cc|Bcc)"
+color header brightcolor165 color235 "^(Subject|Date)"
+
+# body -----------------------------------------------------------------
+
+color quoted color39 color235
+color quoted1 color165 color235
+color quoted2 color39 color235
+color quoted3 color222 color235
+color quoted4 color166 color235
+color signature color81 color235 # everything below /^--\s*$/
+
+color bold color255 color233
+color underline color233 color244
+color normal color244 color233
+
+## pgp
+
+color body color160 color233 "(BAD signature)"
+color body color39 color233 "(Good signature)"
+color body color235 color233 "^gpg: Good signature .*"
+color body color241 color233 "^gpg: "
+color body color241 color160 "^gpg: BAD signature from.*"
+mono body bold "^gpg: Good signature"
+mono body bold "^gpg: BAD signature from.*"
+
+# yes, an insane URL regex
+color body brightcolor39 color233 "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+# and a heavy handed email regex
+color body brightcolor39 color233 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
+
+# simplified regex for URL & email
+#color body magenta default "(ftp|https?|gopher|news|telnet|finger)://[^ \"\t\r\n]+"
+#color body magenta default "[-a-z_0-9.]+@[-a-z_0-9.]+"
+
+# _underline_
+color body blue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
+# /italic/ (Sometimes gets directory names)
+color body blue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
+
+# Color if the attachment is autoviewed
+color attach_headers brightgreen default "Autoview"
+
+# Color only the brackets around the headers
+color attach_headers brightyellow default "^\\[--"
+color attach_headers brightyellow default "--]$"
+
+# Color the mime type and the size
+color attach_headers green default "Type: [a-z]+/[a-z0-9\-]+"
+color attach_headers green default "Size: [0-9\.]+[KM]"
+
+# Color GPGME signature checks
+color attach_headers brightgreen default "Good signature from.*"
+color attach_headers brightred default "Bad signature from.*"
+color attach_headers brightred default "BAD signature from.*"
+color attach_headers brightred default "Note: This key has expired!"
+color attach_headers brightmagenta default "Problem signature from.*"
+color attach_headers brightmagenta default "WARNING: This key is not certified with a trusted signature!"
+color attach_headers brightmagenta default " There is no indication that the signature belongs to the owner."
+color attach_headers brightmagenta default "can't handle these multiple signatures"
+color attach_headers brightmagenta default "signature verification suppressed"
+color attach_headers brightmagenta default "invalid node with packet of type"
+
+# color index_collapsed
+# color index_date
+# color index_flags
+# color index_label
+# color index_number
+# color index_size
+# color index_subject
+# color index_tag
+# color index_tags
+
+# color prompt
+
+# color sidebar_divider
+# color sidebar_flagged
+# color sidebar_highlight
+# color sidebar_indicator
+# color sidebar_new
+# color sidebar_ordinary
+# color sidebar_spoolfile
+
+# color progress white red
+color index_flags default red '~F'
+# vi: ft=muttrc ts=4 sw=4 sts=4 et
diff --git a/.config/mutt/colors/default.mutt b/.config/mutt/colors/default.mutt
new file mode 100755
index 0000000..efba1cb
--- /dev/null
+++ b/.config/mutt/colors/default.mutt
@@ -0,0 +1,91 @@
+# This color scheme aims to highlight as much useful information as
+# possible without spoiling user's visual experience by irritating
+# contrasts. Optimized for dark or transparent background.
+# --Dmitry Borodaenko <angdraug@mail.ru>
+
+# override defaults, make transparency work
+color normal white default
+color attachment green default #
+color hdrdefault cyan default
+color indicator black cyan
+color markers brightred default
+color quoted green default
+color signature brightblue default #
+color status brightgreen blue
+color tilde brightblue default #
+color tree red default
+
+# paint different quote levels
+color quoted green default
+color quoted1 cyan default
+color quoted2 yellow default
+color quoted3 red default
+
+color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # email
+color body brightblue default "(http|ftp)://[\-\.\,/+=&%~_:?\#a-zA-Z0-9]+" # URL
+color body brightgreen default "(^| |[-.[:alnum:]]+:+)~?\(/[-_.'[:alnum:]]+\)+/?" # Unix file path
+color body brightgreen default "(^| +)[[:alpha:]]:[-_.[:alnum:]\]+" # DOS file path
+color body brightmagenta default "(^|[ '\"]+)\\$[[:alpha:]][-_[:alpha:]]+" # variable
+color body brightred default "(^| )[*_]+[-&[:alnum:]]+[*_]( |$)" # bold/underline
+color body yellow default "(^| )[;:8ö][-^o]?[)>(|/\\]+" # smiley
+color body red default "[!?]{3,}" # exclamation
+color body green default "^ *[-+*o] +" # list item
+
+# date formats
+color body cyan default "[0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?"
+color body cyan default "(\(19|20\)?[0-9]{2}/[01]?[0-9]/[0123]?[0-9]|[0123]?[0-9][/.][01]?[0-9][/.]\(19|20\)?[0-9]{2})(( at)? +[0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?)?"
+color body cyan default "((Sun(day)?|Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(sday)?|Fri(day)?|Sat(urday)?),? +)?(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sep(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)[ .]+[0-9]{1,2}(st|nd|rd|th)?,?( +(19|20)[0-9]{2}(,?( at)? [0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?)?)?"
+color body cyan default "((Sun(day)?|Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(sday)?|Fri(day)?|Sat(urday)?),? +)?[0-9]{1,2}(st|nd|rd|th)?[ .]+(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sep(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?),?( +(19|20)?[0-9]{2})?(( at)? [0-9]{1,2}:[0-9]{2}(:[0-9]{2})?( ?(AM|PM|am|pm))?( +[+-][0-9]{4})?)?"
+
+color header brightgreen default ^From:
+color header brightcyan default ^To:
+color header brightcyan default ^Reply-To:
+color header brightcyan default ^Cc:
+color header brightblue default ^Subject:
+
+color header brightcyan default "^newsgroups: "
+color header yellow default "^Delivered-To: "
+color header green default "^sender: "
+color header green default "^organi[sz]ation: "
+color header green default "x-editor: "
+color header green default "(x-mailer|user-agent): "
+color header green default "X-Operating-System: "
+color header green default "X-MimeOLE: "
+color header green default "X-Accept-Language: "
+color header red default "^message-id:"
+color header red default "^in-reply-to: "
+color header red default "^references: "
+color header cyan default "^followup-to: "
+color header cyan default "^mail-followup-to: "
+color header cyan default "^reply-to: "
+color header magenta default "MIME-Version: "
+color header magenta default "Content-Type: "
+color header magenta default "Content-Transfer-Encoding: "
+color header magenta default "Content-Disposition: "
+color header magenta default "Content-Encoding: "
+color header magenta default "Content-Language: "
+
+color status brightwhite blue
+
+color index brightblue default '~P' # from me
+color index cyan default '~p' # personal
+color index brightcyan default '~G' # PGP
+color index brightred default '~F' # flagged
+color index green default '~Q' # replied
+color index brightwhite default '~N' # new
+color index red default '~D' # deleted
+
+# threads
+#color index brightyellow default "~h 'References: +<.+>'"
+#color index yellow default "~h 'References: +<.+> +<.+>'"
+#color index brightred default "~h 'References: +<.+> +<.+> +<.+>'"
+#color index red default "~h 'References: +<.+> +<.+> +<.+> +<.+>'"
+#color index blue default "~h 'References: +<.+> +<.+> +<.+> +<.+> +<.+>'"
+#color index green default "~h 'References: +<.+> +<.+> +<.+> +<.+> +<.+> +<.+>'"
+
+# spam
+color index magenta default "\(Resent-\)?Message-Id: <>"
+color index magenta default "\(Resent-\)?Message-Id: '<.* .*>'"
+color index magenta default "\(Resent-\)?Message-Id: localhost"
+color index magenta default "! \(Resent-\)?Message-Id: @"
+color index magenta default '~C Undisclosed.*Recipients'
diff --git a/.config/mutt/colors/gruvbox-alpha.mutt b/.config/mutt/colors/gruvbox-alpha.mutt
new file mode 100755
index 0000000..da72fe4
--- /dev/null
+++ b/.config/mutt/colors/gruvbox-alpha.mutt
@@ -0,0 +1,88 @@
+# gruvbox dark (contrast dark):
+# Credit: https://www.sthu.org/code/codesnippets/mutt-gruvbox.html
+
+# bg0 = 234
+# bg1 = 237
+# bg2 = 239
+# bg3 = 241
+# bg4 = 243
+#
+# gray = 245
+#
+# fg0 = 229
+# fg1 = 223
+# fg2 = 250
+# fg3 = 248
+# fg4 = 246
+#
+# red = 167
+# green = 142
+# yellow = 214
+# blue = 109
+# purple = 175
+# aqua = 108
+# orange = 208
+
+
+# See http://www.mutt.org/doc/manual/#color
+
+color attachment color109 default
+color bold color229 default
+color error color167 default
+color hdrdefault color246 default
+color indicator color223 color237
+color markers color243 default
+color normal color223 default
+color quoted color250 default
+color quoted1 color108 default
+color quoted2 color250 default
+color quoted3 color108 default
+color quoted4 color250 default
+color quoted5 color108 default
+color search color234 color208
+color signature color108 default
+color status color234 color250
+color tilde color243 default
+color tree color142 default
+color underline color223 color239
+
+color sidebar_divider color250 default
+color sidebar_new color142 default
+
+color index color142 default ~N
+color index color108 default ~O
+color index color109 default ~P
+color index color214 default ~F
+color index color175 default ~Q
+color index color167 default ~=
+color index color234 color223 ~T
+color index color234 color167 ~D
+
+color header color214 default "^(To:|From:)"
+color header color142 default "^Subject:"
+color header color108 default "^X-Spam-Status:"
+color header color108 default "^Received:"
+
+color body color142 default "[a-z]{3,256}://[-a-zA-Z0-9@:%._\\+~#=/?&,]+"
+#color body color142 default "[a-zA-Z]([-a-zA-Z0-9_]+\\.){2,256}[-a-zA-Z0-9_]{2,256}"
+color body color208 default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
+color body color208 default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
+color body color234 color214 "[;:]-*[)>(<lt;|]"
+color body color229 default "\\*[- A-Za-z]+\\*"
+
+color body color214 default "^-.*PGP.*-*"
+color body color142 default "^gpg: Good signature from"
+color body color167 default "^gpg: Can't.*$"
+color body color214 default "^gpg: WARNING:.*$"
+color body color167 default "^gpg: BAD signature from"
+color body color167 default "^gpg: Note: This key has expired!"
+color body color214 default "^gpg: There is no indication that the signature belongs to the owner."
+color body color214 default "^gpg: can't handle these multiple signatures"
+color body color214 default "^gpg: signature verification suppressed"
+color body color214 default "^gpg: invalid node with packet of type"
+color compose header color223 default
+color compose security_encrypt color175 default
+color compose security_sign color109 default
+color compose security_both color142 default
+color compose security_none color208 default
+
diff --git a/.config/mutt/colors/gruvbox.mutt b/.config/mutt/colors/gruvbox.mutt
new file mode 100755
index 0000000..78c0f17
--- /dev/null
+++ b/.config/mutt/colors/gruvbox.mutt
@@ -0,0 +1,88 @@
+# gruvbox dark (contrast dark):
+# Credit: https://www.sthu.org/code/codesnippets/mutt-gruvbox.html
+
+# bg0 = 234
+# bg1 = 237
+# bg2 = 239
+# bg3 = 241
+# bg4 = 243
+#
+# gray = 245
+#
+# fg0 = 229
+# fg1 = 223
+# fg2 = 250
+# fg3 = 248
+# fg4 = 246
+#
+# red = 167
+# green = 142
+# yellow = 214
+# blue = 109
+# purple = 175
+# aqua = 108
+# orange = 208
+
+
+# See http://www.mutt.org/doc/manual/#color
+
+color attachment color109 color234
+color bold color229 color234
+color error color167 color234
+color hdrdefault color246 color234
+color indicator color223 color237
+color markers color243 color234
+color normal color223 color234
+color quoted color250 color234
+color quoted1 color108 color234
+color quoted2 color250 color234
+color quoted3 color108 color234
+color quoted4 color250 color234
+color quoted5 color108 color234
+color search color234 color208
+color signature color108 color234
+color status color234 color250
+color tilde color243 color234
+color tree color142 color234
+color underline color223 color239
+
+color sidebar_divider color250 color234
+color sidebar_new color142 color234
+
+color index color142 color234 ~N
+color index color108 color234 ~O
+color index color109 color234 ~P
+color index color214 color234 ~F
+color index color175 color234 ~Q
+color index color167 color234 ~=
+color index color234 color223 ~T
+color index color234 color167 ~D
+
+color header color214 color234 "^(To:|From:)"
+color header color142 color234 "^Subject:"
+color header color108 color234 "^X-Spam-Status:"
+color header color108 color234 "^Received:"
+
+color body color142 color234 "[a-z]{3,256}://[-a-zA-Z0-9@:%._\\+~#=/?&,]+"
+#color body color142 color234 "[a-zA-Z]([-a-zA-Z0-9_]+\\.){2,256}[-a-zA-Z0-9_]{2,256}"
+color body color208 color234 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
+color body color208 color234 "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
+color body color234 color214 "[;:]-*[)>(<lt;|]"
+color body color229 color234 "\\*[- A-Za-z]+\\*"
+
+color body color214 color234 "^-.*PGP.*-*"
+color body color142 color234 "^gpg: Good signature from"
+color body color167 color234 "^gpg: Can't.*$"
+color body color214 color234 "^gpg: WARNING:.*$"
+color body color167 color234 "^gpg: BAD signature from"
+color body color167 color234 "^gpg: Note: This key has expired!"
+color body color214 color234 "^gpg: There is no indication that the signature belongs to the owner."
+color body color214 color234 "^gpg: can't handle these multiple signatures"
+color body color214 color234 "^gpg: signature verification suppressed"
+color body color214 color234 "^gpg: invalid node with packet of type"
+color compose header color223 color234
+color compose security_encrypt color175 color234
+color compose security_sign color109 color234
+color compose security_both color142 color234
+color compose security_none color208 color234
+
diff --git a/.config/mutt/colors/monokai.mutt b/.config/mutt/colors/monokai.mutt
new file mode 100755
index 0000000..feee89c
--- /dev/null
+++ b/.config/mutt/colors/monokai.mutt
@@ -0,0 +1,67 @@
+# Credit: https://github.com/guiniol
+# color setup
+#
+# ======================================================================
+# INDEX OBJECT PATTERN? pattern description
+# index pattern default highlighting of the entire index line
+# index_date the date field
+# index_flags pattern %S %Z the message flags
+# index_number %C the message number
+# index_collapsed %M the number of messages in a collapsed thread
+# index_author pattern %AaFLn the author name
+# index_subject pattern %s the subject line
+# index_size %c %l the message size
+# index_label %y %Y the message label
+# index_tags %g the transformed message tags
+# index_tag pattern/tag %G an individual message tag
+# ======================================================================
+
+color normal default default
+color index_number brightblack default
+color index_date magenta default
+color index_flags yellow default .
+color index_collapsed cyan default
+color index green default ~N
+color index green default ~v~(~N)
+color index red default ~F
+color index cyan default ~T
+color index blue default ~D
+color index_label brightred default
+color index_tags red default
+color index_tag brightmagenta default "encrypted"
+color index_tag brightgreen default "signed"
+color index_tag yellow default "attachment"
+color body brightwhite default ([a-zA-Z\+]+)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # urls
+color body green default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # mail addresses
+color attachment yellow default
+color signature green default
+color search brightred black
+
+color indicator cyan brightblack
+color error brightred default
+color status brightcyan brightblack
+color tree brightcyan default
+color tilde cyan default
+color progress white red
+
+color sidebar_indicator brightred default
+color sidebar_highlight cyan brightblack
+color sidebar_divider red default
+color sidebar_flagged red default
+color sidebar_new green default
+
+color hdrdefault color81 default
+color header green default "^Subject: .*"
+color header yellow default "^Date: .*"
+color header red default "^Tags: .*"
+
+color quoted color60 default
+color quoted1 yellow default
+
+color body brightgreen default "Good signature from.*"
+color body green default "Fingerprint:( [A-Z0-9]{4}){5} ( [A-Z0-9]{4}){5}"
+color body brightred default "Bad signature from.*"
+color body brightred default "Note: This key has expired!"
+color body brightmagenta default "Problem signature from.*"
+color body brightmagenta default "WARNING: .*"
+
diff --git a/.config/mutt/colors/solarized.mutt b/.config/mutt/colors/solarized.mutt
new file mode 100755
index 0000000..c90b571
--- /dev/null
+++ b/.config/mutt/colors/solarized.mutt
@@ -0,0 +1,73 @@
+# Screenshot http://trovao.droplinegnome.org/stuff/mutt-zenburnt.png
+#
+# This is a zenburn-based mutt color scheme that is not (even by far)
+# complete. There's no copyright involved. Do whatever you want with it.
+# Just be aware that I won't be held responsible if the current color-scheme
+# explodes your mail client. ;)
+#
+# Do notice that this color scheme requires a terminal emulator that supports
+# 256 color. Any modern X terminal emulator should have support for that and
+# you can enable it by calling mutt as "TERM=xterm-256color mutt" or, if you
+# use screen, by adding "term screen-256color" to your .screenrc.
+#
+# This file is in the public domain.
+#
+
+# general-doesn't-fit stuff
+color normal color188 color237
+#color error color115 color236
+color error color236 color210
+color markers color142 color238
+color tilde color108 color237
+color status color144 color234
+
+# index stuff
+#color indicator color229 color238
+color indicator color236 color188
+color tree color109 color237
+color index color188 color237 ~A
+color index color228 color237 ~N # New
+color index color174 color237 ~F # Flagged
+color index color223 color237 ~O # Old
+color index color108 color237 ~P # From me
+color index color210 color237 ~D # Deleted
+
+# header stuff
+color hdrdefault color223 color237
+color header color223 color237 "^Subject"
+
+# gpg stuff
+color body color188 color237 "^gpg: Good signature.*"
+color body color115 color236 "^gpg: BAD signature.*"
+color body color174 color237 "^gpg: Can't check signature.*"
+color body color174 color237 "^-----BEGIN PGP SIGNED MESSAGE-----"
+color body color174 color237 "^-----BEGIN PGP SIGNATURE-----"
+color body color174 color237 "^-----END PGP SIGNED MESSAGE-----"
+color body color174 color237 "^-----END PGP SIGNATURE-----"
+color body color174 color237 "^Version: GnuPG.*"
+color body color174 color237 "^Comment: .*"
+
+# url, email and web stuff
+color body color174 color237 "(finger|ftp|http|https|news|telnet)://[^ >]*"
+color body color174 color237 "<URL:[^ ]*>"
+color body color174 color237 "www\\.[-.a-z0-9]+\\.[a-z][a-z][a-z]?([-_./~a-z0-9]+)?"
+color body color174 color237 "mailto: *[^ ]+\(\\i?subject=[^ ]+\)?"
+color body color174 color237 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
+
+# misc body stuff
+color attachment color174 color237 #Add-ons to the message
+color signature color223 color237
+
+# quote levels
+color quoted color108 color237
+color quoted1 color116 color237
+color quoted2 color247 color237
+color quoted3 color108 color237
+color quoted4 color116 color237
+color quoted5 color247 color237
+color quoted6 color108 color237
+color quoted7 color116 color237
+color quoted8 color247 color237
+color quoted9 color108 color237
+
+# vim: set ft=muttrc
diff --git a/.config/mutt/common b/.config/mutt/common
new file mode 100755
index 0000000..92c9493
--- /dev/null
+++ b/.config/mutt/common
@@ -0,0 +1,60 @@
+#------------------------------------------------------#
+# ~/.config/mutt/common
+
+set check_new = yes
+set beep_new = yes
+set realname = "Paul Iannetta"
+set mail_check = 60 # Check for new mail in all mailboxes
+ # every minute
+set timeout = 30
+set use_from = yes # Required for msmtp to know which account to use for emails
+
+set wait_key=no
+set mail_check_stats
+# defaults for how to open attachments
+set mailcap_path = ~/.config/mutt/mailcap
+auto_view text/html
+
+set sort = 'threads'
+set sort_aux = 'last-date-received'
+set imap_check_subscribed = yes
+
+set header_cache = ~/.config/mutt/cache/headers
+set message_cachedir = ~/.config/mutt/cache/bodies
+set certificate_file = ~/.config/mutt/certificates
+
+set move=no # Don't move mail from the spool.
+
+set wrap=80
+
+unset use_domain
+set index_format="%4C %Z %?X?a& ? %{%y%m%d} %-12.12L %?M?(#%03M)&(%4c)? %?y?(%.20Y) ?%s"
+
+# sidebar
+# set sidebar_visible
+set sidebar_short_path = yes
+set sidebar_folder_indent = yes
+set sidebar_indent_string = ".."
+set sidebar_format = "%B%* %?N?%N?"
+#======================================================#
+set editor="nvim -c 'set tw=70 et' -c 'set spell' '+/^$' "
+set edit_headers # See the headers when editing
+
+#======================================================#
+# Order of headers and what to show
+hdr_order Date: From: User-Agent: X-Mailer \
+ To: Cc: Reply-To: Subject:
+ignore *
+unignore Date: From: User-Agent: X-Mailer: X-PGP-Key: \
+ To: Cc: Reply-To: Subject:
+
+#======================================================#
+# Odds and Ends
+set sort_alias=alias # sort aliases in alpha order by alias name
+set markers # mark wrapped lines of text in the pager with a +
+set smart_wrap # Don't wrap mid-word
+set pager_context=6 # Retain 6 lines of previous page when scrolling.
+set status_on_top # Status bar on top.
+push <show-version> # Shows mutt version at startup
+
+# vim: ft=muttrc
diff --git a/.config/mutt/ens b/.config/mutt/ens
new file mode 100755
index 0000000..e012489
--- /dev/null
+++ b/.config/mutt/ens
@@ -0,0 +1,21 @@
+# ens configuration
+
+# save copies of sent emails to the ${folder}Sent directory
+# the '+' expands to $folders (like '~' to $HOME in the bash shell)
+set record = +ens/sent
+set postponed = +ens/drafts
+set signature = ~/.config/mutt/sig_ens.sig
+set from = ""
+
+# use msmtp to send outgoing mail to the mailserver
+# see ~/.msmtp for configuration
+set sendmail="/usr/bin/msmtp -C $HOME/.config/msmtp/msmtprc -a ens"
+
+# bcc myself to make gmail style threaded conversations
+my_hdr bcc: name@domain
+
+# pgp settings
+#set pgp_sign_as=MY_PGP_KEY_ID
+#set pgp_autosign=yes
+
+# vim: set ft=muttrc
diff --git a/.config/mutt/gpg b/.config/mutt/gpg
new file mode 100755
index 0000000..5cefdc3
--- /dev/null
+++ b/.config/mutt/gpg
@@ -0,0 +1,12 @@
+set crypt_use_gpgme = yes
+set crypt_autosign = yes
+set crypt_verify_sig = yes
+set crypt_replysign = yes
+set crypt_replyencrypt = no
+set crypt_replysignencrypted = no
+set crypt_autoencrypt = no
+
+set pgp_default_key="105968781676391EBE04EBF3AF5D6D9C44D44F82"
+set pgp_check_gpg_decrypt_status_fd
+set pgp_use_gpg_agent = yes
+set pgp_self_encrypt = yes
diff --git a/.config/mutt/inria b/.config/mutt/inria
new file mode 100755
index 0000000..e2ff14d
--- /dev/null
+++ b/.config/mutt/inria
@@ -0,0 +1,22 @@
+# inria configuration
+
+# save copies of sent emails to the ${folder}Sent directory
+# the '+' expands to $folders (like '~' to $HOME in the bash shell)
+set record = +inria/sent
+set postponed = +inria/drafts
+set signature = ~/.mail_config/mutt/sig_inria.sig
+set from = ""
+
+# use msmtp to send outgoing mail to the mailserver
+# see ~/.msmtp for configuration
+set sendmail="/usr/bin/msmtp -C $HOME/.config/msmtp/msmtprc -a inria"
+
+# bcc myself to make gmail style threaded conversations
+my_hdr bcc: name@domain
+
+# pgp settings
+#my_hdr X-PGP-Key: http://my.website.com/pubkey.asc
+#set pgp_sign_as=MY_PGP_KEY_ID
+#set pgp_autosign=yes
+
+# vim: set ft=muttrc
diff --git a/.config/mutt/mailboxes.py b/.config/mutt/mailboxes.py
new file mode 100755
index 0000000..1538122
--- /dev/null
+++ b/.config/mutt/mailboxes.py
@@ -0,0 +1,12 @@
+import sys
+import json
+
+account = str(sys.argv[1])
+
+mailboxes = []
+with open('/home/lys/.offlineimap/mbnames/{}.json'.format(account), 'r') as f:
+ data = json.load(f)
+ for folder in data:
+ mailboxes.append('"+{}/{}"'.format(account,folder['foldername']))
+
+print('{}'.format(' '.join(mailboxes)))
diff --git a/.config/mutt/mailcap b/.config/mutt/mailcap
new file mode 100755
index 0000000..5732650
--- /dev/null
+++ b/.config/mutt/mailcap
@@ -0,0 +1,11 @@
+text/html; firefox %s >/dev/null 2>&1; nametemplate=%s.html; test=test -n "$DISPLAY";
+text/html; elinks %s; nametemplate=%s.html; copiousoutput
+application/pdf; mutt_bgrun /usr/bin/zathura %s >/dev/null 2>&1;
+image/png; mutt_bgrun sxiv %s >/dev/null 2>&1;
+image/jpeg; mutt_bgrun sxiv %s >/dev/null 2>&1;
+video/mp4; mutt_bgrun mpv %s >/dev/null 2>&1;
+application/vnd.ms-excel; mutt_bgrun libreoffice %s >/dev/null 2>&1;
+application/vnd.oasis.opendocument.text; mutt_bgrun libreoffice '%s' >/dev/null 2>&1;
+application/vnd.openxmlformats-officedocument.wordprocessingml.document; mutt_bgrun libreoffice '%s' >/dev/null 2>&1;
+application/vnd.oasis.opendocument.spreadsheet; mutt_bgrun libreoffice '%s' >/dev/null 2>&1;
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; mutt_bgrun libreoffice '%s' >/dev/null 2>&1;
diff --git a/.config/mutt/mailcap.new b/.config/mutt/mailcap.new
new file mode 100755
index 0000000..f6357e0
--- /dev/null
+++ b/.config/mutt/mailcap.new
@@ -0,0 +1,107 @@
+# This file tells mutt how to open mail attachments. Your distribution may come with one by default.
+
+application/gpg; gpg -d %s; copiousoutput
+application/msexcel; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls
+application/mspowerpoint; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt
+application/msword; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Microsoft Word Document"; nametemplate=%s.doc
+application/pdf; pdftotext -layout %s -; copiousoutput
+application/rtf; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf
+application/vnd.lotus-1-2-3; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Lotus 1-2-3 spreadsheet"; nametemplate=%s.123
+application/vnd.ms-excel.sheet.macroEnabled.12; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet with Macros Enabled"; nametemplate=%s.xlsm
+application/vnd.ms-excel; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls
+application/vnd.ms-excel.template.macroEnabled.12; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template with Macros Enabled"; nametemplate=%s.xltm
+application/vnd.ms-excel; xls2csv '%s'; copiousoutput; description="MS Excel sheet";
+application/vnd.ms-powerpoint; catppt '%s'; copiousoutput; description="MS PowerPoint presentation";
+application/vnd.ms-powerpoint.presentation.macroEnabled.12; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation with Macros Enabled"; nametemplate=%s.pptm
+application/vnd.ms-powerpoint.slideshow.macroEnabled.12; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show with Macros Enabled"; nametemplate=%s.ppsm
+application/vnd.ms-powerpoint; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt
+application/vnd.ms-powerpoint.template.macroEnabled.12; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template with Macros Enabled"; nametemplate=%s.potm
+application/vnd.ms-word.document.macroEnabled.12; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document with Macros Enabled"; nametemplate=%s.docm
+application/vnd.ms-word.template.macroEnabled.12; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document Template with Macros Enabled"; nametemplate=%s.dotm
+application/vnd.ms-works; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Microsoft Works Document"; nametemplate=%s.wps
+application/vnd.oasis.opendocument.chart; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Chart"; nametemplate=%s.odc
+application/vnd.oasis.opendocument.database; soffice -no-oosplash -base '%s'; edit=soffice -no-oosplash -base '%s'; test=test -n "$DISPLAY"; description="OpenDocument Database"; nametemplate=%s.odb
+application/vnd.oasis.opendocument.formula; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="OpenDocument Formula"; nametemplate=%s.odf
+application/vnd.oasis.opendocument.graphics; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenDocument Drawing"; nametemplate=%s.odg
+application/vnd.oasis.opendocument.graphics-template; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenDocument Drawing Template"; nametemplate=%s.otg
+application/vnd.oasis.opendocument.presentation; odt2txt --width=96 %s; copiousoutput
+application/vnd.oasis.opendocument.presentation; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenDocument Presentation"; nametemplate=%s.odp
+application/vnd.oasis.opendocument.presentation-template; odt2txt --width=96 %s; copiousoutput
+application/vnd.oasis.opendocument.presentation-template; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenDocument Presentation Template"; nametemplate=%s.otp
+application/vnd.oasis.opendocument.spreadsheet; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet"; nametemplate=%s.ods
+application/vnd.oasis.opendocument.spreadsheet-template; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet Template"; nametemplate=%s.ots
+application/vnd.oasis.opendocument.text-master; odt2txt --width=96 %s; copiousoutput
+application/vnd.oasis.opendocument.text-master; soffice -no-oosplash -global '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Master Document"; nametemplate=%s.odm
+application/vnd.oasis.opendocument.text; odt2txt --width=96 %s; copiousoutput
+application/vnd.oasis.opendocument.text; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Text Document"; nametemplate=%s.odt
+application/vnd.oasis.opendocument.text-template; odt2txt --width=96 %s; copiousoutput
+application/vnd.oasis.opendocument.text-template; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Text Document Template"; nametemplate=%s.ott
+application/vnd.oasis.opendocument.text-web; odt2txt --width=96 %s; copiousoutput
+application/vnd.oasis.opendocument.text-web; soffice -no-oosplash -web '%s'; edit=soffice -no-oosplash -web '%s'; test=test -n "$DISPLAY"; description="OpenDocument HTML Document Template"; nametemplate=%s.oth
+application/vnd.openxmlformats-officedocument.presentationml.presentation; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation"; nametemplate=%s.pptx
+application/vnd.openxmlformats-officedocument.presentationml.slideshow; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show"; nametemplate=%s.ppsx
+application/vnd.openxmlformats-officedocument.presentationml.template; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template"; nametemplate=%s.potx
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet"; nametemplate=%s.xlsx
+application/vnd.openxmlformats-officedocument.spreadsheetml.template; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template"; nametemplate=%s.xltx
+application/vnd.openxmlformats-officedocument.wordprocessingml.document; docx2txt < %s -; copiousoutput
+application/vnd.openxmlformats-officedocument.wordprocessingml.document; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document"; nametemplate=%s.docx
+application/vnd.openxmlformats-officedocument.wordprocessingml.template; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document Template"; nametemplate=%s.dotx
+application/vnd.stardivision.calc; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="StarCalc 5.0"; nametemplate=%s.sdc
+application/vnd.stardivision.chart; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="StarChart 5.0"; nametemplate=%s.sds
+application/vnd.stardivision.draw; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="StarDraw 5.0"; nametemplate=%s.sda
+application/vnd.stardivision.impress; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="StarImpress 5.0"; nametemplate=%s.sdd
+application/vnd.stardivision.math; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="StarMath 5.0"; nametemplate=%s.sdf
+application/vnd.stardivision.writer-global; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="StarWriter 5.0 Master Document"; nametemplate=%s.sgl
+application/vnd.stardivision.writer; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="StarWriter 5.0"; nametemplate=%s.sdw
+application/vnd.sun.xml.base; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Database"; nametemplate=%s.sdb
+application/vnd.sun.xml.calc; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.calc; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet"; nametemplate=%s.sxc
+application/vnd.sun.xml.calc.template; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.calc.template; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet Template"; nametemplate=%s.stc
+application/vnd.sun.xml.draw; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing"; nametemplate=%s.sxd
+application/vnd.sun.xml.draw.template; soffice -no-oosplash -draw '%s'; edit=soffice -no-oosplash -draw '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing Template"; nametemplate=%s.std
+application/vnd.sun.xml.impress; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.impress; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation"; nametemplate=%s.sxi
+application/vnd.sun.xml.impress.template; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.impress.template; soffice -no-oosplash -impress '%s'; edit=soffice -no-oosplash -impress '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation Template"; nametemplate=%s.sti
+application/vnd.sun.xml.math; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Formula"; nametemplate=%s.sxm
+application/vnd.sun.xml.writer.global; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.writer.global; soffice -no-oosplash -global '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Master Document"; nametemplate=%s.sxg
+application/vnd.sun.xml.writer; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.writer; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Text Document"; nametemplate=%s.sxw
+application/vnd.sun.xml.writer.template; odt2txt --width=96 %s; copiousoutput
+application/vnd.sun.xml.writer.template; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; description="OpenOffice.org Text Document Template"; nametemplate=%s.stw
+application/vnd.wordperfect; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp
+application/wordperfect; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp
+application/x-7z-compressed; 7z l %s; copiousoutput
+application/x-7z-compressed-tar; tar --list %s; copiousoutput
+application/x-bzip1-compressed-tar; tar --list %s; copiousoutput
+application/x-bzip1; tar --list %s; copiousoutput
+application/x-bzip-compressed-tar; tar --list %s; copiousoutput
+application/x-bzip; tar --list %s; copiousoutput
+application/x-bzpdf; pdftotext -layout %s -; copiousoutput
+application/x-dbase; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf
+application/x-dbf; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf
+application/x-extension-txt; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Plain Text Document"; nametemplate=%s.txt
+application/x-gzpdf; pdftotext -layout %s -; copiousoutput
+application/x-lzma-compressed-tar; xz -l %s; copiousoutput
+application/x-lzma; xz -l %s; copiousoutput
+application/x-pdf; pdftotext -layout %s -; copiousoutput
+application/x-quattropro; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Quattro Pro 6 for Windows Spreadsheet"; nametemplate=%s.wb2
+application/x-t602; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="T602 Document"; nametemplate=%s.602
+application/x-tar; tar --list %s; copiousoutput
+application/x-tarz; tar --list %s; copiousoutput
+application/x-xz-compressed-tar; xz -l %s; copiousoutput
+application/x-xz; xz -l %s; copiousoutput
+application/x-zip-compressed; unzip -l %s; copiousoutput
+application/x-zip; unzip -l %s; copiousoutput
+application/zip; unzip -l %s; copiousoutput
+image/*; feh %s
+text/csv; less %s; copiousoutput
+text/html; less '%s'; needsterminal
+text/mathml; soffice -no-oosplash -math '%s'; edit=soffice -no-oosplash -math '%s'; test=test -n "$DISPLAY"; description="MathML Formula"; nametemplate=%s.mml
+text/plain; less '%s'; needsterminal
+text/rtf; soffice -no-oosplash --writer '%s'; edit=soffice -no-oosplash --writer '%s'; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf
+text/spreadsheet; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="Spreadsheet Interchange Document"; nametemplate=%s.slk
+text/tab-separated-values; less %s; copiousoutput
+text/x-csv; soffice -no-oosplash -calc '%s'; edit=soffice -no-oosplash -calc '%s'; test=test -n "$DISPLAY"; description="CSV Document"; nametemplate=%s.csv
diff --git a/.config/mutt/mutt-gnupg-howto b/.config/mutt/mutt-gnupg-howto
new file mode 100755
index 0000000..cea471a
--- /dev/null
+++ b/.config/mutt/mutt-gnupg-howto
@@ -0,0 +1,611 @@
+========================================================================
+
+ Everything You Need To Know To Start Using GnuPG with Mutt
+
+========================================================================
+
+ By Justin R. Miller <justin@solidlinux.com>
+
+ Revision 0.1, Released 23 September 2001
+
+========================================================================
+
+ I. Purpose
+ II. Overview
+ III. Assumptions
+ IV. Configuring GnuPG
+ V. Protecting Your Private Key
+ VI. Publicizing Your Public Key
+ VII. Understanding Validity and Your Web of Trust
+ VIII. Understanding The Need For Message Signatures
+ IX. Understanding How Signatures Are Made
+ X. Understanding How Encryption Is Done
+ XI. A Practical Example of Manual Key Management
+ XII. A Practical Example of Manual Signing and Verification
+ XIII. A Practical Example of Manual Encryption and Decryption
+ XIV. Configuring Mutt For Use With GnuPG
+ XV. Trying It All Out
+ XVI. Links For More Information
+ XVII. Contributors
+ XVIII. Feedback
+
+========================================================================
+
+I. Purpose
+
+I'm writing this document for a couple of reasons. Firstly, I believe
+that everyone should be using encryption and signatures in their email.
+
+Secondly, I believe that if you are already using a mail client such as
+Mutt (which a lot of people are), then there is absolutely no reason for
+you not to be using PGP-compatible software.
+
+Thirdly, all of the documentation that I've seen thus far is geared
+toward someone who is already familiar with PGP, so it just explains
+things like how to configure Mutt to do such tasks as automatically sign
+outgoing messages or write a procmail recipe to rewrite old-style inline
+PGP messages as S/MIME messages. This info means little if you don't
+understand the technical jargon. By no means do I want to trample the
+existing documentation for Mutt or GnuPG, the Mutt-i, GnuPG and PGP
+Howto, nor any other existing documentation. I want simply to provide a
+resource for the use of Mutt with GnuPG exclusively and to summarize the
+important points of the whole matter so that one can get started quickly
+and responsibly.
+
+Fourthly, I am trying to promote both Mutt and GnuPG, as free software
+projects, for use in everyday communications.
+
+Lastly, I enjoy writing tutorials and I hope that this one is of use to
+many people. I did a lot of research and I figured a number of things
+out on my own, and now I want to help people along.
+
+========================================================================
+
+II. Overview
+
+When you are finished with this document, you will be able to send and
+receive cryptographically signed and/or encrypted email with the Mutt
+mail reader and GnuPG, the GNU software implementation of OpenPGP
+(RFC2440). If you want to know why you should use encryption, please
+read about that topic first (see the links at the end of this document).
+
+Using GnuPG with Mutt is quite easy, but the main things to be learned
+are the details and the theory behind the actual actions. This document
+will explain the need for signing and how to sign messages, how to
+verify signatures on mail sent to you, how to encrypt messages, and how
+to decrypt messages. It will also show you, within the scope of Mutt,
+how to collect and manage the public keys of your correspondents and how
+to manage your own private key. Lastly, it will show you how to
+publicize your own public key and how to encourage others to use PGP
+when communicating with you.
+
+========================================================================
+
+III. Assumptions
+
+Before reading this document, you should have a working knowledge of the
+Mutt mail reader and you should know the basics of public key
+cryptography. You should understand that a public key is for others to
+use when encrypting messages to you and when verifying signatures from
+you, and that a private key is used for creating signatures and for
+decrypting messages to you.
+
+========================================================================
+
+IV. Configuring GnuPG
+
+Follow the instructions that came with GnuPG in order to create a
+private and public key. If you are not sure what values to use, pick
+the default values for key type and key size and use your name and email
+address as you would normally address your email.
+
+The only other thing that you might want to do is to configure GnuPG to
+automatically fetch public keys as necessary. This comes in very handy
+with Mutt, as you won't have to go and download and import a key
+manually in another terminal. In order to do this, add this line to
+your ~/.gnupg/options file:
+
+ keyserver <keyserver address>
+
+Some good keyservers are:
+
+ wwwkeys.pgp.net
+ search.keyserver.net
+ pgp.ai.mit.edu
+
+Please note that key retrievals do not happen over HTTP and as such, the
+keyserver address should not start with 'http://'.
+
+You may test this out by retrieving my public key:
+
+ gpg --recv-keys 0xC9C40C31
+
+You may then confirm that the key was added to your keyring:
+
+ gpg --list-keys justin
+
+========================================================================
+
+V. Protecting Your Private Key
+
+The most important security points to remember in all of this are to
+protect your private keyring file, and above that, to protect your
+passphrase. There is still a chance that your private key can be
+cracked without the passphrase, but it is slim in the hands of one
+person.
+
+You should limit the number of machines on which your private key is
+copied. You should only transfer your private key via a floppy disk or
+other physical media. If you do not trust the environment on which you
+will be working to be free from the possiblity of snooping (i.e. a work
+computer where others have access to your personal files), then you
+should not introduce your private key to this environment. Either that,
+or you should create a separate key for use as a "work key" and keep
+your "home key" in a safe environment.
+
+Theft of your private key by anyone means theft of your identity. In an
+increasingly digital world, your private key will soon carry as much
+weight as a photo ID, and in some situations already carries more.
+
+========================================================================
+
+VI. Publicizing Your Public Key
+
+People will need your public key both to verify signed messages by you
+and to send you encrypted messages. You can make it available by
+putting it on a website, publishing it in print, mailing it via email or
+postal mail, faxing it, uploading it to a keyserver, or any number of
+other means.
+
+The more places your public key is put, the better, since there is a
+lower chance of all of them being modified and distributed falsely.
+However, just because a key can be obtained from multiple places and all
+copies may match doesn't mean that the key should be considered valid.
+A key should only be considered valid (i.e. truly belonging to its
+owner) if it does so within your web of trust (see next section). To
+clarify, you can determine whether or not a message originated from a
+particular key, but you cannot, aside from a validity check, determine
+whether that key belongs to who it seems to belong to.
+
+You can find my public key in this document, by searching a keyserver
+for key ID 0xC9C40C31 or my name, or from my website. In addition, Mutt
+makes it easy to send your public key to someone (once Mutt is
+configured to work with GnuPG as described below) through the Esc-k key
+sequence.
+
+You may also add an X-header to your outgoing mail to provide key
+download information. All of my personal mail includes this header:
+
+ X-PGP-Key: http://solidlinux.com/~justin/pubkey.asc
+
+All of these approaches, as well as signing all outgoing mail, help
+publicize the fact that you wish to use cryptography for secure email
+communication. These things will also often generate questions about
+what the signature attachment means or why you have a file full of
+garbled characters on your website. This lets you have all the more
+chances to publicize PGP usage and awareness.
+
+There is considerable debate as whether signing messages that are sent
+out to mass audiences (via mailing lists and the like) is appropriate.
+I hope to make available in the near future some arguments for both
+sides of this debate, but if you'd like more info, you can search the
+mutt-users and gnupg-users mailing list archives.
+
+========================================================================
+
+VII. Understanding Validity and Your Web of Trust
+
+'Validity' for a particular key refers to the knowledge that the key
+belongs to the person to whom you expect it to belong. This knowledge
+comes about based on your trust in the people who have signed the key
+(including, but not limited to, the key owner).
+
+'Trust' in a person is a property of your particular installation of
+GnuPG. Trust is a private value that only you have to know about and
+refers to whether or not you trust the person's signature on a key to be
+as good as your signature on a key, and the degree to which that trust
+exists. Initially, key owners have a trust value of 'unknown'. You may
+give them a trust value of 'none' if they are known to improperly sign
+keys. A value of 'marginal' means that they understand key signing and
+perform it properly. A value of 'full' means that they have an
+excellent understanding of key signing and that you trust their
+signature on a key as well as if you had signed the key yourself.
+
+By default, a key is considered valid if it is signed by at least one
+person to whom you give full trust, or it is signed by at least three
+people to whom you give marginal trust. This can of course be
+reconfigured, and a lower number of marginally trusted owners would
+signify a smaller number of people who would have to conspire against
+you to pass a key off as valid.
+
+Without the necessary trusted signatures, the key is not considered
+valid. This does not necessarily mean that the key does not belong to
+whom you expect it to, but that the software is warning you that it has
+no way of knowing. Obviously, the web of trust is the weak point in
+public key cryptography, but when used properly can introduce some level
+of assurance into the situation.
+
+Allow me to illustrate the importance of key validity with an example.
+Say that you have met someone on IRC and that she has helped you for a
+long time with many systems administration issues. She tells you that
+she is going to send you a script that you should run as root on your
+machine. If you know this script to come from this person, you would
+have no problem running it on your machine, due to your trust in her.
+But, perhaps someone has previously hijacked the communication between
+you and friend in which you obtained her public key. Then, they could
+have possibly altered the message to contain a harmful script and passed
+it off as valid. The end result is that you are harmed and that you
+possibly blame your friend.
+
+If you had first validated the public key being used, this would have
+been avoided. You could have done this by signing the key yourself.
+You also could have insured that the key was signed by at least one
+other person to whom you have given full trust. Lastly, you could have
+insured that the key was signed by at least three key owners to whom you
+have given marginal trust.
+
+In order to sign a public key with your own private key, you must be
+absolutely sure that the key belongs to a person who is who they say
+they are. You should use a reliable method of communication to verify
+the key fingerprint of the key before signing it with your own. You may
+obtain a key fingerprint by doing this:
+
+ gpg --fingerprint <key owner name>
+
+For example, my key fingerprint is:
+
+ 2231 DFF0 869E E3A5 885A E7D4 F787 7A2B C9C4 0C31
+
+If you communicate with the key owner, perhaps in person, or over the
+phone (if you know their voice), or over certified mail, you know them
+to be who they say they are, and the key fingerprints match, then you
+may sign the key. You do this by issuing this command:
+
+ gpg --sign-key <key owner name>
+
+In order to assign trust to a key owner, you must assign the owner a
+value in your GnuPG trust database. You do this by editing their key:
+
+ gpg --edit-key <key owner name>
+
+Type 'trust' and then follow the directions.
+
+After all of this is done, if you trust someone fully to understand the
+significance of key signing, you can thereby, via your web of trust,
+validate all keys signed by them.
+
+========================================================================
+
+VIII. Understanding The Need For Message Signatures
+
+The first reason for message signatures is authenticity. It is a
+largely unknown fact that the From: header of email can be trivially
+forged. A quick glance can lead you to believe that the mail was sent
+by someone who might not have had anything to do with the message. A
+signature will help you determine if the mail was really sent by who you
+think it was sent by.
+
+The second reason for signatures is integrity. Someone who has access
+to any piece of mail that is waiting for you (perhaps at your ISP) can
+change the message. This could affect something as simple as where you
+should meet someone to something as serious as which bank account you
+should transfer money to. A signature can tell you if the message was
+modified between the sender and your mail client.
+
+========================================================================
+
+IX. Understanding How Signatures Are Made
+
+Signatures typically are attached to the message. Detached signatures
+that are placed in an alternate download location are possible, but are
+not practical for something such as email, where all-in-one
+communication is the goal. The outdated standard for making attached
+signatures was to paste it at the bottom of the message, but the new
+standard involves an actual MIME attachment to the message. Regardless,
+Mutt can verify either style.
+
+The important thing to understand is that the signature for each piece
+of mail is different and is based on both the sender's key and the
+content of the message. If all signatures from a person were the same,
+then one could just copy the signature from a mailing list post and
+start putting it on their own mail. Therefore, the signature is based
+partly on the contents of the data being signed.
+
+Another important point to note that has been brought up recently in
+security forums is a weakness of signatures. Because signatures sign
+only the body of an email, a malicious hacker could intercept a message
+from one person and redirect it to another while still keeping the
+signature intact. For example, if your boss emails a co-worker and says
+"You're fired!", you could then send this message on to someone else who
+would think it was addressed to them and see that the signature belongs
+to their boss. The approach to get around this is to always make it
+clear in the message body to whom the message is addressed and to put
+things in context so that they could not be misconstrued by a third
+party.
+
+========================================================================
+
+X. Understanding How Encryption Is Done
+
+Aside from the obvious fact that the message is encrypted, an important
+thing to note about encryption is that even the sender cannot read the
+encrypted message. Fortunately, Mutt has two ways around this. There
+is an option that lets you save a plaintext copy of your outgoing
+messages when saving to a 'sent' folder (see Mutt's 'fcc_clear' option).
+You may also configure Mutt to use GnuPG's '--encrypt-to' option to
+additionally encrypt all encrypted mail to you so that encrypted mail in
+your 'sent' folder can be decrypted by you. Without one of these
+options, only the intended recipient can decrypt the message that was
+sent out, even if a copy resides in your 'sent' folder.
+
+In order to encrypt a message to someone, you need their public key.
+Once you've got that, you name them as the recipient and the message is
+encrypted in an (as of yet) unbreakable code.
+
+Remember that encryption alone does not guarantee authenticity, as
+anyone with the recipient's public key can send them encrypted mail.
+Adding a signature to encrypted mail ensures that it originated from you
+and was encrypted by you.
+
+========================================================================
+
+XI. A Practical Example of Manual Key Management
+
+In order to understand what Mutt is going to do for you, you need to
+know what happens behind the scenes. In order to verify a signature or
+encrypt a piece of mail for someone, you need their public key. You can
+either download it from a person's website or request it from a
+keyserver, or perhaps the person will email it to you (by the way, Mutt
+of course has a handy shortcut to let you get keys out of an email with
+the Control-k keystroke). A key looks something like this (below is my
+public key):
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.0.6 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+mQGiBDsNpPoRBAC5A1vMkEiE2Z4AE9YYn3FOYi0K/ZDjUIz2/5wK4vX5IN149Yo5
+HzOH0ftJK2oTBRaKJXF1DvUO+eyIRn02BiWoLB/Dy624LEZ7psyfGLB9v/OO1T8k
+2RxAHVZefMOlJZhuAXpts2dtzkc0hBApo80Jgka1LW+i1uR/0EMj98hGwwCgl8cE
+k2xD4PZGNygAQ8NkVjkkVr8EALVGxfr4+WmmOn/RFyCnFppyYnTkBIPV0/5fUSzr
+z53AYXXCfbHx8eF8rRxCjmFdzSu212s7ISOqUXCahLSDcsWhjaavMzD/pA/GvWhO
+vTaVprdqT6pipQTvFXE4IgD1PRwl4KCu6BsJMeVWXQkjmh36y1FIA2Ub43VQnZJE
+ZBitBACaS+S7+fVFvyvK654Chh0K3Klc1zUL9TE5l0Os2veFLS2s9d6y6fpEhnB0
+iABWPPXZRuPFjM8GG1cw/KtQDo/H2y2PtwG3mElF3fdZklGurvCTffWJyE2UZBz0
+s1owo2LJF978mzKonLOc2sYT7Ix5mdsgdBAjZ4kH8EP7t3NukrQjSnVzdGluIFIu
+IE1pbGxlciA8anVzdGluQHZveGVsLm5ldD6IVwQTEQIAFwUCOw2k+gULBwoDBAMV
+AwIDFgIBAheAAAoJEPeHeivJxAwxVeEAnRdggrNekDQMyTmd5C1UjITxIhEoAJ9m
+q4RDI8Fw8waK4xIGkT32gcR7H4hGBBARAgAGBQI7DcFUAAoJEN+hndnKoo+RBgMA
+n3VjFLMZUJO86aqg4MEoQaouK5L4AJ9X5s07QlGNqRruAAVvyQ2tCIz7KbQoSnVz
+dGluIFIuIE1pbGxlciA8anVzdGluQHNvbGlkbGludXguY29tPohXBBMRAgAXBQI7
+DsfIBQsHCgMEAxUDAgMWAgECF4AACgkQ94d6K8nEDDFB/QCfYengAcA03vdik/vp
+ktnSg88R8Q8An1iQ8g9UKNIBPzbhLYOSOa441y9guQENBDsNpP4QBAC6KTosKykU
+PZQY+bd+hTPBHArGLFXGHC5RJtCVEU7iZHt4CEEEveAt6pAzoM/IBEIl0kHoG9Zq
+KUE8DY8Wnc/c0fLBFuLxa5G5J+6NBXrQwf7mOhbpFjvUPegnJJpUaTJRCYLc4sBt
+jMfaAUZJR5xRXVipLk0e8EwIuDDR1eVwbwADBwP7BU/PbNPMkGcxdrCyznBEvZAA
+txqvplJwPZbOpMJ6ck/ckeXoy6G8f3vGUyGqg8bwS8SC+pxOkaBVDdpLXcfcJwJJ
+R88HXIjfYZdalnMDELDHAvSsHxDsjs49tLzXRRQ0NpGPEGFiXHzMv43Ke8oYErqd
+BvyyxvcrgZ6DdScYwWOIRgQYEQIABgUCOw2k/gAKCRD3h3orycQMMX4zAKCBlYSH
+yeddCzek9yaiPoOD+6s3zQCfU0FwlY6o+vDLhSRerSfoA90g7gk=
+=ERSn
+-----END PGP PUBLIC KEY BLOCK-----
+
+Once you've got the key in a file on your computer, to add it to your
+keyring, or your store of available keys, you would do this:
+
+ gpg --import <key file>
+
+GnuPG will take care of the rest. The nice thing about the whole system
+is that extraneous text before the beginning and ending markers is
+ignored, so keys can be embedded with text files that contain other
+information, and GnuPG will still be able to import the key(s) from
+those files.
+
+You can verify that a key is now in your keyring by listing all of your
+keys:
+
+ gpg --list-keys
+
+You can also list particular keys by key ID or a word from the owner's
+name:
+
+ gpg --list-keys <owner's first name>
+
+Please note that this is the bare minimum way to use public keys. You
+should also take into account your web of trust and later edit the trust
+value for the key's owner and/or sign the key if you really want to rely
+on communications using it.
+
+========================================================================
+
+XII. A Practical Example of Manual Signing and Verification
+
+Take for example a sample piece of text:
+
+ Here is some sample text.
+
+If I saved this to a file called sample.txt and wanted to sign it before
+distributing it, I would do this:
+
+ gpg --clearsign sample.txt
+
+After entering my passphrase, this will output a new, signed version at
+sample.txt.asc:
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Here is some sample text.
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.0.6 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+iD8DBQE7fE+B94d6K8nEDDERAnWcAJ9ZOEiWcmfuDokPfvJtch/ERbZZFwCfeNKS
+3UFUmgeigIIJQcZbhocMJUQ=
+=FCcr
+-----END PGP SIGNATURE-----
+
+With Mutt, your text can be signed automatically, the passphrase can be
+cached for a customizable amount of time, and the recipient will get
+your message along with a MIME attachment of the signature.
+
+In order to verify a signed file, I would do this:
+
+ gpg --verify sample.txt.asc
+
+The output, providing I have the signer's (my own) public key, looks
+like this:
+
+ gpg: Signature made Thu 16 Aug 2001 06:56:01 PM EDT using DSA key ID C9C40C31
+ gpg: Good signature from "Justin R. Miller <justin@solidlinux.com>"
+
+Mutt can automatically verify signatures, retrieving public keys if
+necessary, and will show signed messages as just the message text with
+some status bar info regarding the signature validity. It looks almost
+like regular mail, and you don't have to do a thing to verify the
+message's integrity besides have the sender's public key (or have it
+automatically fetched).
+
+========================================================================
+
+XIII. A Practical Example of Manual Encryption and Decryption
+
+In order to encrypt our file, we would run this:
+
+ gpg --encrypt --armor sample.txt
+
+The '--armor' option causes the encrypted file to be outputted as text
+instead of binary data. After choosing the public key of the intended
+recipient, an encrypted file might look like this:
+
+-----BEGIN PGP MESSAGE-----
+Version: GnuPG v1.0.6 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+wh/HTTQIPdAOfSz9ZwsabH5dS9llSpeHHNGpO2cyR90owL3/p59IqG/7YycnaT6m
+s5v45hAdGVVwHjwkUlqJElKgqD02S3i7qbOxOfE5vdeMhdew96/Axvi4QW94gY9R
+ZTKjfes5QstgMHswNtn8MHIjZBShVCmRzTh04LjC8R3u/hWSvOZZes2+dJIcZOUE
+AMvRRpatVVEb5AzdPRO1QaSHVwKQb+1DxeOWUviVOzp6CkPfmJPeazHRL6QjMZAM
+AW5SCo4WME7Gupx931TxckRhCxDjoC63fz5sZzDB6mZhDZRxJf8HcG0L0sz4oCXr
+hQEOA5Bet+UpglfCEAQAxojHuWKt/kcsdN8wZc4f0IJUU4WWEXWNoXUx+rN2Qkah
+QXNDInfL5U98QkLtiPMLIifkm7YjQtqx0/9Sm8ngpFKb0lkBve/VUt+Z6bRp+2iC
+m1KtBnoml6mYKCg05bRY6jrd2/0iT5sVBEHnaA==
+=jW1T
+-----END PGP MESSAGE-----
+
+With Mutt, you can just indicate that you would like to encrypt a
+message, choose the intended recipient's public key from a menu, and the
+message is sent without you ever having to see the encryption.
+
+Since I cannot decrypt the above file (as it wasn't intended for me), I
+will just show the steps necessary to decrypt a file:
+
+ gpg --decrypt <encrypted file>
+
+After entering my passphrase and if the message was intended for me, a
+new file will be written containing the decrypted text.
+
+With Mutt, the passphrase can be cached and messages will automatically
+be decrypted and displayed in the message view screen, along with a
+brief indication of whether encryption and/or a signature was involved.
+
+========================================================================
+
+XIV. Configuring Mutt For Use With GnuPG
+
+In order to use Mutt with GnuPG, PGP support must be compiled in when
+building Mutt (this happens by default). Also, you need to add some
+directives to your .muttrc (or source a file containing these
+directives) which tells Mutt how to interact with GnuPG. Here are the
+commands that I use:
+
+set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
+set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
+set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
+set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
+set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
+set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f"
+set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xC9C40C31 -- -r %r -- %f"
+set pgp_import_command="gpg --no-verbose --import -v %f"
+set pgp_export_command="gpg --no-verbose --export --armor %r"
+set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
+set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
+set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
+set pgp_autosign=yes
+set pgp_sign_as=0xC9C40C31
+set pgp_replyencrypt=yes
+set pgp_timeout=1800
+set pgp_good_sign="^gpg: Good signature from"
+
+Aside from the basic commands necessary to inter-operate with GnuPG,
+these directives also tell Mutt to automatically sign all outgoing
+messages using key ID 0xC9C40C31 (my key), to encrypt all encrypted mail
+to me as well (for storage in my 'sent' folder, and to cache my
+passphrase for a half hour.
+
+========================================================================
+
+XV. Trying It All Out
+
+Mutt should be ready to go at this point. The first time you send a
+message, Mutt will ask you for your passphrase, which it will then
+cache, then it will sign all outgoing messages. When you receive a
+signed message, Mutt will use the sender's public key (fetching it if it
+has to) to verify the signature. When encrypting messages, it will ask
+for your passphrase (if not cached) and will present you with a menu of
+public keys that it believes match the intended recipient. Lastly, when
+decrypting messages, it will ask you for your passphrase if the cache
+has expired or it hasn't been entered yet.
+
+========================================================================
+
+XVI. Links For More Information
+
+The Mutt E-Mail Client Home Page
+ (http://www.mutt.org/)
+
+The GNU Privacy Guard Home Page
+ (http://www.gnupg.org/)
+
+The Mutt-i, GnuPG and PGP Howto
+ (http://linuxdoc.org/HOWTO/Mutt-GnuPG-PGP-HOWTO.html)
+
+The International PGP Home Page
+ (http://www.pgpi.org/)
+
+Why You Should Use Encryption
+ (http://www.goingware.com/encryption/)
+
+========================================================================
+
+XVII. Contributors
+
+I'd like to thank the following people for assistance in revising this
+document:
+
+ - Dave Chapeskie, for many clarifications, corrections,
+ recommendations, and security tips
+
+ - Thomas Roessler, for a very clear explanation of validity and trust
+
+I'd like to thank the following people for suggestions and feedback that
+I may incorporate into a later revision of this document:
+
+ - Andrew McDonald
+ - Rick Moen
+ - Andy Smith
+
+Lastly, I would like to thank you for reading this far!
+
+========================================================================
+
+XVIII. Feedback
+
+I hope that this document has been of use to you. Please let me know if
+there is any way that I can improve it. You can contact me via email at
+justin@solidlinux.com, and I would of course prefer that you use
+encryption when doing so using my public key, found elsewhere in this
+document or at http://solidlinux.com/~justin/pubkey.asc.
+
+$Id: mutt-gnupg-howto,v 1.1.1.1 2002/03/04 00:03:18 incanus Exp $
+http://codesorcery.net/old/mutt/mutt-gnupg-howto
diff --git a/.config/mutt/muttrc b/.config/mutt/muttrc
new file mode 100755
index 0000000..bddefd5
--- /dev/null
+++ b/.config/mutt/muttrc
@@ -0,0 +1,39 @@
+set folder = ~/.mail
+set spoolfile = +"ens/INBOX"
+
+# Setup mailboxes that will appear in the sidebar
+named-mailboxes "archives" "=.archives"
+mailboxes "+archives/ml/boost"
+mailboxes "+archives/ml/gcc"
+mailboxes "+archives/ml/llvm"
+named-mailboxes "ens" "=.ens"
+mailboxes `python ~/.config/mutt/mailboxes.py ens`
+named-mailboxes "inria" "=.inria"
+mailboxes `python ~/.config/mutt/mailboxes.py inria`
+
+source ~/.config/mutt/gpg
+source ~/.config/mutt/common
+source ~/.config/mutt/bindings
+
+# Load colorscheme
+# source ~/.config/mutt/colors/gruvbox.mutt
+source ~/.config/mutt/colors/gruvbox-alpha.mutt
+
+# Aliases and LDAP integration through lbdb
+source ~/.config/mutt/aliases
+set query_command="lbdbq '%s'"
+
+# if we are in any directory starting with the following, pull
+# specific settings from somewhere else
+folder-hook +ens/.* "source ~/.config/mutt/ens"
+folder-hook +inria/.* "source ~/.config/mutt/inria"
+folder-hook +paplevetoe/.* "source ~/.config/mutt/paplevetoe"
+
+# Mutt will mark emails from these addresses as having been sent by you
+alternates name@domain name@domain etc.
+
+alternative_order text/plain text/html
+
+# notmuch
+#set virtual_spoolfile=yes
+source ~/.config/mutt/vmailboxes
diff --git a/.config/mutt/paplevetoe b/.config/mutt/paplevetoe
new file mode 100755
index 0000000..79df6e1
--- /dev/null
+++ b/.config/mutt/paplevetoe
@@ -0,0 +1,22 @@
+# paplevetoe configuration
+
+# save copies of sent emails to the ${folder}Sent directory
+# the '+' expands to $folders (like '~' to $HOME in the bash shell)
+set record = +paplevetoe/sent
+set postponed = +paplevetoe/drafts
+set signature = ~/.mail_config/mutt/sig_paplevetoe.sig
+set from = ""
+
+# use msmtp to send outgoing mail to the mailserver
+# see ~/.msmtp for configuration
+set sendmail="/usr/bin/msmtp -C $HOME/.config/msmtp/msmtprc -a paplevetoe"
+
+# bcc myself to make gmail style threaded conversations
+my_hdr bcc: name@domain
+
+# pgp settings
+#my_hdr X-PGP-Key: http://my.website.com/pubkey.asc
+#set pgp_sign_as=MY_PGP_KEY_ID
+#set pgp_autosign=yes
+
+# vim: set ft=muttrc
diff --git a/.config/mutt/pgp b/.config/mutt/pgp
new file mode 100755
index 0000000..aec06f7
--- /dev/null
+++ b/.config/mutt/pgp
@@ -0,0 +1,24 @@
+# from Justin R. Miller's
+# `Everything You Need To Know To Start Using GnuPG with Mutt'
+# http://codesorcery.net/old/mutt/mutt-gnupg-howto
+
+set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
+set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
+set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
+set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
+set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
+set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0xFC29BDCDF15F5BE8 -- -r %r -- %f"
+set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0xFC29BDCDF15F5BE8 -- -r %r -- %f"
+set pgp_import_command="gpg --no-verbose --import -v %f"
+set pgp_export_command="gpg --no-verbose --export --armor %r"
+set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
+set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
+set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
+#set pgp_autosign=yes
+#set pgp_sign_as=PGP_KEY_ID
+set pgp_replyencrypt=yes
+set pgp_timeout=1800
+set pgp_good_sign="^gpg: Good signature from"
+
+set pgp_use_gpg_agent = yes
+# vim: set ft=muttrc
diff --git a/.config/mutt/sig_ens.sig b/.config/mutt/sig_ens.sig
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/.config/mutt/sig_ens.sig
diff --git a/.config/mutt/sig_inria.sig b/.config/mutt/sig_inria.sig
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/.config/mutt/sig_inria.sig
diff --git a/.config/mutt/sig_paplevetoe.sig b/.config/mutt/sig_paplevetoe.sig
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/.config/mutt/sig_paplevetoe.sig
diff --git a/.config/mutt/vmailboxes b/.config/mutt/vmailboxes
new file mode 100755
index 0000000..b1608b6
--- /dev/null
+++ b/.config/mutt/vmailboxes
@@ -0,0 +1 @@
+virtual-mailboxes "inbox" "notmuch://?query=tag:inbox"