Browse Source

Merge branch 'master' of github.com:LukeSmithxyz/mutt-wizard

pull/940/head
Luke Smith 1 year ago
parent
commit
52d3eb549d
No known key found for this signature in database GPG Key ID: 4C50B54A911F6252
2 changed files with 214 additions and 109 deletions
  1. +207
    -108
      bin/mw
  2. +7
    -1
      share/mutt-wizard.muttrc

+ 207
- 108
bin/mw View File

@@ -9,7 +9,7 @@ cachedir="${XDG_CACHE_HOME:-$HOME/.cache}/mutt-wizard"
muttrc="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc" muttrc="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc"
accdir="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/accounts" accdir="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/accounts"
msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config" msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config"
msmtplog="${XDG_CACHE_HOME:-$HOME/.cache}/msmtp/msmtp.log"
msmtplog="${XDG_STATE_HOME:-$HOME/.local/state}/msmtp/msmtp.log"
mbsyncrc="${MBSYNCRC:-$HOME/.mbsyncrc}" mbsyncrc="${MBSYNCRC:-$HOME/.mbsyncrc}"
mpoprc="${XDG_CONFIG_HOME:-$HOME/.config}/mpop/config" mpoprc="${XDG_CONFIG_HOME:-$HOME/.config}/mpop/config"
mpoptemp="$muttshare/mpop-temp" mpoptemp="$muttshare/mpop-temp"
@@ -45,54 +45,71 @@ for x in "/etc/ssl/certs/ca-certificates.crt" \
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" \ "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" \
"/usr/local/share/ca-certificates/"; do "/usr/local/share/ca-certificates/"; do
[ -f "$x" ] && sslcert="$x" && break [ -f "$x" ] && sslcert="$x" && break
done || { echo "CA Certificate not found. Please install one or link it to /etc/ssl/certs/ca-certificates.crt" && exit 1 ;}
done || { echo "CA Certificate not found. Please install one or link it to /etc/ssl/certs/ca-certificates.crt" && exit 1; }


checkbasics() { command -V gpg >/dev/null 2>&1 && GPG="gpg" || GPG="gpg2"
checkbasics() {
command -V gpg >/dev/null 2>&1 && GPG="gpg" || GPG="gpg2"
PASSWORD_STORE_DIR="${PASSWORD_STORE_DIR:-$HOME/.password-store}" PASSWORD_STORE_DIR="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
[ -r "$PASSWORD_STORE_DIR/.gpg-id" ] || { [ -r "$PASSWORD_STORE_DIR/.gpg-id" ] || {
echo "First run \`pass init <yourgpgemail>\` to set up a password archive."
echo "(If you don't already have a GPG key pair, first run \`$GPG --full-generate-key\`.)"
exit 1 ;} ;}
echo "First run \`pass init <yourgpgemail>\` to set up a password archive."
echo "(If you don't already have a GPG key pair, first run \`$GPG --full-generate-key\`.)"
exit 1
}
}


getaccounts() { accounts="$(find -L "$accdir" -type f 2>/dev/null | grep -o "\S*.muttrc" | sed "s|.*/\([0-9]-\)*||;s/\.muttrc$//" | nl)" ;}
getaccounts() { accounts="$(find -L "$accdir" -type f 2>/dev/null | grep -o "\S*.muttrc" | sed "s|.*/\([0-9]-\)*||;s/\.muttrc$//" | nl)"; }


list() { getaccounts && [ -n "$accounts" ] && echo "$accounts" || exit 1 ;}
list() { getaccounts && [ -n "$accounts" ] && echo "$accounts" || exit 1; }


prepmsmtp() { mkdir -p "${msmtprc%/*}" "${msmtplog%/*}" ; ln -s "$msmtprc" "$HOME/.msmtprc" 2>/dev/null ; envsubst < "$msmtptemp" >> "$msmtprc" ;}
prepmsmtp() {
mkdir -p "${msmtprc%/*}" "${msmtplog%/*}"
ln -s "$msmtprc" "$HOME/.msmtprc" 2>/dev/null
envsubst <"$msmtptemp" >>"$msmtprc"
}


prepmbsync() { mkdir -p "${mbsyncrc%/*}" ; [ -f "$mbsyncrc" ] && echo >> "$mbsyncrc" ; envsubst < "$mbsynctemp" >> "$mbsyncrc" ;}
prepmbsync() {
mkdir -p "${mbsyncrc%/*}"
[ -f "$mbsyncrc" ] && echo >>"$mbsyncrc"
envsubst <"$mbsynctemp" >>"$mbsyncrc"
}


prepmpop() { mkdir -p "${mpoprc%/*}" ; envsubst < "$mpoptemp" >> "$mpoprc" ;}
prepmpop() {
mkdir -p "${mpoprc%/*}"
envsubst <"$mpoptemp" >>"$mpoprc"
}


prepmutt() { mkdir -p "${muttrc%/*}" "$accdir"
envsubst < "$mutttemp" > "$accdir/$fulladdr.muttrc"
[ ! -f "$muttrc" ] && echo "# vim: filetype=neomuttrc" > "$muttrc"
! grep -q "^source.*mutt-wizard.muttrc" "$muttrc" && echo "source $muttshare/mutt-wizard.muttrc" >> "$muttrc"
! grep "^source.*.muttrc" "$muttrc" | grep -qv "$muttshare/mutt-wizard.muttrc" && echo "source $accdir/$fulladdr.muttrc" >> "$muttrc"
echo "macro index,pager i$idnum '<sync-mailbox><enter-command>source $accdir/$fulladdr.muttrc<enter><change-folder>!<enter>;<check-stats>' \"switch to $fulladdr\"" >> "$muttrc"
prepmutt() {
mkdir -p "${muttrc%/*}" "$accdir"
envsubst <"$mutttemp" >"$accdir/$fulladdr.muttrc"
[ ! -f "$muttrc" ] && echo "# vim: filetype=neomuttrc" >"$muttrc"
! grep -q "^source.*mutt-wizard.muttrc" "$muttrc" && echo "source $muttshare/mutt-wizard.muttrc" >>"$muttrc"
! grep "^source.*.muttrc" "$muttrc" | grep -qv "$muttshare/mutt-wizard.muttrc" && echo "source $accdir/$fulladdr.muttrc" >>"$muttrc"
echo "macro index,pager i$idnum '<sync-mailbox><enter-command>source $accdir/$fulladdr.muttrc<enter><change-folder>!<enter>;<check-stats>' \"switch to $fulladdr\"" >>"$muttrc"
} }


getprofiles() { \
getprofiles() {
safename="$(echo $fulladdr | sed 's/@/_/g')" safename="$(echo $fulladdr | sed 's/@/_/g')"
case "$type" in case "$type" in
online)
folder="imaps://$login@$imap:$iport"
extra="$(envsubst < "$onlinetemp")"
;;
pop) prepmpop ;;
*)
online)
folder="imaps://$login@$imap:$iport"
extra="$(envsubst <"$onlinetemp")"
;;
pop) prepmpop ;;
*)
case "$iport" in case "$iport" in
1143) imapssl=None ;;
143) imapssl=STARTTLS ;;
1143) imapssl=None ;;
143) imapssl=STARTTLS ;;
esac esac
prepmbsync ;;
prepmbsync
;;
esac esac
prepmsmtp prepmsmtp
prepmutt prepmutt
prepnotmuch prepnotmuch
} }


parsedomains(){ serverinfo="$(grep "^${fulladdr#*@}" "$muttshare/domains.csv" 2>/dev/null)"
parsedomains() {
serverinfo="$(grep "^${fulladdr#*@}" "$muttshare/domains.csv" 2>/dev/null)"


[ -z "$serverinfo" ] && serverinfo="$(grep "$(echo "${fulladdr#*@}" | sed "s/\.[^\.]*$/\.\\\*/")" "$muttshare/domains.csv" 2>/dev/null)" [ -z "$serverinfo" ] && serverinfo="$(grep "$(echo "${fulladdr#*@}" | sed "s/\.[^\.]*$/\.\\\*/")" "$muttshare/domains.csv" 2>/dev/null)"


@@ -105,7 +122,8 @@ EOF
iport="${iport:-$iportsugg}" iport="${iport:-$iportsugg}"
} }


delete() { if [ -z "${fulladdr+x}" ]; then
delete() {
if [ -z "${fulladdr+x}" ]; then
echo "Select the account you would like to delete (by number):" echo "Select the account you would like to delete (by number):"
list || exit 1 list || exit 1
read -r input read -r input
@@ -119,16 +137,20 @@ delete() { if [ -z "${fulladdr+x}" ]; then


[ -z "$fulladdr" ] && echo "$fulladdr is not a valid account name." && return 1 [ -z "$fulladdr" ] && echo "$fulladdr is not a valid account name." && return 1


sed -ibu "/IMAPStore $fulladdr-remote$/,/# End profile/d" "$mbsyncrc" 2>/dev/null ; rm -f "$mbsyncrc"bu
rm -rf "${cachedir:?}/${fulladdr:?}" "$accdir/$fulladdr.muttrc" "$accdir/"[0-9]-"$fulladdr.muttrc"
sed -ibu "/\([0-9]-\)\?$fulladdr.muttrc/d" "$muttrc" 2>/dev/null; rm -f "$muttrc"bu
sed -ibu "/account $fulladdr$/,/^\(\s*$\|account\)/d" "$msmtprc" 2>/dev/null; rm -f "$msmtprc"bu
sed -ibu "/account $fulladdr$/,/^\(\s*$\|account\)/d" "$mpoprc" 2>/dev/null; rm -f "$mpoprc"bu
sed -ibu "/IMAPStore $fulladdr-remote$/,/# End profile/d" "$mbsyncrc" 2>/dev/null
rm -f "$mbsyncrc"bu
rm -rf "${cachedir:?}/${fulladdr:?}" "$accdir/$fulladdr.muttrc" "$accdir/"[0-9]-"$fulladdr.muttrc"
sed -ibu "/\([0-9]-\)\?$fulladdr.muttrc/d" "$muttrc" 2>/dev/null
rm -f "$muttrc"bu
sed -ibu "/account $fulladdr$/,/^\(\s*$\|account\)/d" "$msmtprc" 2>/dev/null
rm -f "$msmtprc"bu
sed -ibu "/account $fulladdr$/,/^\(\s*$\|account\)/d" "$mpoprc" 2>/dev/null
rm -f "$mpoprc"bu
pass rm -f "$passprefix$fulladdr" >/dev/null 2>&1 pass rm -f "$passprefix$fulladdr" >/dev/null 2>&1
[ -n "${purge+x}" ] && safename="$(echo $fulladdr | sed 's/@/_/g')" && rm -rf "${cachedir:?}/${safename:?}" "${maildir:?}/${fulladdr:?}" [ -n "${purge+x}" ] && safename="$(echo $fulladdr | sed 's/@/_/g')" && rm -rf "${cachedir:?}/${safename:?}" "${maildir:?}/${fulladdr:?}"
} }


askinfo() { \
askinfo() {
[ -z "$fulladdr" ] && echo "Give the full email address to add:" && [ -z "$fulladdr" ] && echo "Give the full email address to add:" &&
read -r fulladdr read -r fulladdr
while ! echo "$fulladdr" | grep -qE "^.+@.+\.[A-Za-z]+$"; do while ! echo "$fulladdr" | grep -qE "^.+@.+\.[A-Za-z]+$"; do
@@ -136,15 +158,16 @@ askinfo() { \
read -r fulladdr read -r fulladdr
done done
folder="$maildir/$fulladdr" folder="$maildir/$fulladdr"
getaccounts; echo "$accounts" | grep -q "\s$fulladdr$" 2>/dev/null &&
{ echo "$fulladdr has already been added" && exit 1 ;}
{ [ -z "$imap" ] || [ -z "$smtp" ] ;} && parsedomains
getaccounts
echo "$accounts" | grep -q "\s$fulladdr$" 2>/dev/null &&
{ echo "$fulladdr has already been added" && exit 1; }
{ [ -z "$imap" ] || [ -z "$smtp" ]; } && parsedomains
[ -z "$imap" ] && echo "Give your email server's IMAP address (excluding the port number):" && [ -z "$imap" ] && echo "Give your email server's IMAP address (excluding the port number):" &&
read -r imap read -r imap
[ -z "$smtp" ] && echo "Give your email server's SMTP address (excluding the port number):" && [ -z "$smtp" ] && echo "Give your email server's SMTP address (excluding the port number):" &&
read -r smtp read -r smtp
case $sport in case $sport in
587) tlsline="# tls_starttls" ;;
587) tlsline="# tls_starttls" ;;
esac esac
[ -z "$realname" ] && realname="${fulladdr%%@*}" [ -z "$realname" ] && realname="${fulladdr%%@*}"
[ -z "$passprefix" ] && passprefix="" [ -z "$passprefix" ] && passprefix=""
@@ -157,33 +180,38 @@ askinfo() { \
fi fi
} }


createpass() { echo "$password" > "$PASSWORD_STORE_DIR/$passprefix$fulladdr"
"$GPG" -qe $(printf -- " -r %s" $(cat "$PASSWORD_STORE_DIR/.gpg-id")) "$PASSWORD_STORE_DIR/$passprefix$fulladdr"
createpass() {
echo "$password" >"$PASSWORD_STORE_DIR/$passprefix$fulladdr"
"$GPG" -qe $(printf -- " -r %s" $(cat "$PASSWORD_STORE_DIR/.gpg-id")) "$PASSWORD_STORE_DIR/$passprefix$fulladdr"
case "$(uname)" in case "$(uname)" in
Darwin|*BSD) rm -P "$PASSWORD_STORE_DIR/$passprefix$fulladdr" ;;
*) shred -u "$PASSWORD_STORE_DIR/$passprefix$fulladdr" ;;
Darwin | *BSD) rm -P "$PASSWORD_STORE_DIR/$passprefix$fulladdr" ;;
*) shred -u "$PASSWORD_STORE_DIR/$passprefix$fulladdr" ;;
esac esac
rm -f "$PASSWORD_STORE_DIR/$passprefix$fulladdr" ;}
rm -f "$PASSWORD_STORE_DIR/$passprefix$fulladdr"
}


errorexit() { errorexit() {
echo "Log-on not successful." echo "Log-on not successful."
case "$imap" in case "$imap" in
imap.gmail.com)
echo "This account with $service is using Google's Gmail servers, which disable all third-party applications without an application-specific password.
imap.gmail.com)
echo "This account with $service is using Google's Gmail servers, which disable all third-party applications without an application-specific password.
Please be sure you are using OAUTH with your Gmail account, or better yet, stop using Gmail." Please be sure you are using OAUTH with your Gmail account, or better yet, stop using Gmail."
;;
imap.mail.me.com)
echo "This account with $service is using Apple's iCloud servers, which disable all non-Apple applications by default.
;;
imap.mail.me.com)
echo "This account with $service is using Apple's iCloud servers, which disable all non-Apple applications by default.
Please be sure you either enable third-party applications, or create an app-specific password, or best of all, stop using Apple." Please be sure you either enable third-party applications, or create an app-specific password, or best of all, stop using Apple."
;;
;;
esac esac
exit 1 exit 1
}
}


getpass() { while : ; do pass rm -f "$passprefix$fulladdr" >/dev/null 2>&1
pass insert -f "$passprefix$fulladdr" && break; done ;}
getpass() { while :; do
pass rm -f "$passprefix$fulladdr" >/dev/null 2>&1
pass insert -f "$passprefix$fulladdr" && break
done; }


getboxes() { if [ -n "${force+x}" ] ; then
getboxes() {
if [ -n "${force+x}" ]; then
mailboxes="$(printf "INBOX\\nDrafts\\nJunk\\nTrash\\nSent\\nArchive")" mailboxes="$(printf "INBOX\\nDrafts\\nJunk\\nTrash\\nSent\\nArchive")"
else else
info="$(curl --location-trusted -s -m 5 --user "$login:$(pass "$passprefix$fulladdr")" --url "${protocol:-imaps}://$imap:${iport:-993}")" info="$(curl --location-trusted -s -m 5 --user "$login:$(pass "$passprefix$fulladdr")" --url "${protocol:-imaps}://$imap:${iport:-993}")"
@@ -191,45 +219,56 @@ getboxes() { if [ -n "${force+x}" ] ; then
mailboxes="$(echo "$info" | grep -v HasChildren | sed "s/.*\" //;s/\"//g" | tr -d '\r')" mailboxes="$(echo "$info" | grep -v HasChildren | sed "s/.*\" //;s/\"//g" | tr -d '\r')"
fi fi
[ "$type" = "pop" ] && mailboxes="INBOX" [ "$type" = "pop" ] && mailboxes="INBOX"
for x in $(sed -n "/^macro.* i[0-9] / s/\(^macro.* i\| .*\)//gp " "$muttrc" 2>/dev/null | sort -u; echo 0); do
for x in $(
sed -n "/^macro.* i[0-9] / s/\(^macro.* i\| .*\)//gp " "$muttrc" 2>/dev/null | sort -u
echo 0
); do
idnum=$((idnum + 1)) idnum=$((idnum + 1))
[ "$idnum" -eq "$x" ] || break [ "$idnum" -eq "$x" ] || break
done done
toappend="mailboxes $(echo "$mailboxes" | sed "s/^/\"=/;s/$/\"/;s/'/\\\'/g" | paste -sd ' ' - )"
toappend="mailboxes $(echo "$mailboxes" | sed "s/^/\"=/;s/$/\"/;s/'/\\\'/g" | paste -sd ' ' -)"
} }


finalize() { echo "$toappend" >> "$accdir/$fulladdr.muttrc"
finalize() {
echo "$toappend" >>"$accdir/$fulladdr.muttrc"
[ "$type" != "online" ] && echo "$mailboxes" | xargs -I {} mkdir -p "$maildir/$fulladdr/{}/cur" "$maildir/$fulladdr/{}/tmp" "$maildir/$fulladdr/{}/new" [ "$type" != "online" ] && echo "$mailboxes" | xargs -I {} mkdir -p "$maildir/$fulladdr/{}/cur" "$maildir/$fulladdr/{}/tmp" "$maildir/$fulladdr/{}/new"
mkdir -p "$cachedir/$safename/bodies" mkdir -p "$cachedir/$safename/bodies"
echo "$fulladdr (account #$idnum) added successfully." echo "$fulladdr (account #$idnum) added successfully."
command -V urlview >/dev/null 2>&1 && [ ! -f "$HOME/.urlview" ] && echo "COMMAND \$BROWSER" > "$HOME/.urlview"
return 0 ;}
command -V urlview >/dev/null 2>&1 && [ ! -f "$HOME/.urlview" ] && echo "COMMAND \$BROWSER" >"$HOME/.urlview"
return 0
}


prepnotmuch() { \
prepnotmuch() {
[ -z "$NOTMUCH_CONFIG" ] && NOTMUCH_CONFIG="$HOME/.notmuch-config" [ -z "$NOTMUCH_CONFIG" ] && NOTMUCH_CONFIG="$HOME/.notmuch-config"
[ -f "$NOTMUCH_CONFIG" ] && return 0 [ -f "$NOTMUCH_CONFIG" ] && return 0
envsubst < "$notmuchtemp" > "$NOTMUCH_CONFIG" ;}
envsubst <"$notmuchtemp" >"$NOTMUCH_CONFIG"
}


togglecron() { cron="$(mktemp)"
crontab -l > "$cron"
togglecron() {
cron="$(mktemp)"
crontab -l >"$cron"
if grep -q mailsync "$cron"; then if grep -q mailsync "$cron"; then
echo "Removing automatic mailsync..." echo "Removing automatic mailsync..."
sed -ibu /mailsync/d "$cron"; rm -f "$cron"bu
sed -ibu /mailsync/d "$cron"
rm -f "$cron"bu
else else
echo "Adding automatic mailsync every ${cronmin:-10} minutes..." echo "Adding automatic mailsync every ${cronmin:-10} minutes..."
echo "*/${cronmin:-10} * * * * $prefix/bin/mailsync" >> "$cron"
echo "*/${cronmin:-10} * * * * $prefix/bin/mailsync" >>"$cron"
fi && fi &&
crontab "$cron"; rm -f "$cron" ;}
crontab "$cron"
rm -f "$cron"
}


setact() { if [ -n "${action+x}" ] && [ "$action" != "$1" ]; then setact() { if [ -n "${action+x}" ] && [ "$action" != "$1" ]; then
echo "Running $1 with $action..."
echo "Incompatible options given. Only one action may be specified per run."
exit 1
else
action="$1"
fi; }
echo "Running $1 with $action..."
echo "Incompatible options given. Only one action may be specified per run."
exit 1
else
action="$1"
fi; }


mwinfo() { cat << EOF
mwinfo() {
cat <<EOF
mw: mutt-wizard, auto-configure email accounts for mutt mw: mutt-wizard, auto-configure email accounts for mutt
including downloadable mail with \`isync\`. including downloadable mail with \`isync\`.


@@ -266,64 +305,124 @@ EOF
reorder() { reorder() {
tempfile="$(mktemp -u)" tempfile="$(mktemp -u)"
trap 'rm -f $tempfile' HUP INT QUIT TERM PWR EXIT trap 'rm -f $tempfile' HUP INT QUIT TERM PWR EXIT
echo "# Carefully reorder these accounts with the desired numbers in the first column.
# DO NOT reorder rows or rename the accounts in the second column." > "$tempfile"
echo "# Carefully reorder these accounts with the desired numbers in the first column.
# DO NOT reorder rows or rename the accounts in the second column." >"$tempfile"
sed -n " sed -n "
/ i[0-9] / s?\(.* i\|'<sync.*/\|\.muttrc.*\)??g p / i[0-9] / s?\(.* i\|'<sync.*/\|\.muttrc.*\)??g p
" "$muttrc" >> "$tempfile"
" "$muttrc" >>"$tempfile"
${EDITOR:-vim} "$tempfile" || exit 1 ${EDITOR:-vim} "$tempfile" || exit 1
sed -i -e 's/#.*//' -e '/^$/d' "$tempfile"
sed -i -e 's/#.*//' -e '/^$/d' "$tempfile"
default="$(sort -n "$tempfile" | head -n 1)" default="$(sort -n "$tempfile" | head -n 1)"
default="${default#* }" default="${default#* }"
sed -ibu " sed -ibu "
/.* i[0-9] .*.muttrc/d /.* i[0-9] .*.muttrc/d
/^source.*accounts.*.muttrc/d /^source.*accounts.*.muttrc/d
" "$muttrc" 2>/dev/null; rm -f "$muttrc"bu
" "$muttrc" 2>/dev/null
rm -f "$muttrc"bu
awk -v a="$accdir" -v d="$default" ' BEGIN { print "source "a"/"d".muttrc" } awk -v a="$accdir" -v d="$default" ' BEGIN { print "source "a"/"d".muttrc" }
{ {
print "macro index,pager i"$1" '\''<sync-mailbox><enter-command>source "a"/"$2".muttrc<enter><change-folder>!<enter>;<check-stats>'\'' \"switch to "$2"\"" print "macro index,pager i"$1" '\''<sync-mailbox><enter-command>source "a"/"$2".muttrc<enter><change-folder>!<enter>;<check-stats>'\'' \"switch to "$2"\""
} }
' "$tempfile" >> "$muttrc"
' "$tempfile" >>"$muttrc"
} }


while getopts "rfpXlhodTYD:y:i:I:s:S:u:a:n:P:x:m:t:" o; do case "${o}" in while getopts "rfpXlhodTYD:y:i:I:s:S:u:a:n:P:x:m:t:" o; do case "${o}" in
l) setact list ;; l) setact list ;;
r) setact reorder1 ;; r) setact reorder1 ;;
d) setact delete ;; d) setact delete ;;
D) setact delete ; fulladdr="$OPTARG" ;;
y) setact sync ; fulladdr="$OPTARG" ;;
D)
setact delete
fulladdr="$OPTARG"
;;
y)
setact sync
fulladdr="$OPTARG"
;;
Y) setact sync ;; Y) setact sync ;;
a) setact add ; fulladdr="$OPTARG" ;;
i) setact add ; imap="$OPTARG" ;;
I) setact add ; iport="$OPTARG" ;;
s) setact add ; smtp="$OPTARG" ;;
S) setact add ; sport="$OPTARG" ;;
u) setact add ; login="$OPTARG" ;;
n) setact add ; realname="$OPTARG" ;;
P) setact add ; passprefix="$OPTARG" ;;
m) setact add ; maxmes="$OPTARG" ;;
o) setact add ; type="online" ;;
p) setact add ; type="pop"; protocol="pop3s" ; iport="${iport:-995}" ;;
f) setact add ; force=True ;;
x) setact add ; password="$OPTARG" ;;
X) setact delete ; purge=True ;;
t) setact toggle ; cronmin="$OPTARG" ;;
a)
setact add
fulladdr="$OPTARG"
;;
i)
setact add
imap="$OPTARG"
;;
I)
setact add
iport="$OPTARG"
;;
s)
setact add
smtp="$OPTARG"
;;
S)
setact add
sport="$OPTARG"
;;
u)
setact add
login="$OPTARG"
;;
n)
setact add
realname="$OPTARG"
;;
P)
setact add
passprefix="$OPTARG"
;;
m)
setact add
maxmes="$OPTARG"
;;
o)
setact add
type="online"
;;
p)
setact add
type="pop"
protocol="pop3s"
iport="${iport:-995}"
;;
f)
setact add
force=True
;;
x)
setact add
password="$OPTARG"
;;
X)
setact delete
purge=True
;;
t)
setact toggle
cronmin="$OPTARG"
;;
T) setact toggle ;; T) setact toggle ;;
h) setact info ;; h) setact info ;;
\?) echo "See \`$(basename $0) -h\` for possible options and help."; exit 1 ;;
esac done
\?)
echo "See \`$(basename $0) -h\` for possible options and help."
exit 1
;;
esac done


[ -z "$action" ] && action="info" [ -z "$action" ] && action="info"


case "$action" in case "$action" in
list) list ;;
add) checkbasics && askinfo && getboxes && getprofiles && finalize ;;
delete) delete ;;
sync)
echo "\`mw -y\` and \`mw -Y\` are now deprecated and will be removed in a future update. Please switch to using \`mailsync\`."
mailsync $fulladdr
;;
toggle) togglecron ;;
reorder) reorder ;;
info) mwinfo; exit 1 ;;
list) list ;;
add) checkbasics && askinfo && getboxes && getprofiles && finalize ;;
delete) delete ;;
sync)
echo "\`mw -y\` and \`mw -Y\` are now deprecated and will be removed in a future update. Please switch to using \`mailsync\`."
mailsync $fulladdr
;;
toggle) togglecron ;;
reorder) reorder ;;
info)
mwinfo
exit 1
;;
esac esac

+ 7
- 1
share/mutt-wizard.muttrc View File

@@ -15,7 +15,8 @@ set rfc2047_parameters = yes
set sleep_time = 0 # Pause 0 seconds for informational messages set sleep_time = 0 # Pause 0 seconds for informational messages
set markers = no # Disables the `+` displayed at line wraps set markers = no # Disables the `+` displayed at line wraps
set mark_old = no # Unread mail stay unread until read set mark_old = no # Unread mail stay unread until read
set mime_forward = yes # attachments are forwarded with mail
set mime_forward = no # mail body is forwarded as text
set forward_attachments = yes # attachments are forwarded with mail
set wait_key = no # mutt won't ask "press key to continue" set wait_key = no # mutt won't ask "press key to continue"
set fast_reply # skip to compose when replying set fast_reply # skip to compose when replying
set fcc_attach # save attachments with the body set fcc_attach # save attachments with the body
@@ -133,6 +134,11 @@ color index brightyellow blue "~T"
color index_author brightred blue "~T" color index_author brightred blue "~T"
color index_subject brightcyan blue "~T" color index_subject brightcyan blue "~T"


# Flagged mail is highlighted:
color index brightgreen default "~F"
color index_subject brightgreen default "~F"
color index_author brightgreen default "~F"

# Other colors and aesthetic settings: # Other colors and aesthetic settings:
mono bold bold mono bold bold
mono underline underline mono underline underline


Loading…
Cancel
Save