[neomutt] Refactor to allow for alternative mail setups. Also add urlscan keybind
This commit is contained in:
parent
cc36d26f09
commit
feccebb1c9
8 changed files with 142 additions and 108 deletions
|
@ -1,10 +1,10 @@
|
|||
set sendmail = "/usr/bin/msmtp -a $my_account"
|
||||
set sendmail = "/usr/bin/msmtp $my_msmtp_conf -a $my_account"
|
||||
set spoolfile = "+$my_account/Inbox"
|
||||
set record = "+$my_account/Sent"
|
||||
set postponed = "+$my_account/Draft"
|
||||
set trash = "+$my_account/Trash"
|
||||
|
||||
macro index,pager gs "<shell-escape>mbsync $my_account<enter>" "IMAP sync account"
|
||||
macro index,pager gi "<shell-escape>mbsync $my_account:Inbox<enter>" "IMAP sync Inbox"
|
||||
macro index,pager gs "<shell-escape>mbsync $my_mbsync_conf $my_account<enter>" "IMAP sync account"
|
||||
macro index,pager gi "<shell-escape>mbsync $my_mbsync_conf $my_account:Inbox<enter>" "IMAP sync Inbox"
|
||||
|
||||
# vim: syntax=neomuttrc
|
||||
|
|
93
config/neomutt/common.rc
Normal file
93
config/neomutt/common.rc
Normal file
|
@ -0,0 +1,93 @@
|
|||
set copy # See also $record
|
||||
unmailboxes *
|
||||
source "~/.config/neomutt/mailboxes.sh $folder|"
|
||||
|
||||
# Load external configs
|
||||
source sidebar.rc
|
||||
source colors.rc
|
||||
source gpg.rc
|
||||
source keys.rc
|
||||
|
||||
# Accounts
|
||||
source "~/.config/neomutt/folder-hooks.sh $folder|"
|
||||
|
||||
# Basic options
|
||||
unset wait_key # Only wait if command exited != 0
|
||||
set delete # delete messages for real
|
||||
unset confirmappend # don't ask when adding to a mailbox
|
||||
set quit #default; <quit> exits neomutt
|
||||
unset move #default; don't move read messages
|
||||
unset mark_old # don't mark unread mail as old when exiting mailbox
|
||||
set beep_new # Hope your term bell is set to something sensible :P
|
||||
unset pipe_decode # decode and weed headers before <pipe-message>, urlscan seems to require it unset
|
||||
set thorough_search #default; decode mail before searching ~b and ~h
|
||||
set sleep_time = 0 # Speed up folder opening
|
||||
set change_folder_next # Default to next folder in list
|
||||
set mail_check = 5 #default; look for new mail every 'n' seconds
|
||||
set mail_check_stats # Allow mail stats gathering
|
||||
set mail_check_stats_interval = 10 # Mail stats calc interval
|
||||
|
||||
# Status bar
|
||||
set status_chars = " *%A" # mailbox unchanged/changed/RO/attach-msg mode
|
||||
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
|
||||
|
||||
#########
|
||||
# Index #
|
||||
#########
|
||||
set date_format = "%d/%m/%y %H:%M"
|
||||
set index_format = "[%Z] %D - %-20.20F %s"
|
||||
set sort = threads
|
||||
set sort_aux = last-date-received
|
||||
set uncollapse_jump # Jump to unread when unfolding
|
||||
set sort_re #default; useful for mailbox sort in sidebar
|
||||
unset narrow_tree #default; compact thread tree arrows
|
||||
|
||||
#########
|
||||
# Pager #
|
||||
#########
|
||||
set pager_index_lines = 10 # lines aboves the pager
|
||||
set pager_context = 3 # lines of context around selected msg in index
|
||||
set pager_stop # don't jump to next msg when scrolling past the end
|
||||
set menu_scroll # don't skip to next page when reaching bottom
|
||||
set tilde # pad blank lines with '~'
|
||||
unset markers # remove '+' on wrapped lines
|
||||
set smart_wrap #default; wrap at word boundaries
|
||||
set quote_regex = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||
# Prefer plaintext and process html through mailcap
|
||||
alternative_order text/plain text/enriched text/html
|
||||
auto_view text/html
|
||||
# Prune headers
|
||||
ignore *
|
||||
unignore From To Reply-To Cc Bcc Subject Date
|
||||
unignore Organization X-Label X-Mailer User-Agent
|
||||
|
||||
###########
|
||||
# Compose #
|
||||
###########
|
||||
# https://www.zigg.com/2018/natalie-nguyen.html
|
||||
my_hdr X-Clacks-Overhead: GNU Natalie Nguyen, Terry Pratchett
|
||||
set use_from # set a From: header
|
||||
set use_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 send_charset = utf-8
|
||||
set sendmail_wait = 0 # wait for msmtp to finish sending
|
||||
set abort_noattach = ask-yes # warn for missing attachment
|
||||
set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
|
||||
|
||||
set editor = "vim -c 'set tw=70 et wrap' '+/^$' "
|
||||
|
||||
set mask = ".*" # Which files to match
|
||||
|
||||
# vim: syntax=neomuttrc
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
echo "$0 <mutt \$folder>"
|
||||
echo " Generate mutt folder hooks for every maildir account in \$folder"
|
||||
>&2 echo "$0 <mutt \$folder>"
|
||||
>&2 echo " Generate mutt folder hooks for every maildir account in \$folder"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
@ -14,14 +14,12 @@ acc_dir="$HOME/.config/neomutt/accounts/"
|
|||
mail_dir="$1"
|
||||
|
||||
# Select default account
|
||||
default="$(find "$acc_dir" -name "*.mail" -printf "source '%p'\n" -quit)"
|
||||
#default="$(find "$acc_dir" -name "*.mail" -printf "source '%p'\n" -quit)"
|
||||
|
||||
if [ -z "$default" ]; then
|
||||
>&2 echo "No mail accounts found in $acc_dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
printf '%s\n' "$default"
|
||||
#if [ -z "$default" ]; then
|
||||
# >&2 echo "No mail accounts found in $acc_dir"
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
# Order of the keys to use for the account switch macro
|
||||
chars="1234567890azertyuiopqsdfghjklmwxcvbn"
|
||||
|
@ -30,6 +28,12 @@ i=1
|
|||
# Setup folder hooks for all the accounts
|
||||
for f in "$acc_dir"*.mail; do
|
||||
account="$(basename -s '.mail' "$f")"
|
||||
if [ ! -d "$mail_dir/$account" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ -z "$default" ]; then
|
||||
default="source '$f'"
|
||||
fi
|
||||
inbox="$(find "$mail_dir/$account" -maxdepth 1 -iname "inbox" -type d -printf "%f" -quit)"
|
||||
printf 'folder-hook =%s '\''source %s'\''\n' "$account" "$f"
|
||||
key="$(printf '%s' "$chars" | cut -c "$i")"
|
||||
|
@ -37,3 +41,7 @@ for f in "$acc_dir"*.mail; do
|
|||
"$key" "$account" "$inbox" "$account"
|
||||
i=$((i+1))
|
||||
done
|
||||
|
||||
if [ ! -z "$default" ]; then
|
||||
printf '%s\n' "$default"
|
||||
fi
|
||||
|
|
|
@ -6,6 +6,7 @@ bind index,pager \Cu half-up
|
|||
bind index,pager \Cd half-down
|
||||
bind index,pager g noop # required to define multikeys binds
|
||||
bind index,pager <tab> sync-mailbox
|
||||
macro index,pager ga "<shell-escape>mailsync<enter>" "Sync all IMAP mailboxes"
|
||||
|
||||
###########
|
||||
# SIDEBAR #
|
||||
|
@ -51,6 +52,8 @@ bind pager R group-reply
|
|||
bind pager gh display-toggle-weed
|
||||
bind pager ge extract-keys
|
||||
|
||||
macro pager gu "<pipe-message> urlscan <enter>"
|
||||
|
||||
##########
|
||||
# ATTACH #
|
||||
##########
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
usage() {
|
||||
echo "$0 <neomutt \$folder>"
|
||||
echo " Generate neomutt mailboxes & named-mailboxes for every maildir in \$folder"
|
||||
>&2 echo "$0 <neomutt \$folder>"
|
||||
>&2 echo " Generate neomutt mailboxes & named-mailboxes for every maildir in \$folder"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
|
|
@ -1,94 +1,13 @@
|
|||
# Maildir setup
|
||||
# Default config
|
||||
set mbox_type = Maildir
|
||||
set copy # See also $record (f*ckin recursion)
|
||||
set folder = "~/mail"
|
||||
unmailboxes *
|
||||
source "~/.config/neomutt/mailboxes.sh $folder|"
|
||||
set my_msmtp_conf = "" # Leave empty for default
|
||||
set my_mbsync_conf = "" # Leave empty for default
|
||||
source common.rc
|
||||
|
||||
# Load external configs
|
||||
source sidebar.rc
|
||||
source colors.rc
|
||||
source gpg.rc
|
||||
source keys.rc
|
||||
|
||||
# Accounts
|
||||
source "~/.config/neomutt/folder-hooks.sh $folder|"
|
||||
|
||||
# Basic options
|
||||
unset wait_key # Only wait if command exited != 0
|
||||
set delete # delete messages for real
|
||||
unset confirmappend # don't ask when adding to a mailbox
|
||||
set quit #default; <quit> exits neomutt
|
||||
unset move #default; don't move read messages
|
||||
unset mark_old # don't mark unread mail as old when exiting mailbox
|
||||
set beep_new # Hope your term bell is set to something sensible :P
|
||||
set pipe_decode # decode and weed headers before <pipe-message>
|
||||
set thorough_search #default; decode mail before searching ~b and ~h
|
||||
set sleep_time = 0 # Speed up folder opening
|
||||
set change_folder_next # Default to next folder in list
|
||||
set mail_check = 5 #default; look for new mail every 'n' seconds
|
||||
set mail_check_stats # Allow mail stats gathering
|
||||
set mail_check_stats_interval = 10 # Mail stats calc interval
|
||||
|
||||
# Status bar
|
||||
set status_chars = " *%A" # mailbox unchanged/changed/RO/attach-msg mode
|
||||
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
|
||||
|
||||
#########
|
||||
# Index #
|
||||
#########
|
||||
set date_format = "%d/%m/%y %H:%M"
|
||||
set index_format = "[%Z] %D - %-20.20F %s"
|
||||
set sort = threads
|
||||
set sort_aux = last-date-received
|
||||
set uncollapse_jump # Jump to unread when unfolding
|
||||
set sort_re #default; useful for mailbox sort in sidebar
|
||||
unset narrow_tree #default; compact thread tree arrows
|
||||
|
||||
#########
|
||||
# Pager #
|
||||
#########
|
||||
set pager_index_lines = 10 # lines aboves the pager
|
||||
set pager_context = 3 # lines of context around selected msg in index
|
||||
set pager_stop # don't jump to next msg when scrolling past the end
|
||||
set menu_scroll # don't skip to next page when reaching bottom
|
||||
set tilde # pad blank lines with '~'
|
||||
unset markers # remove '+' on wrapped lines
|
||||
set smart_wrap #default; wrap at word boundaries
|
||||
set quote_regex = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||
# Prefer plaintext and process html through mailcap
|
||||
alternative_order text/plain text/enriched text/html
|
||||
auto_view text/html
|
||||
# Prune headers
|
||||
ignore *
|
||||
unignore From To Reply-To Cc Bcc Subject Date
|
||||
unignore Organization X-Label X-Mailer User-Agent
|
||||
|
||||
###########
|
||||
# Compose #
|
||||
###########
|
||||
# https://www.zigg.com/2018/natalie-nguyen.html
|
||||
my_hdr X-Clacks-Overhead: GNU Natalie Nguyen, Terry Pratchett
|
||||
set use_from # set a From: header
|
||||
set use_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 send_charset = utf-8
|
||||
set sendmail_wait = 0 # wait for msmtp to finish sending
|
||||
set abort_noattach = ask-yes # warn for missing attachment
|
||||
set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
|
||||
|
||||
set editor = "vim -c 'set tw=70 et wrap' '+/^$' "
|
||||
|
||||
set mask = ".*" # Which files to match
|
||||
# Override sidebar_new_mail_only
|
||||
# Move back to sidebar.rc once the issue is resolved
|
||||
# https://github.com/neomutt/neomutt/issues/2208
|
||||
sidebar_whitelist `find $folder -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%f"\0' | xargs -0`
|
||||
sidebar_whitelist `find $folder -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%p"\0' | xargs -0`
|
||||
sidebar_whitelist `find ~/mail -mindepth 1 -type d -iname inbox -printf '"%p"\0' | xargs -0`
|
||||
|
|
|
@ -12,8 +12,5 @@ set sidebar_new_mail_only # Only display mailbox with new/flagged mail
|
|||
unset sidebar_next_new_wrap # wrap <sidebar-{next,prev}-new> to beginning
|
||||
unset sidebar_on_right # keep bar on the left
|
||||
set sidebar_sort_method = 'path' # sort by mailbox path alphabetically
|
||||
# Override sidebar_new_mail_only
|
||||
sidebar_whitelist `find ~/mail -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%p"\0' | xargs -0`
|
||||
sidebar_whitelist `find ~/mail -mindepth 1 -type d -iname inbox -printf '"%p"\0' | xargs -0`
|
||||
|
||||
# vim: syntax=neomuttrc
|
||||
|
|
14
config/neomutt/work.rc
Normal file
14
config/neomutt/work.rc
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Work config
|
||||
set mbox_type = Maildir
|
||||
set folder = "~/work/mail"
|
||||
set my_msmtp_conf = "-C $folder/msmtprc" # Leave empty for default
|
||||
set my_mbsync_conf = "-c $folder/mbsyncrc" # Leave empty for default
|
||||
source common.rc
|
||||
|
||||
# Override sidebar_new_mail_only
|
||||
# Move back to sidebar.rc once the issue is resolved
|
||||
# https://github.com/neomutt/neomutt/issues/2208
|
||||
sidebar_whitelist `find ~/work/mail -mindepth 1 -maxdepth 1 -type d ! -name cur ! -name tmp ! -name new ! -name .notmuch -printf '"%p"\0' | xargs -0`
|
||||
sidebar_whitelist `find ~/work/mail -mindepth 1 -type d -iname inbox -printf '"%p"\0' | xargs -0`
|
||||
|
||||
# vim: syntax=neomuttrc
|
Loading…
Reference in a new issue