410 lines
17 KiB
Bash
Executable File
410 lines
17 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
cd /var/tmp
|
|
apt-get install -y neomutt urlscan w3m w3m-img ripmime isync msmtp vdirsyncer pass mailsync libnotify-bin lynx urlview
|
|
|
|
echo 'alias mutt="neomutt "' >> ~/.zsh_aliases.d/002_neomutt.zsh
|
|
|
|
BASE_USER=LukeSmithxyz
|
|
BASE_REPO=mutt-wizard
|
|
PROJECT=${BASE_USER}/${BASE_REPO}
|
|
PRERELEASE=false
|
|
# RELEASE=$(curl "https://api.github.com/repos/${PROJECT}/releases?per_page=5" | jq -r '.[0] | select( .prerelease = false ) |.tag_name')
|
|
# VERSION=$(echo "${RELEASE}" | cut -c 2- | cut -f1 -d"-")
|
|
VERSION=$( date +%Y-%m-%d_ )git
|
|
DOWNLOAD_DIR=/tmp
|
|
|
|
# make a containing directory
|
|
mkdir -p /var/tmp/${BASE_REPO}-"${RELEASE}"
|
|
cd /var/tmp/${BASE_REPO}-"${RELEASE}" || exit
|
|
|
|
cat > ./description-pak << EOF
|
|
A system for automatically configuring mutt and isync with a simple interface and safe passwords
|
|
EOF
|
|
|
|
cat > ./checkinstall_it.sh << 'EOF'
|
|
# '$ mw add' and follow the prompts.
|
|
|
|
MUTTWIZARDCONF="/usr/local/share/mutt-wizard"
|
|
MUTTDIR="$HOME/.config/mutt"
|
|
ACCDIR="${MUTTDIR}/accounts"
|
|
COLORSCHEMES="${MUTTDIR}/colorschemes"
|
|
FONTS="${MUTTDIR}/fonts"
|
|
|
|
mkdir -p ${COLORSCHEMES}
|
|
mkdir -p ${fonts}
|
|
mkdir -p $ACCDIR
|
|
|
|
git clone https://github.com/sheoak/neomutt-powerline-nerdfonts.git ${MUTTDIR}/powerline
|
|
|
|
|
|
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/neonwolf-256.neomuttrc
|
|
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/zenburn.neomuttrc
|
|
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/vombatidae.neomuttrc
|
|
wget -c -P ${COLORSCHEMES} https://raw.githubusercontent.com/neomutt/neomutt/master/contrib/colorschemes/solarized-dark-256.neomuttrc
|
|
|
|
#wget -c -P ${COLORSCHEMES} https://git.sthu.org/?p=shutils.git;a=blob_plain;f=dotfiles/mutt/colors-gruvbox-shuber.muttrc;hb=master
|
|
#wget -c -P ${COLORSCHEMES} https://git.sthu.org/?p=shutils.git;a=blob_plain;f=dotfiles/mutt/colors-gruvbox-shuber-extended.muttrc;hb=master
|
|
|
|
cat >${COLORSCHEMES}/colors-gruvbox-shuber-extended.muttrc <<EOF
|
|
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
|
|
EOF
|
|
|
|
cat >${COLORSCHEMES}/colors-gruvbox-shuber.muttrc <<EOF
|
|
# gruvbox dark (contrast dark):
|
|
|
|
# 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"
|
|
EOF
|
|
|
|
# split the existing mutt-wizard.muttrc into two to separate the colours from everything else so other colourschemes can be used.
|
|
cat > ${MUTTWIZARDCONF}/mutt-wizard.muttrc <<'EOF'
|
|
# vim: filetype=neomuttrc
|
|
# This file contains all of mutt-wizard's default settings.
|
|
# mutt-wizard will have this file sourced from your muttrc.
|
|
# In the interest of seamless updating, do not edit this file.
|
|
# If you want to override any settings, set those in your muttrc.
|
|
set mailcap_path = /usr/local/share/mutt-wizard/mailcap
|
|
set date_format="%y/%m/%d %I:%M%p"
|
|
set index_format="%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)"
|
|
set sort = 'reverse-date'
|
|
set smtp_authenticators = 'gssapi:login'
|
|
set query_command = "abook --mutt-query '%s'"
|
|
set rfc2047_parameters = yes
|
|
set sleep_time = 0 # Pause 0 seconds for informational messages
|
|
set markers = no # Disables the `+` displayed at line wraps
|
|
set mark_old = no # Unread mail stay unread until read
|
|
set mime_forward = yes # attachments are forwarded with mail
|
|
set wait_key = no # mutt won't ask "press key to continue"
|
|
set fast_reply # skip to compose when replying
|
|
set fcc_attach # save attachments with the body
|
|
set forward_format = "Fwd: %s" # format of subject when forwarding
|
|
set forward_quote # include message in forwards
|
|
set reverse_name # reply as whomever it was to
|
|
set include # include message in replies
|
|
set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example)
|
|
auto_view text/html # automatically show html (mailcap uses w3m)
|
|
auto_view application/pgp-encrypted
|
|
alternative_order text/plain text/enriched text/html
|
|
bind index,pager i noop
|
|
bind index,pager g noop
|
|
bind index \Cf noop
|
|
|
|
# General rebindings
|
|
bind index j next-entry
|
|
bind index k previous-entry
|
|
bind attach <return> view-mailcap
|
|
bind attach l view-mailcap
|
|
bind editor <space> noop
|
|
bind index G last-entry
|
|
bind index gg first-entry
|
|
bind pager,attach h exit
|
|
bind pager j next-line
|
|
bind pager k previous-line
|
|
bind pager l view-attachments
|
|
bind index D delete-message
|
|
bind index U undelete-message
|
|
bind index L limit
|
|
bind index h noop
|
|
bind index l display-message
|
|
bind index <space> tag-entry
|
|
#bind browser h goto-parent
|
|
macro browser h '<change-dir><kill-line>..<enter>' "Go to parent folder"
|
|
bind index,pager H view-raw-message
|
|
bind browser l select-entry
|
|
bind pager,browser gg top-page
|
|
bind pager,browser G bottom-page
|
|
bind index,pager,browser d half-down
|
|
bind index,pager,browser u half-up
|
|
bind index,pager S sync-mailbox
|
|
bind index,pager R group-reply
|
|
bind index \031 previous-undeleted # Mouse wheel
|
|
bind index \005 next-undeleted # Mouse wheel
|
|
bind pager \031 previous-line # Mouse wheel
|
|
bind pager \005 next-line # Mouse wheel
|
|
bind editor <Tab> complete-query
|
|
|
|
macro index,pager a "<enter-command>set my_pipe_decode=\$pipe_decode pipe_decode<return><pipe-message>abook --add-email<return><enter-command>set pipe_decode=\$my_pipe_decode; unset my_pipe_decode<return>" "add the sender address to abook"
|
|
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
|
macro index O "<shell-escape>mbsync -a<enter>" "run mbsync to sync all mail"
|
|
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>read -p 'Enter a search term to find with notmuch: ' x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"<enter>" "show only messages matching a notmuch pattern"
|
|
macro index A "<limit>all\n" "show all messages (undo limit)"
|
|
|
|
# Sidebar mappings
|
|
set sidebar_visible = yes
|
|
set sidebar_width = 20
|
|
set sidebar_short_path = yes
|
|
set sidebar_next_new_wrap = yes
|
|
set mail_check_stats
|
|
set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?'
|
|
bind index,pager \Ck sidebar-prev
|
|
bind index,pager \Cj sidebar-next
|
|
bind index,pager \Co sidebar-open
|
|
bind index,pager \Cp sidebar-prev-new
|
|
bind index,pager \Cn sidebar-next-new
|
|
bind index,pager B sidebar-toggle-visible
|
|
EOF
|
|
|
|
cat > ${MUTTWIZARDCONF}/mutt-wizard-colors.muttrc <<'EOF'
|
|
# Default index colors:
|
|
color index yellow default '.*'
|
|
color index_author red default '.*'
|
|
color index_number blue default
|
|
color index_subject cyan default '.*'
|
|
|
|
# New mail is boldened:
|
|
color index brightyellow black "~N"
|
|
color index_author brightred black "~N"
|
|
color index_subject brightcyan black "~N"
|
|
|
|
# Tagged mail is highlighted:
|
|
color index brightyellow blue "~T"
|
|
color index_author brightred blue "~T"
|
|
color index_subject brightcyan blue "~T"
|
|
|
|
# Other colors and aesthetic settings:
|
|
mono bold bold
|
|
mono underline underline
|
|
mono indicator reverse
|
|
mono error bold
|
|
color normal default default
|
|
color indicator brightblack white
|
|
color sidebar_highlight red default
|
|
color sidebar_divider brightblack black
|
|
color sidebar_flagged red black
|
|
color sidebar_new green black
|
|
color normal brightyellow default
|
|
color error red default
|
|
color tilde black default
|
|
color message cyan default
|
|
color markers red white
|
|
color attachment white default
|
|
color search brightmagenta default
|
|
color status brightyellow black
|
|
color hdrdefault brightgreen default
|
|
color quoted green default
|
|
color quoted1 blue default
|
|
color quoted2 cyan default
|
|
color quoted3 yellow default
|
|
color quoted4 red default
|
|
color quoted5 brightred default
|
|
color signature brightgreen default
|
|
color bold black default
|
|
color underline black default
|
|
color normal default default
|
|
|
|
# Regex highlighting:
|
|
color header blue default ".*"
|
|
color header brightmagenta default "^(From)"
|
|
color header brightcyan default "^(Subject)"
|
|
color header brightwhite default "^(CC|BCC)"
|
|
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
|
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
|
color body green default "\`[^\`]*\`" # Green text between ` and `
|
|
color body brightblue default "^# \.*" # Headings as bold blue
|
|
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
|
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
|
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
|
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
|
color body brightcyan default "[;:][)(|]" # emoticons
|
|
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
|
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
|
color body red default "(BAD signature)"
|
|
color body cyan default "(Good signature)"
|
|
color body brightblack default "^gpg: Good signature .*"
|
|
color body brightyellow default "^gpg: "
|
|
color body brightyellow red "^gpg: BAD signature from.*"
|
|
mono body bold "^gpg: Good signature"
|
|
mono body bold "^gpg: BAD signature from.*"
|
|
color body red default "([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<>\"]"
|
|
EOF
|
|
|
|
cat >> ${MUTTDIR}/muttrc <<'EOF'
|
|
source accounts/1-cyteen42.muttrc
|
|
source /usr/local/share/mutt-wizard/mutt-wizard.muttrc
|
|
#source /usr/local/share/mutt-wizard/mutt-wizard-colors.muttrc
|
|
|
|
set sort = threads
|
|
set sort_aux = reverse-last-date-received
|
|
color progress white red
|
|
|
|
|
|
#source colorschemes/neonwolf-256.neomuttrc
|
|
#source colorschemes/zenburn.neomuttrc
|
|
#source colorschemes/vombatidae.neomuttrc
|
|
source colorschemes/solarized-dark-256.neomuttrc
|
|
|
|
# for solarized:
|
|
# you must load solarized 16 colors theme BEFORE this
|
|
# you terminal 16 colors must be set to solarized theme
|
|
source powerline/powerline.neomuttrc
|
|
#source powerline/powerline-rounded.neomuttrc
|
|
|
|
# for gruvbox:
|
|
source colorschemes/colors-gruvbox-shuber.muttrc
|
|
|
|
# For neomutt uncomment this line:
|
|
source colorschemes/colors-gruvbox-shuber-extended.muttrc
|
|
|
|
|
|
# you must load gruvbox theme BEFORE this
|
|
# you terminal 16 colors must be set to gruvbox theme
|
|
#source powerline/colors/gruvbox-powerline.neomuttrc
|
|
#source powerline/powerline.neomuttrc
|
|
|
|
EOF
|
|
|
|
|
|
|
|
mkdir -p $ACCDIR/${PROFILE_NAME}
|
|
|
|
cat > $ACCDIR/1-${PROFILE_NAME}.muttrc <<EOF
|
|
# vim: filetype=neomuttrc
|
|
# muttrc file for account ${PROFILE_NAME}
|
|
set realname = ${REAL_NAME}
|
|
set from = ${FROM}
|
|
set sendmail = "/usr/bin/msmtp -a mutt"
|
|
alias me ${REAL_NAME} <${EMAIL}>
|
|
set folder = "/home/${USER_NAME}/.local/share/mail/mutt"
|
|
set header_cache = /home/${USER_NAME}/.cache/mutt-wizard/
|
|
set message_cachedir = /home/${USER_NAME}/.cache/mutt-wizard/
|
|
set mbox_type = Maildir
|
|
EOF
|
|
|
|
# auto-generated with mutt-wizard: 'mw add' and follow the instructions
|
|
# mailboxes populated from the email account imap server so for a clean
|
|
# account just put in the standard =Inbox =Drafts =Trash =Sent =Junk
|
|
PROFILE_NAME=cyteen42
|
|
EMAIL=cyteen42@yahoo.co.uk
|
|
REAL_NAME="cyteen may"
|
|
|
|
mkdir -p $ACCDIR/${PROFILE_NAME}
|
|
|
|
cat > $ACCDIR/${PROFILE_NAME}.muttrc <<EOF
|
|
# vim: filetype=neomuttrc
|
|
# muttrc file for account ${PROFILE_NAME}
|
|
set realname = ${REAL_NAME}
|
|
set from = "${EMAIL}"
|
|
set sendmail = "msmtp -a ${PROFILE_NAME}"
|
|
alias me ${REAL_NAME} <${EMAIL}>
|
|
set folder = "/home/default/.local/share/mail/${PROFILE_NAME}"
|
|
set header_cache = /home/default/.cache/mutt-wizard/${PROFILE_NAME}/headers
|
|
set message_cachedir = /home/default/.cache/mutt-wizard/${PROFILE_NAME}/bodies
|
|
set mbox_type = Maildir
|
|
|
|
bind index,pager gg noop
|
|
bind index,pager g noop
|
|
bind index,pager M noop
|
|
bind index,pager C noop
|
|
bind index gg first-entry
|
|
macro index o "<shell-escape>mailsync -V ${PROFILE_NAME}<enter>" "run mbsync to sync ${PROFILE_NAME}"
|
|
unmailboxes *
|
|
|
|
set spoolfile = "+Inbox"
|
|
set record = "+Sent"
|
|
set postponed = "+Drafts"
|
|
set trash = "+Trash"
|
|
mailboxes "=Bulk\ Mail" "=eBay\ -\ won" "=eBay\ -\ dispatched" "=Archives.2013" "=2600hz\ Blog" "=devuan_list" "=Drafts" "=Inbox" "=aliexpress" "=Raspberry\ Pi" "=Archives.2014" "=paypal" "=greencycle\ taken" "=tutum" "=Junk" "=dinodirect" "=Archives.2017" "=eBay\ -\ confirmed" "=greencycle\ offered" "=diyaudio" "=Trash" "=greencycle\ wanted" "=artisan" "=Draft" "=Archives.2015" "=eBay" "=Archives" "=eBay\ -\ Ending" "=Sent" "=dealextreme" "=eBay\ -\ new\ items" "=Archive" "=Drafts.2013"
|
|
macro index,pager gi "<change-folder>=Inbox<enter>" "go to inbox" # mw-autogenerated
|
|
macro index,pager Mi ";<save-message>=Inbox<enter>" "move mail to inbox" # mw-autogenerated
|
|
macro index,pager Ci ";<copy-message>=Inbox<enter>" "copy mail to inbox" # mw-autogenerated
|
|
macro index,pager gs "<change-folder>=Sent<enter>" "go to sent" # mw-autogenerated
|
|
macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent" # mw-autogenerated
|
|
macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent" # mw-autogenerated
|
|
macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts" # mw-autogenerated
|
|
macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts" # mw-autogenerated
|
|
macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts" # mw-autogenerated
|
|
macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
|
|
macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
|
|
macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
|
|
macro index,pager gj "<change-folder>=Junk<enter>" "go to junk" # mw-autogenerated
|
|
macro index,pager Mj ";<save-message>=Junk<enter>" "move mail to junk" # mw-autogenerated
|
|
macro index,pager Cj ";<copy-message>=Junk<enter>" "copy mail to junk" # mw-autogenerated
|
|
macro index,pager ga "<change-folder>=Archives.2013<enter>" "go to archive" # mw-autogenerated
|
|
macro index,pager Ma ";<save-message>=Archives.2013<enter>" "move mail to archive" # mw-autogenerated
|
|
macro index,pager Ca ";<copy-message>=Archives.2013<enter>" "copy mail to archive" # mw-autogenerated
|
|
EOF
|
|
|
|
|
|
#mbsync ${PROFILE_NAME}
|