From a7d445d8023c0e0635485efe179e1a1969fe9d17 Mon Sep 17 00:00:00 2001 From: coolneng Date: Sun, 18 Sep 2022 20:27:08 +0200 Subject: [PATCH] Replace neomutt with mu4e --- .../.config/goimapnotify/disroot.conf | 14 +- goimapnotify/.config/goimapnotify/gmail.conf | 9 +- goimapnotify/.config/goimapnotify/ugent.conf | 9 +- mbsync/.mbsyncrc | 8 + .../.config/neomutt/accounts/disroot.muttrc | 28 --- neomutt/.config/neomutt/accounts/gmail.muttrc | 24 -- neomutt/.config/neomutt/accounts/ugent.muttrc | 25 -- neomutt/.config/neomutt/colors.muttrc | 66 ----- neomutt/.config/neomutt/etc/aliases | 21 -- neomutt/.config/neomutt/etc/gpg.rc | 131 ---------- neomutt/.config/neomutt/etc/mailcap | 8 - neomutt/.config/neomutt/etc/muttcol | 71 ------ neomutt/.config/neomutt/etc/sendmail | 3 - neomutt/.config/neomutt/neomuttrc | 93 ------- neomutt/.config/neomutt/personal.muttrc | 6 - neomutt/.local/bin/MIMEmbellish | 238 ------------------ notmuch/.notmuch-config | 88 ------- scripts/.local/share/scripts/mail-sync | 6 +- tmux/.tmuxp/local.yaml | 4 - 19 files changed, 19 insertions(+), 833 deletions(-) delete mode 100644 neomutt/.config/neomutt/accounts/disroot.muttrc delete mode 100644 neomutt/.config/neomutt/accounts/gmail.muttrc delete mode 100644 neomutt/.config/neomutt/accounts/ugent.muttrc delete mode 100644 neomutt/.config/neomutt/colors.muttrc delete mode 100644 neomutt/.config/neomutt/etc/aliases delete mode 100644 neomutt/.config/neomutt/etc/gpg.rc delete mode 100644 neomutt/.config/neomutt/etc/mailcap delete mode 100644 neomutt/.config/neomutt/etc/muttcol delete mode 100755 neomutt/.config/neomutt/etc/sendmail delete mode 100644 neomutt/.config/neomutt/neomuttrc delete mode 100644 neomutt/.config/neomutt/personal.muttrc delete mode 100755 neomutt/.local/bin/MIMEmbellish delete mode 100644 notmuch/.notmuch-config diff --git a/goimapnotify/.config/goimapnotify/disroot.conf b/goimapnotify/.config/goimapnotify/disroot.conf index 72aba26..3f2b051 100644 --- a/goimapnotify/.config/goimapnotify/disroot.conf +++ b/goimapnotify/.config/goimapnotify/disroot.conf @@ -7,18 +7,8 @@ }, "username": "akasroua@disroot.org", "passwordCmd": "pass mail/disroot", - "onNewMail": "mbsync disroot", - "onNewMailPost": "mu index --lazy-check", + "onNewMail": "~/.local/share/scripts/mail-sync disroot", "boxes": [ - "INBOX", - "Sent", - "Trash", - "Archive", - "Junk", - "Bookings", - "Buying", - "Services", - "SMART", - "Travel" + "INBOX" ] } diff --git a/goimapnotify/.config/goimapnotify/gmail.conf b/goimapnotify/.config/goimapnotify/gmail.conf index 3b0bce8..58f5d3c 100644 --- a/goimapnotify/.config/goimapnotify/gmail.conf +++ b/goimapnotify/.config/goimapnotify/gmail.conf @@ -7,13 +7,8 @@ }, "username": "akasroua@gmail.com", "passwordCmd": "pass mail/gmail", - "onNewMail": "mbsync gmail", - "onNewMailPost": "mu index --lazy-check", + "onNewMail": "~/.local/share/scripts/mail-sync gmail", "boxes": [ - "INBOX", - "[Gmail]/Sent Mail", - "[Gmail]/Bin", - "[Gmail]/Spam", - "[Gmail]/All Mail" + "INBOX" ] } diff --git a/goimapnotify/.config/goimapnotify/ugent.conf b/goimapnotify/.config/goimapnotify/ugent.conf index d0cc10d..3499974 100644 --- a/goimapnotify/.config/goimapnotify/ugent.conf +++ b/goimapnotify/.config/goimapnotify/ugent.conf @@ -8,13 +8,8 @@ "username": "amin.kasrouaouam@ugent.be", "passwordCmd": "/home/coolneng/.local/share/scripts/mutt_oauth2.py /home/coolneng/.cache/tokenfile", "xoauth2": true, - "onNewMail": "mbsync ugent", - "onNewMailPost": "mu index --lazy-check", + "onNewMail": "~/.local/share/scripts/mail-sync ugent", "boxes": [ - "INBOX", - "Sent Items", - "Deleted Items", - "Archive", - "Junk Email" + "INBOX" ] } diff --git a/mbsync/.mbsyncrc b/mbsync/.mbsyncrc index 530ffe6..86ccd4b 100644 --- a/mbsync/.mbsyncrc +++ b/mbsync/.mbsyncrc @@ -116,12 +116,20 @@ Create Both Expunge Both SyncState * +Channel ugent-mailing-lists +Far :ugent-remote:"Mailing Lists" +Near :ugent-local:mailing-lists +Create Both +Expunge Both +SyncState * + Group ugent Channel ugent-default Channel ugent-sent Channel ugent-trash Channel ugent-archive Channel ugent-junk +Channel ugent-mailing-lists IMAPAccount disroot Host disroot.org diff --git a/neomutt/.config/neomutt/accounts/disroot.muttrc b/neomutt/.config/neomutt/accounts/disroot.muttrc deleted file mode 100644 index 085bc23..0000000 --- a/neomutt/.config/neomutt/accounts/disroot.muttrc +++ /dev/null @@ -1,28 +0,0 @@ -# vim: filetype=neomuttrc -# muttrc file for account disroot -set realname = "Amin Kasrou Aouam" -set from = "akasroua@disroot.org" -set sendmail = "~/.config/neomutt/etc/sendmail disroot" -set folder = "~/.mail/disroot" - -set mbox_type = Maildir -set ssl_starttls = yes -set ssl_force_tls = yes - -bind index,pager gg noop -bind index,pager g noop -bind index gg first-entry -unmailboxes * -mailboxes =junk =inbox =trash =sent =bookings =buying =services =smart =travel -macro index,pager gi "=inbox" "Go to inbox." -macro index,pager gs "=sent" "Go to sent." -macro index,pager gt "=trash" "Go to trash." -macro index,pager gj "=junk" "Go to spam." -macro index,pager gb "=bookings" "Go to bookings." -macro index,pager gy "=buying" "Go to buying." -macro index,pager ge "=services" "Go to services." -macro index,pager gm "=smart" "Go to smart." -macro index,pager gr "=travel" "Go to travel." -set spoolfile = "+inbox" -set postponed = "" -set trash = "+trash" diff --git a/neomutt/.config/neomutt/accounts/gmail.muttrc b/neomutt/.config/neomutt/accounts/gmail.muttrc deleted file mode 100644 index 0a63bf1..0000000 --- a/neomutt/.config/neomutt/accounts/gmail.muttrc +++ /dev/null @@ -1,24 +0,0 @@ -# vim: filetype=neomuttrc -# muttrc file for account gmail -set realname = "Amin Kasrou Aouam" -set from = "akasroua@gmail.com" -set sendmail = "~/.config/neomutt/etc/sendmail gmail" -set folder = "~/.mail/gmail" - -set mbox_type = Maildir -set ssl_starttls = yes -set ssl_force_tls = yes - -bind index,pager gg noop -bind index,pager g noop -bind index gg first-entry -unmailboxes * -mailboxes =junk =Inbox =trash =sent -macro index,pager gi "=Inbox" "Go to inbox." -macro index,pager gs "=sent" "Go to sent." -macro index,pager gt "=trash" "Go to trash." -macro index,pager gj "=junk" "Go to spam." -set spoolfile = "+Inbox" -set record = "+sent" -set postponed = "" -set trash = "+trash" diff --git a/neomutt/.config/neomutt/accounts/ugent.muttrc b/neomutt/.config/neomutt/accounts/ugent.muttrc deleted file mode 100644 index 204fee3..0000000 --- a/neomutt/.config/neomutt/accounts/ugent.muttrc +++ /dev/null @@ -1,25 +0,0 @@ -# vim: filetype=neomuttrc -# muttrc file for account coolneng -set realname = "Amin Kasrou Aouam" -set from = "amin.kasrouaouam@ugent.be" -set sendmail = "~/.config/neomutt/etc/sendmail ugent" -set folder = "~/.mail/ugent" - -set mbox_type = Maildir -set ssl_starttls = yes -set ssl_force_tls = yes - -bind index,pager gg noop -bind index,pager g noop -bind index gg first-entry -unmailboxes * -mailboxes =inbox =sent =trash =archive =junk -macro index,pager gi "=inbox" "Go to inbox." -macro index,pager gs "=sent" "Go to sent." -macro index,pager gt "=trash" "Go to trash." -macro index,pager ga "=archive" "Go to archive." -macro index,pager gj "=junk" "Go to junk." -set spoolfile = "+inbox" -set record = "+sent" -set postponed = "" -set trash = "+deleted" diff --git a/neomutt/.config/neomutt/colors.muttrc b/neomutt/.config/neomutt/colors.muttrc deleted file mode 100644 index 77969cb..0000000 --- a/neomutt/.config/neomutt/colors.muttrc +++ /dev/null @@ -1,66 +0,0 @@ -# Header colors: -color header blue default ".*" -color header brightmagenta default "^(From)" -color header brightcyan default "^(Subject)" -color header brightwhite default "^(CC|BCC)" - -mono bold bold -mono underline underline -mono indicator reverse -mono error bold -color normal default default -color indicator brightmagenta default # currently selected message. default makes bar clear, disabled arrow to save space. -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 magenta 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 - -color body brightblue 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.*" -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<>\"]" - -# Default index colors: -color index brightwhite default '.*' -color index_author brightgreen default '.*' -color index_number blue default -color index_subject cyan default '.*' - -# For new mail: -color index brightyellow black "~N" -color index_author brightred black "~N" -color index_subject brightcyan black "~N" - -color progress black cyan diff --git a/neomutt/.config/neomutt/etc/aliases b/neomutt/.config/neomutt/etc/aliases deleted file mode 100644 index 3464a01..0000000 --- a/neomutt/.config/neomutt/etc/aliases +++ /dev/null @@ -1,21 +0,0 @@ -## A file for aliases - -# UGR professors -alias dani dmolina@decsai.ugr.es -alias cano ccano@decsai.ugr.es -alias merino cmerino@ugr.es -alias fran fjrodriguez@decsai.ugr.es -alias salva salvaguti@decsai.ugr.es -alias marisol marisolbc@ugr.es - -# UGent students -alias mickey michael.fatjanov@ugent.be -alias natan natan.tourne@ugent.be -alias conor sean.barr@ugent.be - -# Personal -alias barbas arodasaparicio@gmail.com -alias rafika rafibel63@gmail.com -alias oekk luismata06@gmail.com -alias walid mkasrou@gmail.com -alias walida naouam61@gmail.com diff --git a/neomutt/.config/neomutt/etc/gpg.rc b/neomutt/.config/neomutt/etc/gpg.rc deleted file mode 100644 index f9947e9..0000000 --- a/neomutt/.config/neomutt/etc/gpg.rc +++ /dev/null @@ -1,131 +0,0 @@ -# -*-muttrc-*- -# -# Command formats for gpg. -# -# Version notes: -# -# GPG 2.1 introduces the option "--pinentry-mode", which requires -# the "loopback" argument in instances where "--passphrase-fd" is -# used. -# -# Some of the older commented-out versions of the commands use gpg-2comp from: -# http://70t.de/download/gpg-2comp.tar.gz -# -# %p The empty string when no passphrase is needed, -# the string "PGPPASSFD=0" if one is needed. -# -# This is mostly used in conditional % sequences. -# -# %f Most PGP commands operate on a single file or a file -# containing a message. %f expands to this file's name. -# -# %s When verifying signatures, there is another temporary file -# containing the detached signature. %s expands to this -# file's name. -# -# %a In "signing" contexts, this expands to the value of the -# configuration variable $pgp_sign_as, if set, otherwise -# $pgp_default_key. You probably need to -# use this within a conditional % sequence. -# -# %r In many contexts, neomutt passes key IDs to pgp. %r expands to -# a list of key IDs. - -# Section A: Key Management - -# The default key for encryption (used by $pgp_self_encrypt and -# $postpone_encrypt). -# -# It will also be used for signing unless $pgp_sign_as is set to a -# key. -# -# Unless your key does not have encryption capability, uncomment this -# line and replace the keyid with your own. -# -# set pgp_default_key="0x12345678" - -# If you have a separate signing key, or your key _only_ has signing -# capability, uncomment this line and replace the keyid with your -# signing keyid. -# -# set pgp_sign_as="0x87654321" - - -# Section B: Commands - -# Note that we explicitly set the comment armor header since GnuPG, when used -# in some localiaztion environments, generates 8bit data in that header, thereby -# breaking PGP/MIME. - -# decode application/pgp -# -set pgp_decode_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - %f" - -# Verify a signature -# -set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f" - -# Decrypt an attachment -# -set pgp_decrypt_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - --decrypt %f" - -# Create a PGP/MIME signed attachment -# -# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f" -# -set pgp_sign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --detach-sign %f" - -# Create a application/pgp inline signed message. This style is obsolete but still needed for Hushmail recipients and some MUAs. -# -# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f" -# -set pgp_clearsign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --clearsign %f" - -# Create an encrypted attachment (note that some users include the --always-trust option here) -# -# set pgp_encrypt_only_command="/usr/libexec/neomutt/pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" -# -set pgp_encrypt_only_command="/usr/libexec/neomutt/pgpewrap gpg --batch --quiet --no-verbose --output - --textmode --armor --encrypt -- --recipient %r -- %f" - -# Create an encrypted and signed attachment (note that some users include the --always-trust option here) -# -# set pgp_encrypt_sign_command="/usr/libexec/neomutt/pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" -# -set pgp_encrypt_sign_command="/usr/libexec/neomutt/pgpewrap gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - %?a?--local-user %a? --armor --sign --encrypt -- --recipient %r -- %f" - -# Import a key into the public key ring -# -set pgp_import_command="gpg --no-verbose --import %f" - -# Export a key from the public key ring -# -set pgp_export_command="gpg --no-verbose --armor --export %r" - -# Verify a key -# -set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r" - -# Read in the public key ring -# -set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-keys %r" - -# Read in the secret key ring -# -set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-secret-keys %r" - -# Fetch keys -# set pgp_getkeys_command="pkspxycwrap %r" - -# pattern for good signature - may need to be adapted to locale! -# OK, here's a version which uses gnupg's message catalog: -# set pgp_good_sign="^gpgv?: Good signature from" -# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`" -# -# Output pattern to indicate a valid signature using --status-fd messages -set pgp_good_sign="^\\[GNUPG:\\] GOODSIG" - -# Output pattern to verify a decryption occurred -# This is now deprecated by pgp_check_gpg_decrypt_status_fd: -# set pgp_decryption_okay="^\\[GNUPG:\\] DECRYPTION_OKAY" -set pgp_check_gpg_decrypt_status_fd - diff --git a/neomutt/.config/neomutt/etc/mailcap b/neomutt/.config/neomutt/etc/mailcap deleted file mode 100644 index 0ffd075..0000000 --- a/neomutt/.config/neomutt/etc/mailcap +++ /dev/null @@ -1,8 +0,0 @@ -text/html; w3m -I %{charset} -T text/html %s; copiousoutput; -text/* ; nvim %s ; edit=nvim %s ; compose=nvim %s ; needsterminal -image/*; imv %s ; copiousoutput -application/pdf; zathura %s ; -application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice %s ; -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice %s ; -application/msword; libreoffice %s ; -application/pgp-encrypted; gpg -d '%s'; copiousoutput; diff --git a/neomutt/.config/neomutt/etc/muttcol b/neomutt/.config/neomutt/etc/muttcol deleted file mode 100644 index 2c2f7f5..0000000 --- a/neomutt/.config/neomutt/etc/muttcol +++ /dev/null @@ -1,71 +0,0 @@ -# vim: filetype=neomuttrc - -# Default index colors: -color index yellow default '.*' -color index_author red default '.*' -color index_number blue default -color index_subject cyan default '.*' - -# For new mail: -color index brightyellow black "~N" -color index_author brightred black "~N" -color index_subject brightcyan black "~N" - -# Header colors: -color header blue default ".*" -color header brightmagenta default "^(From)" -color header brightcyan default "^(Subject)" -color header brightwhite default "^(CC|BCC)" - -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 - -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 "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\ - |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\ - |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?" -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<>\"]""']))']))']))']))']))']))']))']))']))']))']))']))'])']))))))])]" diff --git a/neomutt/.config/neomutt/etc/sendmail b/neomutt/.config/neomutt/etc/sendmail deleted file mode 100755 index d899f10..0000000 --- a/neomutt/.config/neomutt/etc/sendmail +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -nix-shell -p python3 --command "python ~/.local/bin/MIMEmbellish | msmtp -a $1 -t" diff --git a/neomutt/.config/neomutt/neomuttrc b/neomutt/.config/neomutt/neomuttrc deleted file mode 100644 index eab8edb..0000000 --- a/neomutt/.config/neomutt/neomuttrc +++ /dev/null @@ -1,93 +0,0 @@ -#vim: filetype=neomuttrc -# This is the general mutt config which has the settings that all accounts use. -bind index,pager i noop -bind index,pager g noop -bind index \Cf noop -source etc/muttcol -source etc/aliases -source personal.muttrc -source colors.muttrc -set sleep_time = 0 -set sort = 'reverse-date' -set editor = $EDITOR -set copy = no -set beep_new = yes -set mailcap_path = ~/.config/neomutt/etc/mailcap -set date_format="%d/%m/%y %H:%M" -set index_format="%2C %zs %?X?A& ? %D %-15.15F %s (%-4.4c)" -set markers = no -set mark_old = no -set mime_forward = yes -set smtp_authenticators = 'gssapi:login' -set wait_key = no -auto_view text/html -auto_view application/pgp-encrypted -alternative_order text/plain text/enriched text/html -set rfc2047_parameters = yes -set send_charset = 'us-ascii:utf-8' -set ssl_use_tlsv1_2 = yes -unset help -set pager_stop = yes -set wrap=-20 - -# General remappings -bind editor noop -bind index G last-entry -bind index gg first-entry -bind pager j next-line -bind pager k previous-line -bind pager gg top -bind pager G bottom -bind index d half-down -bind index u half-up -bind index D delete-message -bind index U undelete-message -bind index F search -bind index,pager R group-reply -bind index,pager \031 previous-undeleted # Mouse wheel -bind index,pager \005 next-undeleted # Mouse wheel -macro index,pager S -macro index,pager \Cu |urlscan\n -macro index,pager ,, |urlscan\n - -# View attachments properly. -bind attach view-mailcap -set fast_reply # skip to compose when replying -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 forward_quote # include message in forwards -set reverse_name # reply as whomever it was to -set include # include message in replies - -#Ctrl-R to mark all as read -macro index \Cr "T~UN." "mark all messages as read" -# -# #sync email -macro index o "mbsync -a 2>/dev/null 1>&2 &" "run mbsync to sync all mail" - -# #copy/move dialogs -macro index C "?" "copy a message to a mailbox" -macro index M "?" "move a message to a mailbox" - -# Notmuch searching -macro index \Cf "unset wait_keyread -p 'notmuch query: ' x; echo \$x >~/.cache/mutt_terms~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;chomp@a;s/\^id:// for@a;$,=\"|\";print@a'\`\"" "show only messages matching a notmuch pattern" -macro index A "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 - -# Remove signature -unset signature diff --git a/neomutt/.config/neomutt/personal.muttrc b/neomutt/.config/neomutt/personal.muttrc deleted file mode 100644 index e18c0f7..0000000 --- a/neomutt/.config/neomutt/personal.muttrc +++ /dev/null @@ -1,6 +0,0 @@ -macro index,pager i3 'source "/home/coolneng/.config/neomutt"/accounts/disroot.muttrc!' -source /home/coolneng/.config/neomutt/accounts/disroot.muttrc -macro index,pager i2 'source "/home/coolneng/.config/neomutt"/accounts/gmail.muttrc!' -source /home/coolneng/.config/neomutt/accounts/gmail.muttrc -macro index,pager i1 'source "/home/coolneng/.config/neomutt"/accounts/ugent.muttrc!' -source /home/coolneng/.config/neomutt/accounts/ugent.muttrc diff --git a/neomutt/.local/bin/MIMEmbellish b/neomutt/.local/bin/MIMEmbellish deleted file mode 100755 index 1c8199e..0000000 --- a/neomutt/.local/bin/MIMEmbellish +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/env python - -import re -import sys -import email -import shlex -import mimetypes -import subprocess -from copy import copy -from hashlib import md5 -from email import charset -from email import encoders -from email.mime.text import MIMEText -from email.mime.multipart import MIMEMultipart -from email.mime.nonmultipart import MIMENonMultipart -from os.path import basename, splitext, expanduser - - -charset.add_charset('utf-8', charset.SHORTEST, '8bit') - - -def pandoc(from_format, to_format='markdown', plain='markdown', title=None): - markdown = ('markdown' - '-blank_before_blockquote') - - if from_format == 'plain': - from_format = plain - if from_format == 'markdown': - from_format = markdown - if to_format == 'markdown': - to_format = markdown - - command = 'pandoc -f {} -t {} --standalone --highlight-style=tango' - if to_format in ('html', 'html5'): - if title is not None: - command += ' --variable=pagetitle:{}'.format(shlex.quote(title)) - command += ' --webtex --template={}'.format( - expanduser('~/.pandoc/templates/email.html')) - return command.format(from_format, to_format) - - -def gmailfy(payload): - return payload.replace('
', - '
') - - -def make_alternative(message, part): - alternative = convert(part, 'html', - pandoc(part.get_content_subtype(), - to_format='html', - title=message.get('Subject'))) - alternative.set_payload(gmailfy(alternative.get_payload())) - return alternative - - -def make_replacement(message, part): - return convert(part, 'plain', pandoc(part.get_content_subtype())) - - -def convert(part, to_subtype, command): - payload = part.get_payload() - if isinstance(payload, str): - payload = payload.encode('utf-8') - else: - payload = part.get_payload(None, True) - if not isinstance(payload, bytes): - payload = payload.encode('utf-8') - process = subprocess.run( - shlex.split(command), - input=payload, stdout=subprocess.PIPE, check=True) - return MIMEText(process.stdout, to_subtype, 'utf-8') - - -def with_alternative(parent, part, from_signed, - make_alternative=make_alternative, - make_replacement=None): - try: - alternative = make_alternative(parent or part, from_signed or part) - replacement = (make_replacement(parent or part, part) - if from_signed is None and make_replacement is not None - else part) - except: - return parent or part - envelope = MIMEMultipart('alternative') - if parent is None: - for k, v in part.items(): - if (k.lower() != 'mime-version' - and not k.lower().startswith('content-')): - envelope.add_header(k, v) - del part[k] - envelope.attach(replacement) - envelope.attach(alternative) - if parent is None: - return envelope - payload = parent.get_payload() - payload[payload.index(part)] = envelope - return parent - - -def tag_attachments(message): - if message.get_content_type() == 'multipart/mixed': - for part in message.get_payload(): - if (part.get_content_maintype() in ['image'] - and 'Content-ID' not in part): - filename = part.get_param('filename', - header='Content-Disposition') - if isinstance(filename, tuple): - filename = str(filename[2], filename[0] or 'us-ascii') - if filename: - filename = splitext(basename(filename))[0] - if filename: - part.add_header('Content-ID', '<{}>'.format(filename)) - return message - - -def attachment_from_file_path(attachment_path): - try: - mime, encoding = mimetypes.guess_type(attachment_path, strict=False) - maintype, subtype = mime.split('/') - with open(attachment_path, 'rb') as payload: - attachment = MIMENonMultipart(maintype, subtype) - attachment.set_payload(payload.read()) - encoders.encode_base64(attachment) - if encoding: - attachment.add_header('Content-Encoding', encoding) - return attachment - except: - return None - - -attachment_path_pattern = re.compile(r'\]\s*\(\s*file://(/[^)]*\S)\s*\)|' - r'\]\s*:\s*file://(/.*\S)\s*$', - re.MULTILINE) - - -def link_attachments(payload): - attached = [] - attachments = [] - - def on_match(match): - if match.group(1): - attachment_path = match.group(1) - cid_fmt = '](cid:{})' - else: - attachment_path = match.group(2) - cid_fmt = ']: cid:{}' - attachment_id = md5(attachment_path.encode()).hexdigest() - if attachment_id in attached: - return cid_fmt.format(attachment_id) - attachment = attachment_from_file_path(attachment_path) - if attachment: - attachment.add_header('Content-ID', '<{}>'.format(attachment_id)) - attachments.append(attachment) - attached.append(attachment_id) - return cid_fmt.format(attachment_id) - return match.group() - - return attachments, attachment_path_pattern.sub(on_match, payload) - - -def with_local_attachments(parent, part, from_signed, - link_attachments=link_attachments): - if from_signed is None: - attachments, payload = link_attachments(part.get_payload()) - part.set_payload(payload) - else: - attachments, payload = link_attachments(from_signed.get_payload()) - from_signed = copy(from_signed) - from_signed.set_payload(payload) - if not attachments: - return parent, part, from_signed - if parent is None: - parent = MIMEMultipart('mixed') - for k, v in part.items(): - if (k.lower() != 'mime-version' - and not k.lower().startswith('content-')): - parent.add_header(k, v) - del part[k] - parent.attach(part) - for attachment in attachments: - parent.attach(attachment) - return parent, part, from_signed - - -def is_target(part, target_subtypes): - return (part.get('Content-Disposition', 'inline') == 'inline' - and part.get_content_maintype() == 'text' - and part.get_content_subtype() in target_subtypes) - - -def pick_from_signed(part, target_subtypes): - for from_signed in part.get_payload(): - if is_target(from_signed, target_subtypes): - return from_signed - - -def seek_target(message, target_subtypes=['plain', 'markdown']): - if message.is_multipart(): - if message.get_content_type() == 'multipart/signed': - part = pick_from_signed(message, target_subtypes) - if part is not None: - return None, message, part - elif message.get_content_type() == 'multipart/mixed': - for part in message.get_payload(): - if part.is_multipart(): - if part.get_content_type() == 'multipart/signed': - from_signed = pick_from_signed(part, target_subtypes) - if from_signed is not None: - return message, part, from_signed - elif is_target(part, target_subtypes): - return message, part, None - else: - if is_target(message, target_subtypes): - return None, message, None - return None, None, None - - -def main(): - try: - message = email.message_from_file(sys.stdin) - parent, part, from_signed = seek_target(message) - if (parent, part, from_signed) == (None, None, None): - print(message) - return - tag_attachments(message) - print(with_alternative( - *with_local_attachments(parent, part, from_signed))) - except (BrokenPipeError, KeyboardInterrupt): - pass - - -if __name__ == '__main__': - main() diff --git a/notmuch/.notmuch-config b/notmuch/.notmuch-config deleted file mode 100644 index 54df44a..0000000 --- a/notmuch/.notmuch-config +++ /dev/null @@ -1,88 +0,0 @@ -# .notmuch-config - Configuration file for the notmuch mail system -# -# For more information about notmuch, see https://notmuchmail.org - -# Database configuration -# -# The only value supported here is 'path' which should be the top-level -# directory where your mail currently exists and to where mail will be -# delivered in the future. Files should be individual email messages. -# Notmuch will store its database within a sub-directory of the path -# configured here named ".notmuch". -# -[database] -path=/home/coolneng/.mail - -# User configuration -# -# Here is where you can let notmuch know how you would like to be -# addressed. Valid settings are -# -# name Your full name. -# primary_email Your primary email address. -# other_email A list (separated by ';') of other email addresses -# at which you receive email. -# -# Notmuch will use the various email addresses configured here when -# formatting replies. It will avoid including your own addresses in the -# recipient list of replies, and will set the From address based on the -# address to which the original email was addressed. -# -[user] -name=Amin Kasrou Aouam -primary_email=akasroua@gmail.com -other_email=akasroua@correo.ugr.es; - -# Configuration for "notmuch new" -# -# The following options are supported here: -# -# tags A list (separated by ';') of the tags that will be -# added to all messages incorporated by "notmuch new". -# -# ignore A list (separated by ';') of file and directory names -# that will not be searched for messages by "notmuch new". -# -# NOTE: *Every* file/directory that goes by one of those -# names will be ignored, independent of its depth/location -# in the mail store. -# -[new] -tags=unread;inbox; -ignore= - -# Search configuration -# -# The following option is supported here: -# -# exclude_tags -# A ;-separated list of tags that will be excluded from -# search results by default. Using an excluded tag in a -# query will override that exclusion. -# -[search] -exclude_tags=deleted;spam; - -# Maildir compatibility configuration -# -# The following option is supported here: -# -# synchronize_flags Valid values are true and false. -# -# If true, then the following maildir flags (in message filenames) -# will be synchronized with the corresponding notmuch tags: -# -# Flag Tag -# ---- ------- -# D draft -# F flagged -# P passed -# R replied -# S unread (added when 'S' flag is not present) -# -# The "notmuch new" command will notice flag changes in filenames -# and update tags, while the "notmuch tag" and "notmuch restore" -# commands will notice tag changes and update flags in filenames -# -[maildir] -synchronize_flags=true diff --git a/scripts/.local/share/scripts/mail-sync b/scripts/.local/share/scripts/mail-sync index c679ff5..a431910 100755 --- a/scripts/.local/share/scripts/mail-sync +++ b/scripts/.local/share/scripts/mail-sync @@ -6,4 +6,8 @@ if [ $# -lt 1 ]; then fi mbsync "$1" -notmuch new +if pgrep -f 'mu server'; then + emacsclient -e '(mu4e-update-index)' +else + mu index --lazy-check +fi diff --git a/tmux/.tmuxp/local.yaml b/tmux/.tmuxp/local.yaml index 026401c..aa8452f 100644 --- a/tmux/.tmuxp/local.yaml +++ b/tmux/.tmuxp/local.yaml @@ -25,10 +25,6 @@ windows: panes: - ncmpcpp -- window_name: mail - panes: - - neomutt - - window_name: IM panes: - gomuks