feat: remove mutt-wizard
got rid of mutt-wizard -> .local/bin/mailsync is heavily inspired by Luke's community's work
This commit is contained in:
parent
8d64ac56de
commit
36400e76e2
40
.config/mutt/accounts/account_template.muttrc
Normal file
40
.config/mutt/accounts/account_template.muttrc
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# vim: filetype=neomuttrc
|
||||||
|
# muttrc file for account email@adress.you
|
||||||
|
set realname = "John Doe"
|
||||||
|
set from = "email@adress.you"
|
||||||
|
set sendmail = "msmtp -a email@adress.you"
|
||||||
|
alias me david.julien <email@adress.you>
|
||||||
|
set folder = "/home/johndoe/.local/share/mail/email@adress.you"
|
||||||
|
set header_cache = /home/johndoe/.cache/mutt/email@adress.you/headers
|
||||||
|
set message_cachedir = /home/johndoe/.cache/mutt/email@adress.you/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
|
||||||
|
unmailboxes *
|
||||||
|
unalternates *
|
||||||
|
unset signature
|
||||||
|
unmacro index o
|
||||||
|
macro index o "<shell-escape>mw -y email@adress.you<enter>" "run mbsync to sync email@adress.you"
|
||||||
|
|
||||||
|
mailboxes "=Sent" "=Drafts" "=Trash" "=INBOX"
|
||||||
|
set record = "+Sent"
|
||||||
|
macro index,pager gs "<change-folder>=Sent<enter>" "go to sent"
|
||||||
|
macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent"
|
||||||
|
macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent"
|
||||||
|
set postponed = "+Drafts"
|
||||||
|
macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts"
|
||||||
|
macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts"
|
||||||
|
macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts"
|
||||||
|
macro index,pager gt "<change-folder>=Trash<enter>" "go to trash"
|
||||||
|
macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash"
|
||||||
|
macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash"
|
||||||
|
set trash = "+Trash"
|
||||||
|
macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox"
|
||||||
|
macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox"
|
||||||
|
macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox"
|
||||||
|
set spoolfile = "+INBOX"
|
5
.config/mutt/muttrc.template
Normal file
5
.config/mutt/muttrc.template
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# vim: filetype=neomuttrc
|
||||||
|
source /home/swytch/.config/mutt/neomutt.muttrc
|
||||||
|
source /home/swytch/.config/mutt/accounts/account_template.muttrc
|
||||||
|
macro index,pager i1 '<sync-mailbox><enter-command>source
|
||||||
|
/home/swytch/.config/mutt/accounts/account_template.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to david.julien@posteo.net"
|
163
.config/mutt/neomutt.muttrc
Normal file
163
.config/mutt/neomutt.muttrc
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
# 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:$mailcap_path
|
||||||
|
set mime_type_query_command = "file --mime-type -b %s"
|
||||||
|
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 lynx)
|
||||||
|
auto_view application/pgp-encrypted
|
||||||
|
#set display_filter = "tac | sed '/\\\[-- Autoview/,+1d' | tac" # Suppress autoview messages.
|
||||||
|
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,query <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
|
||||||
|
|
||||||
|
#set crypt_autosign = yes
|
||||||
|
#set crypt_opportunistic_encrypt = yes
|
||||||
|
#set pgp_self_encrypt = yes
|
||||||
|
#set pgp_default_key = 'your@gpgemailaddre.ss'
|
||||||
|
|
||||||
|
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 -a to sync all mail"
|
||||||
|
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>printf 'Enter a search term to find with notmuch: '; read 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 = '%D%?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
|
||||||
|
|
||||||
|
# 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<>\"]"
|
@ -29,9 +29,11 @@ git
|
|||||||
grep
|
grep
|
||||||
groff
|
groff
|
||||||
grub
|
grub
|
||||||
|
gsasl
|
||||||
gzip
|
gzip
|
||||||
htop
|
htop
|
||||||
imagemagick
|
imagemagick
|
||||||
|
isync
|
||||||
iwd
|
iwd
|
||||||
libnotify
|
libnotify
|
||||||
libtool
|
libtool
|
||||||
@ -43,11 +45,12 @@ man-db
|
|||||||
mpc
|
mpc
|
||||||
mpd
|
mpd
|
||||||
mpv
|
mpv
|
||||||
mutt-wizard
|
msmtp
|
||||||
ncmpcpp
|
ncmpcpp
|
||||||
neomutt
|
neomutt
|
||||||
neovim
|
neovim
|
||||||
noto-fonts
|
noto-fonts
|
||||||
|
notmuch
|
||||||
pacman
|
pacman
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
paru
|
paru
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
- fetch : display basic system infos
|
- fetch : display basic system infos
|
||||||
- kbacklight : change keyboard backlight level
|
- kbacklight : change keyboard backlight level
|
||||||
- maker : create a basic makefile for **C/C++** project
|
- maker : create a basic makefile for **C/C++** project
|
||||||
|
- mailsync : synchronize mail accounts
|
||||||
- mom : create a `groff/mom` file with generic metadata
|
- mom : create a `groff/mom` file with generic metadata
|
||||||
- mommerge : merge all **.mom** files of a directory and compiles it
|
- mommerge : merge all **.mom** files of a directory and compiles it
|
||||||
- player : control `mpc` and send notifications of current `mpd` state
|
- player : control `mpc` and send notifications of current `mpd` state
|
||||||
|
71
.local/bin/mailsync
Executable file
71
.local/bin/mailsync
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# @author : swytch (adapted from Luke Smith - lukesmith.xyz)
|
||||||
|
# @file : mailsync
|
||||||
|
# @license : MIT
|
||||||
|
# @created : Sunday Feb 14, 2021 12:46:24 CET
|
||||||
|
#
|
||||||
|
# @description : synchronize mail accounts
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
# First, get the right variables for the mbsync file, the pass archive, notmuch
|
||||||
|
# and the GPG home. This is done by searching common profile files for variable
|
||||||
|
# assignments.
|
||||||
|
|
||||||
|
eval "$(grep -h -- \
|
||||||
|
"^\s*\(export \)\?\(XDG_CACHE_HOME\|XDG_CONFIG_HOME\|XDG_DATA_HOME\)=" \
|
||||||
|
"$HOME/.profile" 2>/dev/null)"
|
||||||
|
|
||||||
|
eval "$(grep -h -- \
|
||||||
|
"^\s*\(export \)\?\(MBSYNCRC\|PASSWORD_STORE_DIR\|NOTMUCH_CONFIG\|GNUPGHOME\)=" \
|
||||||
|
"$HOME/.profile" "$HOME/.pam_environment" 2>/dev/null)"
|
||||||
|
|
||||||
|
case "$(readlink -f /sbin/init)" in
|
||||||
|
*systemd*) export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus ;;
|
||||||
|
esac
|
||||||
|
export GPG_TTY=$TTY
|
||||||
|
|
||||||
|
# Config file location must be passed at execution, not as envrionment variable
|
||||||
|
[ -n "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC" || MBSYNCRC="$HOME/.mbsyncrc"
|
||||||
|
|
||||||
|
displays="$(pgrep -a X\(org\|wayland\) | grep -wo "[0-9]*:[0-9]\+" | sort -u)"
|
||||||
|
notify() { for x in $displays; do
|
||||||
|
notify-send "neomutt" " $2 new mail(s) in \`$1\` account."
|
||||||
|
done ;}
|
||||||
|
messageinfo() { for x in $displays; do
|
||||||
|
export DISPLAY=$x
|
||||||
|
notify-send " $from:" "$subject"
|
||||||
|
done ;}
|
||||||
|
|
||||||
|
# Check account for new mail. Notify if there is new content.
|
||||||
|
syncandnotify() {
|
||||||
|
acc="$(echo "$account" | sed "s/.*\///")"
|
||||||
|
if [ -z "$opts" ]; then mbsync "$acc"; else mbsync "$opts" "$acc"; fi
|
||||||
|
new="$(find "${XDG_DATA_HOME:-$HOME/.local/share}"/mail/*/[Ii][Nn][Bb][Oo][Xx]/new/* -type f -newer "${XDG_CONFIG_HOME:-$HOME/.config}/mutt/.mailsynclastrun" 2>/dev/null)"
|
||||||
|
newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
|
||||||
|
if [ "$newcount" -gt "0" ]; then
|
||||||
|
for file in $new; do
|
||||||
|
# Extract subject and sender from mail.
|
||||||
|
from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//')
|
||||||
|
subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | head -n 1 | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | sed 's/^Subject: //' | sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | tr -d '\n')
|
||||||
|
messageinfo &
|
||||||
|
notify "$acc" "$newcount" &
|
||||||
|
done
|
||||||
|
[ -n "$(pidof dwmblocks)" ] && kill -40 $(pidof dwmblocks)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
accounts="$(awk '/^Channel/ {print $2}' "$MBSYNCRC")"
|
||||||
|
|
||||||
|
# Parallelize multiple accounts
|
||||||
|
for account in $accounts; do
|
||||||
|
syncandnotify &
|
||||||
|
done
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
notmuch new 2>/dev/null
|
||||||
|
|
||||||
|
#Create a touch file that indicates the time of the last run of mailsync
|
||||||
|
touch "${XDG_CONFIG_HOME:-$HOME/.config}/mutt/.mailsynclastrun"
|
3
.profile
3
.profile
@ -13,6 +13,9 @@ export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
|||||||
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
|
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
|
||||||
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
|
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
|
||||||
export LESSHISTFILE="-"
|
export LESSHISTFILE="-"
|
||||||
|
export MBSYNCRC="$XDG_CONFIG_HOME/mbsync/config"
|
||||||
|
export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch/notmuchrc"
|
||||||
|
export NMBGIT="$XDG_DATA_HOME/notmuch/nmbug"
|
||||||
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
|
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
|
||||||
export TEXMFHOME="$XDG_DATA_HOME/texmf"
|
export TEXMFHOME="$XDG_DATA_HOME/texmf"
|
||||||
export ANDROID_PREFS_ROOT="$XDG_CONFIG_HOME/android"
|
export ANDROID_PREFS_ROOT="$XDG_CONFIG_HOME/android"
|
||||||
|
Reference in New Issue
Block a user