commit 5470781a008d46c2b80b1d35093f152429d4a1ee
parent 413608ae7e0c76644757f88e2b3accd4f245a76c
Author: awy <awy@awy.one>
Date: Tue, 23 Dec 2025 22:26:04 +0300
initial stuff
Diffstat:
6 files changed, 37 insertions(+), 80 deletions(-)
diff --git a/bin/mailsync b/bin/mailsync
@@ -32,7 +32,7 @@ export GPG_TTY="$(tty)"
[ -n "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC" || MBSYNCRC="$HOME/.mbsyncrc"
[ -n "$MPOPRC" ] || MPOPRC="$HOME/.config/mpop/config"
-lastrun="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/.mailsynclastrun"
+lastrun="${XDG_CONFIG_HOME:-$HOME/.config}/aerc/.mailsynclastrun"
# Settings are different for MacOS (Darwin) systems.
case "$(uname)" in
@@ -44,7 +44,7 @@ case "$(uname)" in
esac
notify() {
- notify-send --app-name="mutt-wizard" -- "$1" "$2"
+ notify-send --app-name="aerc-wizard" -- "$1" "$2"
}
;;
esac
diff --git a/bin/mw b/bin/mw
@@ -7,6 +7,8 @@ maildir="${XDG_DATA_HOME:-$HOME/.local/share}/mail"
muttshare="$prefix/share/mutt-wizard"
cachedir="${XDG_CACHE_HOME:-$HOME/.cache}/mutt-wizard"
muttrc="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc"
+aercdir="${XDG_CONFIG_HOME:-$HOME/.config}/aerc"
+accountsconf="$aercdir/accounts.conf"
accdir="${XDG_CONFIG_HOME:-$HOME/.config}/mutt/accounts"
msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config"
msmtplog="${XDG_STATE_HOME:-$HOME/.local/state}/msmtp/msmtp.log"
@@ -16,7 +18,8 @@ imapnotify="${XDG_CONFIG_HOME:-$HOME/.config}/imapnotify"
mpoptemp="$muttshare/mpop-temp"
mbsynctemp="$muttshare/mbsync-temp"
mbsyncgmailtemp="$muttshare/mbsync-gmail-temp"
-mutttemp="$muttshare/mutt-temp"
+aerctemp="$muttshare/aerc-temp"
+aercbase="$muttshare/aerc-base"
msmtptemp="$muttshare/msmtp-temp"
onlinetemp="$muttshare/online-temp"
notmuchtemp="$muttshare/notmuch-temp"
@@ -65,7 +68,7 @@ checkbasics() {
}
}
-getaccounts() { accounts="$(find -L "$accdir" -type f 2>/dev/null | grep -o "\S*.muttrc" | sed "s|.*/\([0-9]-\)*||;s/\.muttrc$//" | nl)"; }
+getaccounts() { accounts="$(sed -n 's/^\[\(.*\)\]/\1/p' "$accountsconf" | nl)"; }
list() { getaccounts && [ -n "$accounts" ] && echo "$accounts" || exit 1; }
@@ -97,14 +100,13 @@ prepimapnotify() {
mkdir -p "$imapnotify" ; envsubst < "$imapnotifytemp" >> "$imapnotify/$fulladdr.conf"
}
-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"
- neomutt -v | grep -q lmdb && ! grep -q "^set header_cache_backend.*lmdb" "$muttrc" && echo "set header_cache_backend = \"lmdb\"" >>"$muttrc"
+prepaerc() {
+ mkdir -p "$aercdir"
+ aercuser="${fulladdr%@*}"
+ aercdomain="${fulladdr#*@}"
+ [ ! -f "$accountsconf" ] && envsubst <"$aercbase" >"$accountsconf"
+ ! grep -q "^multi-file-strategy" "$accountsconf" && envsubst <"$aercbase" >"$accountsconf"
+ envsubst <"$aerctemp" >>"$accountsconf"
}
getprofiles() {
@@ -124,7 +126,7 @@ getprofiles() {
;;
esac
prepmsmtp
- prepmutt
+ prepaerc
prepnotmuch
prepimapnotify
}
@@ -160,9 +162,11 @@ delete() {
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 -i "/^\[$fulladdr\]/,/^\[/ {
+ /^\[$fulladdr\]/d
+ /^\[/b
+ d
+ }" "$accountsconf" 2>/dev/null
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
@@ -234,13 +238,8 @@ getboxes() {
mailboxes="$(echo "$info" | grep -v HasChildren | sed "s/.*\" //;s/\"//g" | tr -d '\r')"
fi
[ "$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
- idnum=$((idnum + 1))
- [ "$idnum" -eq "$x" ] || break
- done
+ sed -n 's/^\[\(.*\)\]/\1/p' "$accountsconf" | wc -l
+ idnum=$((idnum + 1))
case "$fulladdr" in
*@gmail.com)
mailboxes=$(echo "$mailboxes" | sed -e 's#^\[Gmail\]/##' -e 's/^Sent Mail$/Sent/' -e 's/^Spam$/Junk/')
@@ -253,7 +252,6 @@ getboxes() {
}
finalize() {
- echo "$toappend" >>"$accdir/$fulladdr.muttrc"
[ "$type" != "online" ] && echo "$mailboxes" | xargs -I {} mkdir -p "$maildir/$fulladdr/{}/cur" "$maildir/$fulladdr/{}/tmp" "$maildir/$fulladdr/{}/new"
mkdir -p "$cachedir/$safename/bodies"
echo "$fulladdr (account #$idnum) added successfully."
@@ -326,6 +324,7 @@ EOF
}
reorder() {
+ # This looks so fucking hard to port. I need to think.
tempfile="$(mktemp -u)"
trap 'rm -f $tempfile' HUP INT QUIT TERM PWR EXIT
echo "# Carefully reorder these accounts with the desired numbers in the first column.
diff --git a/share/aerc-base b/share/aerc-base
@@ -0,0 +1,8 @@
+multi-file-strategy = act-all
+source = notmuch://$maildir
+maildir-store = $maildir
+check-mail-cmd = mailup
+check-mail = 0
+default = INBOX
+cache-headers = true
+folders-sort = INBOX, Sent, Drafts, Junk, Trash
diff --git a/share/aerc-temp b/share/aerc-temp
@@ -0,0 +1,6 @@
+[$fulladdr]
+outgoing = smtps://$aercuser%40$aercdomain@$smtp:$sport
+maildir-account-path = $fulladdr
+outgoing-cred-cmd = gopass $passprefix$fulladdr
+from = $aercuser <$fulladdr>
+copy-to = Sent
diff --git a/share/mutt-temp b/share/mutt-temp
@@ -1,19 +0,0 @@
-# vim: filetype=neomuttrc
-# muttrc file for account $fulladdr
-set real_name = "$realname"
-set from = "$fulladdr"
-set sendmail = "msmtp -a $fulladdr"
-alias me $realname <$fulladdr>
-set folder = "$folder"
-set header_cache = "$cachedir/$safename/headers"
-set message_cachedir = "$cachedir/$safename/bodies"
-set mbox_type = Maildir
-set hostname = "$hostname"
-source $muttshare/switch.muttrc
-set spool_file = "+INBOX"
-set postponed = "+Drafts"
-set trash = "+Trash"
-set record = "+Sent"
-$extra
-macro index o "<shell-escape>mailsync $fulladdr<enter>" "sync $fulladdr"
-named-mailboxes "📨inbox" +INBOX "✈️sent" +Sent "📝drafts" +Drafts "🚫junk" +Junk "🗑️trash" +Trash
diff --git a/share/nord.muttrc b/share/nord.muttrc
@@ -1,37 +0,0 @@
-# global
-
-color normal default default
-color error brightred default
-color status white blue
-color message brightgreen default
-color search yellow default
-color attachment brightmagenta default
-color signature cyan default
-
-# header
-color header brightcyan default "^(From|To|Cc|Bcc|Reply-To)"
-color header brightblue default "^Subject"
-color header brightwhite default "^Date"
-
-# index (email list)
-color index white default "~R" # Read
-color index brightblue default "~N" # New
-color index brightcyan default "~U" # Unread
-color index yellow default "~F" # Flagged
-color index magenta default "~T" # Tagged
-color index_author blue default "~R"
-color index_author brightblue default "~N"
-
-# quoted text in emails
-color quoted blue default
-color quoted1 cyan default
-color quoted2 magenta default
-color quoted3 brightmagenta default
-
-# tilde and markers
-color tilde cyan default
-color markers black cyan
-
-# links and emails in the body
-color body brightblue default "https?://[^ \"\t\r\n]+"
-color body magenta default "[^ ]+@[^ ]+"