summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYigit Sever2021-10-12 01:01:01 +0300
committerYigit Sever2021-10-12 01:01:01 +0300
commit22bafa21869fb47d8f6568a0e047c226926f20e0 (patch)
tree90b18965b589d95e27e166186ddc32ca8f92471b
parent20e42aa0d070f0c09ab20bf4ab42c3495a807e1c (diff)
downloaddotfiles-22bafa21869fb47d8f6568a0e047c226926f20e0.tar.gz
dotfiles-22bafa21869fb47d8f6568a0e047c226926f20e0.tar.bz2
dotfiles-22bafa21869fb47d8f6568a0e047c226926f20e0.zip
mutt: free from the shackles
-rw-r--r--.config/msmtp/config47
-rw-r--r--.config/mutt/accounts/1-ceng_argor.muttrc54
-rw-r--r--.config/mutt/accounts/2-metu_argor.muttrc48
-rw-r--r--.config/mutt/accounts/3-ceng_stu.muttrc51
-rw-r--r--.config/mutt/accounts/4-metu_stu.muttrc48
-rw-r--r--.config/mutt/accounts/5-xyz.muttrc53
-rw-r--r--.config/mutt/muttrc177
-rwxr-xr-x.local/bin/mailsync76
-rwxr-xr-x.local/bin/openfile10
-rw-r--r--.mbsyncrc131
10 files changed, 673 insertions, 22 deletions
diff --git a/.config/msmtp/config b/.config/msmtp/config
new file mode 100644
index 0000000..8b8e782
--- /dev/null
+++ b/.config/msmtp/config
@@ -0,0 +1,47 @@
1defaults
2auth on
3tls on
4tls_trust_file /etc/ssl/certs/ca-certificates.crt
5logfile ~/.config/msmtp/msmtp.log
6
7account ceng_argor
8host mailhost.ceng.metu.edu.tr
9domain mailhost.ceng.metu.edu.tr
10port 587
11from yigit@ceng.metu.edu.tr
12user yigit
13passwordeval "pass mutt-wizard-ceng_argor"
14tls_starttls on
15tls_certcheck off
16
17account metu_argor
18host smtp.metu.edu.tr
19port 465
20from ysever@metu.edu.tr
21user ysever
22passwordeval "pass mutt-wizard-metu_argor"
23tls_starttls off
24
25account ceng_stu
26host mailhost.ceng.metu.edu.tr
27domain mailhost.ceng.metu.edu.tr
28port 587
29from e2482057@ceng.metu.edu.tr
30user e2482057
31passwordeval "pass mutt-wizard-ceng_stu"
32tls_certcheck off
33
34account metu_stu
35host smtp.metu.edu.tr
36port 465
37from e248205@metu.edu.tr
38user e248205
39passwordeval "pass mutt-wizard-metu_stu"
40tls_starttls off
41
42account xyz
43host mail.yigitsever.com
44port 587
45from yigit@yigitsever.com
46user yigit
47passwordeval "pass mutt-wizard-xyz"
diff --git a/.config/mutt/accounts/1-ceng_argor.muttrc b/.config/mutt/accounts/1-ceng_argor.muttrc
new file mode 100644
index 0000000..1656992
--- /dev/null
+++ b/.config/mutt/accounts/1-ceng_argor.muttrc
@@ -0,0 +1,54 @@
1# vim: filetype=neomuttrc
2# muttrc file for account ceng_argor
3set realname = "Yigit Sever"
4set from = "yigit@ceng.metu.edu.tr"
5set sendmail = "msmtp -a ceng_argor"
6alias me Yigit Sever <yigit@ceng.metu.edu.tr>
7set folder = "/home/yigit/.local/share/mail/ceng_argor"
8set header_cache = /home/yigit/.cache/mutt-wizard/ceng_argor/headers
9set message_cachedir = /home/yigit/.cache/mutt-wizard/ceng_argor/bodies
10set mbox_type = Maildir
11
12bind index,pager gg noop
13bind index,pager g noop
14bind index,pager M noop
15bind index,pager C noop
16bind index gg first-entry
17macro index o "<shell-escape>mailsync -V ceng_argor<enter>" "run mbsync to sync ceng_argor"
18unmailboxes *
19
20set spoolfile = "+INBOX"
21set record = "+Sent"
22set postponed = "+Drafts"
23set trash = "+Trash"
24
25named-mailboxes " 📬 inbox" =INBOX
26named-mailboxes " 📦 archive" "=Archive"
27named-mailboxes " 📜 drafts" "=Drafts"
28named-mailboxes " 🐦 sent" "=Sent"
29named-mailboxes " 🚮 trash" "=Trash"
30named-mailboxes " 📥 tray" "=Tray"
31
32macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox" # mw-autogenerated
33macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox" # mw-autogenerated
34macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox" # mw-autogenerated
35macro index,pager gs "<change-folder>=Sent<enter>" "go to sent" # mw-autogenerated
36macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent" # mw-autogenerated
37macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent" # mw-autogenerated
38macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts" # mw-autogenerated
39macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts" # mw-autogenerated
40macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts" # mw-autogenerated
41macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
42macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
43macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
44macro index,pager gS "<change-folder>=spam<enter>" "go to spam" # mw-autogenerated
45macro index,pager MS ";<save-message>=spam<enter>" "move mail to spam" # mw-autogenerated
46macro index,pager CS ";<copy-message>=spam<enter>" "copy mail to spam" # mw-autogenerated
47macro index,pager ga "<change-folder>=Archive<enter>" "go to archive" # mw-autogenerated
48macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive" # mw-autogenerated
49macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive" # mw-autogenerated
50macro index,pager gy "<change-folder>=Tray<enter>" "go to tray" # mw-autogenerated
51macro index,pager My ";<save-message>=Tray<enter>" "move mail to tray" # mw-autogenerated
52macro index,pager Cy ";<copy-message>=Tray<enter>" "copy mail to tray" # mw-autogenerated
53
54set status_format="Ceng ArGor: %f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P"
diff --git a/.config/mutt/accounts/2-metu_argor.muttrc b/.config/mutt/accounts/2-metu_argor.muttrc
new file mode 100644
index 0000000..cbbb53a
--- /dev/null
+++ b/.config/mutt/accounts/2-metu_argor.muttrc
@@ -0,0 +1,48 @@
1# vim: filetype=neomuttrc
2# muttrc file for account metu_argor
3set realname = "Yigit Sever"
4set from = "ysever@metu.edu.tr"
5set sendmail = "msmtp -a metu_argor"
6alias me Yigit Sever <ysever@metu.edu.tr>
7set folder = "/home/yigit/.local/share/mail/metu_argor"
8set header_cache = /home/yigit/.cache/mutt-wizard/metu_argor/headers
9set message_cachedir = /home/yigit/.cache/mutt-wizard/metu_argor/bodies
10set mbox_type = Maildir
11
12bind index,pager gg noop
13bind index,pager g noop
14bind index,pager M noop
15bind index,pager C noop
16bind index gg first-entry
17macro index o "<shell-escape>mailsync -V metu_argor<enter>" "run mbsync to sync metu_argor"
18unmailboxes *
19
20set spoolfile = "+INBOX"
21set record = "+sent-mail"
22set postponed = "+drafts"
23set trash = "+Trash"
24
25named-mailboxes " 📬 inbox" =INBOX
26named-mailboxes " 📦 archive" "=Archive"
27named-mailboxes " 📜 drafts" "=drafts"
28named-mailboxes " 🐦 sent" "=sent-mail"
29named-mailboxes " 🚮 trash" "=Trash"
30named-mailboxes " 📥 tray" "=Tray"
31
32macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox" # mw-autogenerated
33macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox" # mw-autogenerated
34macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox" # mw-autogenerated
35macro index,pager gs "<change-folder>=sent-mail<enter>" "go to sent" # mw-autogenerated
36macro index,pager Ms ";<save-message>=sent-mail<enter>" "move mail to sent" # mw-autogenerated
37macro index,pager Cs ";<copy-message>=sent-mail<enter>" "copy mail to sent" # mw-autogenerated
38macro index,pager gd "<change-folder>=drafts<enter>" "go to drafts" # mw-autogenerated
39macro index,pager Md ";<save-message>=drafts<enter>" "move mail to drafts" # mw-autogenerated
40macro index,pager Cd ";<copy-message>=drafts<enter>" "copy mail to drafts" # mw-autogenerated
41macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
42macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
43macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
44macro index,pager ga "<change-folder>=Archive<enter>" "go to archive" # mw-autogenerated
45macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive" # mw-autogenerated
46macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive" # mw-autogenerated
47
48set status_format="METU ArGor: %f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P"
diff --git a/.config/mutt/accounts/3-ceng_stu.muttrc b/.config/mutt/accounts/3-ceng_stu.muttrc
new file mode 100644
index 0000000..5e7472c
--- /dev/null
+++ b/.config/mutt/accounts/3-ceng_stu.muttrc
@@ -0,0 +1,51 @@
1# vim: filetype=neomuttrc
2# muttrc file for account ceng_stu
3set realname = "Yigit Sever"
4set from = "e2482057@ceng.metu.edu.tr"
5set sendmail = "msmtp -a ceng_stu"
6alias me Yigit Sever <e2482057@ceng.metu.edu.tr>
7set folder = "/home/yigit/.local/share/mail/ceng_stu"
8set header_cache = /home/yigit/.cache/mutt-wizard/ceng_stu/headers
9set message_cachedir = /home/yigit/.cache/mutt-wizard/ceng_stu/bodies
10set mbox_type = Maildir
11
12bind index,pager gg noop
13bind index,pager g noop
14bind index,pager M noop
15bind index,pager C noop
16bind index gg first-entry
17macro index o "<shell-escape>mailsync -V ceng_stu<enter>" "run mbsync to sync ceng_stu"
18unmailboxes *
19
20set spoolfile = "+INBOX"
21set record = "+Sent"
22set postponed = "+Drafts"
23set trash = "+Trash"
24
25named-mailboxes " 📬 inbox" =INBOX
26named-mailboxes " 📦 archive" "=Archive"
27named-mailboxes " 📜 drafts" "=Drafts"
28named-mailboxes " 🐦 sent" "=Sent"
29named-mailboxes " 🚮 trash" "=Trash"
30named-mailboxes " 📥 tray" "=Tray"
31
32macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox" # mw-autogenerated
33macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox" # mw-autogenerated
34macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox" # mw-autogenerated
35macro index,pager gs "<change-folder>=Sent<enter>" "go to sent" # mw-autogenerated
36macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent" # mw-autogenerated
37macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent" # mw-autogenerated
38macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts" # mw-autogenerated
39macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts" # mw-autogenerated
40macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts" # mw-autogenerated
41macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
42macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
43macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
44macro index,pager gS "<change-folder>=spam<enter>" "go to spam" # mw-autogenerated
45macro index,pager MS ";<save-message>=spam<enter>" "move mail to spam" # mw-autogenerated
46macro index,pager CS ";<copy-message>=spam<enter>" "copy mail to spam" # mw-autogenerated
47macro index,pager ga "<change-folder>=Archive<enter>" "go to archive" # mw-autogenerated
48macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive" # mw-autogenerated
49macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive" # mw-autogenerated
50
51set status_format="Ceng Student: %f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P"
diff --git a/.config/mutt/accounts/4-metu_stu.muttrc b/.config/mutt/accounts/4-metu_stu.muttrc
new file mode 100644
index 0000000..959586d
--- /dev/null
+++ b/.config/mutt/accounts/4-metu_stu.muttrc
@@ -0,0 +1,48 @@
1# vim: filetype=neomuttrc
2# muttrc file for account metu_stu
3set realname = "Yigit Sever"
4set from = "e248205@metu.edu.tr"
5set sendmail = "msmtp -a metu_stu"
6alias me Yigit Sever <e248205@metu.edu.tr>
7set folder = "/home/yigit/.local/share/mail/metu_stu"
8set header_cache = /home/yigit/.cache/mutt-wizard/metu_stu/headers
9set message_cachedir = /home/yigit/.cache/mutt-wizard/metu_stu/bodies
10set mbox_type = Maildir
11
12bind index,pager gg noop
13bind index,pager g noop
14bind index,pager M noop
15bind index,pager C noop
16bind index gg first-entry
17macro index o "<shell-escape>mailsync -V metu_stu<enter>" "run mbsync to sync metu_stu"
18unmailboxes *
19
20set spoolfile = "+INBOX"
21set record = "+sent-mail"
22set postponed = "+drafts"
23set trash = "+Trash"
24
25named-mailboxes " 📬 inbox" =INBOX
26named-mailboxes " 📦 archive" "=Archive"
27named-mailboxes " 📜 drafts" "=drafts"
28named-mailboxes " 🐦 sent" "=sent-mail"
29named-mailboxes " 🚮 trash" "=Trash"
30named-mailboxes " 📥 tray" "=Tray"
31
32macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox" # mw-autogenerated
33macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox" # mw-autogenerated
34macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox" # mw-autogenerated
35macro index,pager gs "<change-folder>=sent-mail<enter>" "go to sent" # mw-autogenerated
36macro index,pager Ms ";<save-message>=sent-mail<enter>" "move mail to sent" # mw-autogenerated
37macro index,pager Cs ";<copy-message>=sent-mail<enter>" "copy mail to sent" # mw-autogenerated
38macro index,pager gd "<change-folder>=drafts<enter>" "go to drafts" # mw-autogenerated
39macro index,pager Md ";<save-message>=drafts<enter>" "move mail to drafts" # mw-autogenerated
40macro index,pager Cd ";<copy-message>=drafts<enter>" "copy mail to drafts" # mw-autogenerated
41macro index,pager gt "<change-folder>=Trash<enter>" "go to trash" # mw-autogenerated
42macro index,pager Mt ";<save-message>=Trash<enter>" "move mail to trash" # mw-autogenerated
43macro index,pager Ct ";<copy-message>=Trash<enter>" "copy mail to trash" # mw-autogenerated
44macro index,pager ga "<change-folder>=Archive<enter>" "go to archive" # mw-autogenerated
45macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive" # mw-autogenerated
46macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive" # mw-autogenerated
47
48set status_format="METU Student: %f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P"
diff --git a/.config/mutt/accounts/5-xyz.muttrc b/.config/mutt/accounts/5-xyz.muttrc
new file mode 100644
index 0000000..f4b5432
--- /dev/null
+++ b/.config/mutt/accounts/5-xyz.muttrc
@@ -0,0 +1,53 @@
1# vim: filetype=neomuttrc
2# muttrc file for account xyz
3set realname = "yigit sever"
4set from = "yigit@yigitsever.com"
5set sendmail = "msmtp -a xyz"
6alias me yigit sever <yigit@yigitsever.com>
7set folder = "/home/yigit/.local/share/mail/xyz"
8set header_cache = /home/yigit/.cache/mutt-wizard/xyz/headers
9set message_cachedir = /home/yigit/.cache/mutt-wizard/xyz/bodies
10set mbox_type = Maildir
11
12bind index,pager gg noop
13bind index,pager g noop
14bind index,pager M noop
15bind index,pager C noop
16bind index gg first-entry
17macro index o "<shell-escape>mailsync -V xyz<enter>" "run mbsync to sync xyz"
18unmailboxes *
19
20set spoolfile = "+INBOX"
21set record = "+Sent"
22set postponed = "+Drafts"
23set trash = "+Trash"
24
25named-mailboxes " 📬 inbox" =INBOX
26named-mailboxes " 📦 archive" "=Archive"
27named-mailboxes " 📜 drafts" "=Drafts"
28named-mailboxes " 🐦 sent" "=Sent"
29named-mailboxes " 🚮 junk" "=Junk"
30named-mailboxes " ----- lists ----- " "=."
31named-mailboxes " 🔢 l/crypto" "=lists/crypto"
32named-mailboxes " 📅 l/remind" "=lists/remind"
33
34macro index,pager gi "<change-folder>=INBOX<enter>" "go to inbox" # mw-autogenerated
35macro index,pager Mi ";<save-message>=INBOX<enter>" "move mail to inbox" # mw-autogenerated
36macro index,pager Ci ";<copy-message>=INBOX<enter>" "copy mail to inbox" # mw-autogenerated
37macro index,pager gs "<change-folder>=Sent<enter>" "go to sent" # mw-autogenerated
38macro index,pager Ms ";<save-message>=Sent<enter>" "move mail to sent" # mw-autogenerated
39macro index,pager Cs ";<copy-message>=Sent<enter>" "copy mail to sent" # mw-autogenerated
40macro index,pager gd "<change-folder>=Drafts<enter>" "go to drafts" # mw-autogenerated
41macro index,pager Md ";<save-message>=Drafts<enter>" "move mail to drafts" # mw-autogenerated
42macro index,pager Cd ";<copy-message>=Drafts<enter>" "copy mail to drafts" # mw-autogenerated
43macro index,pager gj "<change-folder>=Junk<enter>" "go to junk" # mw-autogenerated
44macro index,pager Mj ";<save-message>=Junk<enter>" "move mail to junk" # mw-autogenerated
45macro index,pager Cj ";<copy-message>=Junk<enter>" "copy mail to junk" # mw-autogenerated
46macro index,pager ga "<change-folder>=Archive<enter>" "go to archive" # mw-autogenerated
47macro index,pager Ma ";<save-message>=Archive<enter>" "move mail to archive" # mw-autogenerated
48macro index,pager Ca ";<copy-message>=Archive<enter>" "copy mail to archive" # mw-autogenerated
49macro index,pager gc "<change-folder>=crypto<enter>" "go to crypto"
50macro index,pager Mc ";<save-message>=crypto<enter>" "move mail to crypto"
51macro index,pager Cc ";<copy-message>=crypto<enter>" "copy mail to crypto"
52
53set status_format="yigitsever.com: %f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P"
diff --git a/.config/mutt/muttrc b/.config/mutt/muttrc
index 6bb2b11..55762c0 100644
--- a/.config/mutt/muttrc
+++ b/.config/mutt/muttrc
@@ -1,15 +1,160 @@
1# vim: filetype=neomuttrc 1# vim: filetype=neomuttrc
2source /usr/local/share/mutt-wizard/mutt-wizard.muttrc # mw-autogenerated 2############
3source /home/yigit/.config/mutt/accounts/1-ceng_argor.muttrc # mw-autogenerated 3# stolen #
4macro index,pager i1 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/1-ceng_argor.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to yigit@ceng.metu.edu.tr" # mw-autogenerated 4############
5macro index,pager i2 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/2-metu_argor.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to ysever@metu.edu.tr" # mw-autogenerated 5set mailcap_path = /home/yigit/.config/mutt/mailcap
6macro index,pager i3 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/3-ceng_stu.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to e2482057@ceng.metu.edu.tr" # mw-autogenerated 6set date_format="%y/%m/%d %I:%M%p"
7macro index,pager i4 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/4-metu_stu.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to e248205@metu.edu.tr" # mw-autogenerated 7set smtp_authenticators = 'gssapi:login'
8macro index,pager i5 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/5-xyz.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to yigit@yigitsever.com" # mw-autogenerated 8set rfc2047_parameters = yes
9set mark_old = no # Unread mail stay unread until read
10set mime_forward = yes # attachments are forwarded with mail
11set fast_reply # skip to compose when replying
12set fcc_attach # save attachments with the body
13set forward_format = "Fwd: %s" # format of subject when forwarding
14set forward_quote # include message in forwards
15set reverse_name # reply as whomever it was to
16set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example)
17auto_view text/html # automatically show html (mailcap uses w3m)
18auto_view application/pgp-encrypted
19alternative_order text/plain text/enriched text/html
20bind index,pager i noop
21bind index,pager g noop
22bind index \Cf noop
23
24# General rebindings
25bind index j next-entry
26bind index k previous-entry
27bind attach <return> view-mailcap
28bind attach l view-mailcap
29bind editor <space> noop
30bind index G last-entry
31bind index gg first-entry
32bind pager,attach h exit
33bind pager j next-line
34bind pager k previous-line
35bind pager l view-attachments
36bind index D delete-message
37bind index U undelete-message
38bind index L limit
39bind index h noop
40bind index l display-message
41bind index,query <space> tag-entry
42macro browser h '<change-dir><kill-line>..<enter>' "Go to parent folder"
43bind index,pager H view-raw-message
44bind browser l select-entry
45bind pager,browser gg top-page
46bind pager,browser G bottom-page
47bind index,pager,browser d half-down
48bind index,pager,browser u half-up
49bind index,pager S sync-mailbox
50bind index,pager R group-reply
51bind index \031 previous-undeleted # Mouse wheel
52bind index \005 next-undeleted # Mouse wheel
53bind pager \031 previous-line # Mouse wheel
54bind pager \005 next-line # Mouse wheel
55bind editor <Tab> complete-query
56
57macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
58macro index O "<shell-escape>mbsync -a<enter>" "run mbsync to sync all mail"
59macro 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"
60macro index a "<limit>all\n" "show all messages (undo limit)"
61
62# Sidebar mappings
63set sidebar_visible = yes
64set sidebar_width = 20
65set sidebar_short_path = yes
66set sidebar_next_new_wrap = yes
67set mail_check_stats
68bind index,pager \Ck sidebar-prev
69bind index,pager \Cj sidebar-next
70bind index,pager \Co sidebar-open
71bind index,pager \Cp sidebar-prev-new
72bind index,pager \Cn sidebar-next-new
73bind index,pager B sidebar-toggle-visible
74
75# Default index colors:
76color index yellow default '.*'
77color index_author red default '.*'
78color index_number blue default
79color index_subject cyan default '.*'
80
81# New mail is boldened:
82color index brightyellow black "~N"
83color index_author brightred black "~N"
84color index_subject brightcyan black "~N"
85
86# Tagged mail is highlighted:
87color index brightyellow blue "~T"
88color index_author brightred blue "~T"
89color index_subject brightcyan blue "~T"
90
91# Other colors and aesthetic settings:
92mono bold bold
93mono underline underline
94mono indicator reverse
95mono error bold
96color normal default default
97color indicator brightblack white
98color sidebar_highlight red default
99color sidebar_divider brightblack black
100color sidebar_flagged red black
101color sidebar_new green black
102color normal brightyellow default
103color error red default
104color tilde black default
105color message cyan default
106color markers red white
107color attachment white default
108color search brightmagenta default
109color status brightyellow black
110color hdrdefault brightgreen default
111color quoted green default
112color quoted1 blue default
113color quoted2 cyan default
114color quoted3 yellow default
115color quoted4 red default
116color quoted5 brightred default
117color signature brightgreen default
118color bold black default
119color underline black default
120color normal default default
121
122# Regex highlighting:
123color header blue default ".*"
124color header brightmagenta default "^(From)"
125color header brightcyan default "^(Subject)"
126color header brightwhite default "^(CC|BCC)"
127color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
128color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
129color body green default "\`[^\`]*\`" # Green text between ` and `
130color body brightblue default "^# \.*" # Headings as bold blue
131color body brightcyan default "^## \.*" # Subheadings as bold cyan
132color body brightgreen default "^### \.*" # Subsubheadings as bold green
133color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
134color body brightcyan default "[;:][-o][)/(|]" # emoticons
135color body brightcyan default "[;:][)(|]" # emoticons
136color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
137color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
138color body red default "(BAD signature)"
139color body cyan default "(Good signature)"
140color body brightblack default "^gpg: Good signature .*"
141color body brightyellow default "^gpg: "
142color body brightyellow red "^gpg: BAD signature from.*"
143mono body bold "^gpg: Good signature"
144mono body bold "^gpg: BAD signature from.*"
145color 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<>\"]"
9 146
10bind generic z noop 147bind generic z noop
11bind generic Z noop 148bind generic Z noop
12 149
150source /home/yigit/.config/mutt/accounts/1-ceng_argor.muttrc
151macro index,pager i1 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/1-ceng_argor.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to yigit@ceng.metu.edu.tr"
152macro index,pager i2 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/2-metu_argor.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to ysever@metu.edu.tr"
153macro index,pager i3 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/3-ceng_stu.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to e2482057@ceng.metu.edu.tr"
154macro index,pager i4 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/4-metu_stu.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to e248205@metu.edu.tr"
155macro index,pager i5 '<sync-mailbox><enter-command>source /home/yigit/.config/mutt/accounts/5-xyz.muttrc<enter><change-folder>!<enter>;<check-stats>' "switch to yigit@yigitsever.com"
156
157# to set vim autocommands
13set tmpdir="/tmp/neomutt" 158set tmpdir="/tmp/neomutt"
14 159
15# character set for outgoing messages 160# character set for outgoing messages
@@ -64,20 +209,12 @@ set sleep_time=0
64set abort_nosubject=no 209set abort_nosubject=no
65set abort_unmodified=no 210set abort_unmodified=no
66 211
67# # Cache message headers here. This takes very little space and makes opening large folders much faster.
68# # See header-caching
69# # Big conf file does this for us, ~y
70# set header_cache=~/.config/mutt/cache/headers/
71
72# # Make things faster at the cost of a negligible amount of disk space.
73# # See <file:///usr/share/doc/neomutt/manual.html#body-caching>.
74# # Big conf file does this for us
75# set message_cachedir=~/.config/mutt/cache/
76
77# TODO: maybe check out <https://github.com/pimutils/mates.rs>. 212# TODO: maybe check out <https://github.com/pimutils/mates.rs>.
78set query_command="khard email --parsable '%s'" 213set query_command="khard email --parsable '%s'"
79# The editor menu is "command-line mode", i.e., what you when hitting colon. 214# The editor menu is "command-line mode", i.e., what you when hitting colon.
80# See <file:///usr/share/doc/neomutt/manual.html#editor-map>. 215# See <file:///usr/share/doc/neomutt/manual.html#editor-map>.
216unset query_command
217# TODO: and we are immediately unsetting it, dunno why <12-10-21, yigit> #
81 218
82# When a message contains both plain text and HTML, prefer viewing plain text. 219# When a message contains both plain text and HTML, prefer viewing plain text.
83alternative_order text/plain text/html 220alternative_order text/plain text/html
@@ -87,8 +224,8 @@ bind editor <Tab> complete-query
87# The format string reduces the amount of information compared to the default and doesn't use hyphens for padding. 224# The format string reduces the amount of information compared to the default and doesn't use hyphens for padding.
88# See <http://www.mutt.org/doc/manual/#status-format>. 225# See <http://www.mutt.org/doc/manual/#status-format>.
89# set status_format="%f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P" 226# set status_format="%f%?V?/%V? [%m%?M?, %M shown?%?n?, %n new?%?o?, %o old?%?d?, %d deleted?%?F?, %F flagged?%?t?, %t tagged?%?p?, %p postponed?] %> %P"
90# set index_format="hi"
91set index_format="%2C %Z %?X?A& ? %[%e %b %y %R] %-15.15F %s (%-4.4c)" 227set index_format="%2C %Z %?X?A& ? %[%e %b %y %R] %-15.15F %s (%-4.4c)"
228set sidebar_format = "%D%?F? [%F]?%* %?N?%N/? %?S?%S?"
92 229
93# See <file:///usr/share/doc/neomutt/manual.html#compose-format>). 230# See <file:///usr/share/doc/neomutt/manual.html#compose-format>).
94# Also get rid of the hyphens again. 231# Also get rid of the hyphens again.
@@ -106,8 +243,6 @@ set crypt_opportunistic_encrypt = no
106set pgp_self_encrypt = yes 243set pgp_self_encrypt = yes
107set pgp_default_key = 198466C2F5664940F73A1715B87B63C533C38A88 244set pgp_default_key = 198466C2F5664940F73A1715B87B63C533C38A88
108 245
109unset query_command
110
111macro index,pager A \ 246macro index,pager A \
112 "<pipe-message>khard add-email<return>" \ 247 "<pipe-message>khard add-email<return>" \
113 "add the sender email address to khard" 248 "add the sender email address to khard"
@@ -145,5 +280,3 @@ color index_flags color239 default "EDAS"
145color index_subject color239 default "~f @igi-global.com" 280color index_subject color239 default "~f @igi-global.com"
146color index_author color239 default "~f @igi-global.com" 281color index_author color239 default "~f @igi-global.com"
147color index_flags color239 default "~f @igi-global.com" 282color index_flags color239 default "~f @igi-global.com"
148
149set sidebar_format = "%D%?F? [%F]?%* %?N?%N/? %?S?%S?"
diff --git a/.local/bin/mailsync b/.local/bin/mailsync
new file mode 100755
index 0000000..ae0801c
--- /dev/null
+++ b/.local/bin/mailsync
@@ -0,0 +1,76 @@
1#!/bin/sh
2
3# Sync mail and give notification if there is new mail.
4
5# Run only if user logged in (prevent cron errors)
6pgrep -u "${USER:=$LOGNAME}" >/dev/null || { echo "$USER not logged in; sync will not run."; exit ;}
7# Run only if not already running in other instance
8pgrep -x mbsync >/dev/null && { notify-send --app-name="mailsync" "mbsync is already running" "you should fix this" ; exit ;}
9
10if [[ -f "$HOME/.local/share/.dnd" ]]; then
11 echo "do not disturb is on"
12 exit
13fi
14
15# Checks for internet connection and set notification script.
16ping -q -c 1 1.1.1.1 > /dev/null || ping -q -c 1 1.0.0.1 > /dev/null || ping -q -c 1 example.org || { echo "No internet connection detected."; exit ;}
17command -v notify-send >/dev/null || echo "Note that \`libnotify\` or \`libnotify-send\` should be installed for pop-up mail notifications with this script."
18
19# Required to display notifications if run as a cronjob:
20export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus
21export DISPLAY=:0.0
22
23# For individual configurations:
24[ -d "$HOME/.local/share/password-store" ] && export PASSWORD_STORE_DIR="$HOME/.local/share/password-store"
25
26# Settings are different for MacOS (Darwin) systems.
27if [ "$(uname)" = "Darwin" ]; then
28 notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $account\"" && sleep 2 ;}
29 messageinfo() { osascript -e "display notification with title \"📧 $from\" subtitle \"$subject\"" ;}
30else
31 notify() { notify-send --icon="mail_new" --app-name="excerpt" "\`$1\`" "📬 $2 new mail(s)" ;}
32 messageinfo() { notify-send --icon="mail-mark-unread" --app-name="mutt" "📧 $from" "$subject" ;}
33fi
34
35# Check account for new mail. Notify if there is new content.
36syncandnotify() {
37 acc="$(echo "$account" | sed "s/.*\///")"
38 if [ -z "$opts" ]; then mbsync "$acc"; else mbsync "$opts" "$acc"; fi
39 new=$(find "$HOME/.local/share/mail/$acc/INBOX/new/" "$HOME/.local/share/mail/$acc/Inbox/new/" "$HOME/.local/share/mail/$acc/inbox/new/" -type f -newer "$HOME/.config/mutt/.mailsynclastrun" 2> /dev/null)
40 newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
41 if [ "$newcount" -gt "0" ]; then
42 notify "$acc" "$newcount" &
43 for file in $new; do
44 # Extract subject and sender from mail.
45 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:]]*$//')
46 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')
47 messageinfo &
48 done
49 fi
50}
51
52# Sync accounts passed as argument or all.
53if [ "$#" -eq "0" ]; then
54 accounts="$(awk '/^Channel/ {print $2}' "$HOME/.mbsyncrc")"
55else
56 for arg in "$@"; do
57 [ "${arg%${arg#?}}" = '-' ] && opts="${opts:+${opts} }${arg}" && shift 1
58 done
59 accounts=$*
60fi
61
62# ( kill -46 "$(pidof "${STATUSBAR:-dwmblocks}")" >/dev/null 2>&1 ) 2>/dev/null
63
64# Parallelize multiple accounts
65for account in $accounts
66do
67 syncandnotify &
68done
69
70wait
71# ( kill -46 "$(pidof "${STATUSBAR:-dwmblocks}")" >/dev/null 2>&1 ) 2>/dev/null
72
73notmuch new 2>/dev/null
74
75#Create a touch file that indicates the time of the last run of mailsync
76touch "$HOME/.config/mutt/.mailsynclastrun"
diff --git a/.local/bin/openfile b/.local/bin/openfile
new file mode 100755
index 0000000..cf3c6c3
--- /dev/null
+++ b/.local/bin/openfile
@@ -0,0 +1,10 @@
1#!/bin/sh
2
3# Helps open a file with xdg-open from mutt in a external program without weird side effects.
4tempdir="${XDG_CACHE_HOME:-$HOME/.cache}/mutt-wizard/files"
5file="$tempdir/$(basename "$1")"
6[ "$(uname)" = "Darwin" ] && opener="open" || opener="setsid -f xdg-open"
7mkdir -p "$tempdir"
8cp -f "$1" "$file"
9$opener "$file" >/dev/null 2>&1
10find "${tempdir:?}" -mtime +1 -type f -delete
diff --git a/.mbsyncrc b/.mbsyncrc
new file mode 100644
index 0000000..703c2f0
--- /dev/null
+++ b/.mbsyncrc
@@ -0,0 +1,131 @@
1IMAPStore ceng_argor-remote
2Host imap.ceng.metu.edu.tr
3Port 993
4User yigit
5PassCmd "pass mutt-wizard-ceng_argor"
6AuthMechs LOGIN
7SSLType IMAPS
8CertificateFile /etc/ssl/certs/ca-certificates.crt
9
10MaildirStore ceng_argor-local
11Subfolders Verbatim
12Path ~/.local/share/mail/ceng_argor/
13Inbox ~/.local/share/mail/ceng_argor/INBOX
14Flatten .
15
16Channel ceng_argor
17Expunge Both
18Far :ceng_argor-remote:
19Near :ceng_argor-local:
20Patterns * !"[Gmail]/All Mail"
21Create Both
22SyncState *
23MaxMessages 0
24ExpireUnread no
25# End profile
26
27IMAPStore metu_argor-remote
28Host imap.metu.edu.tr
29Port 993
30User ysever
31PassCmd "pass mutt-wizard-metu_argor"
32AuthMechs LOGIN
33SSLType IMAPS
34CertificateFile /etc/ssl/certs/ca-certificates.crt
35
36MaildirStore metu_argor-local
37Subfolders Verbatim
38Path ~/.local/share/mail/metu_argor/
39Inbox ~/.local/share/mail/metu_argor/INBOX
40Flatten .
41
42Channel metu_argor
43Expunge Both
44Far :metu_argor-remote:
45Near :metu_argor-local:
46Patterns * !"[Gmail]/All Mail"
47Create Both
48SyncState *
49MaxMessages 0
50ExpireUnread no
51# End profile
52
53IMAPStore ceng_stu-remote
54Host imap.ceng.metu.edu.tr
55Port 993
56User e2482057
57PassCmd "pass mutt-wizard-ceng_stu"
58AuthMechs LOGIN
59SSLType IMAPS
60CertificateFile /etc/ssl/certs/ca-certificates.crt
61
62MaildirStore ceng_stu-local
63Subfolders Verbatim
64Path ~/.local/share/mail/ceng_stu/
65Inbox ~/.local/share/mail/ceng_stu/INBOX
66Flatten .
67
68Channel ceng_stu
69Expunge Both
70Far :ceng_stu-remote:
71Near :ceng_stu-local:
72Patterns * !"[Gmail]/All Mail"
73Create Both
74SyncState *
75MaxMessages 0
76ExpireUnread no
77# End profile
78
79IMAPStore metu_stu-remote
80Host imap.metu.edu.tr
81Port 993
82User e248205
83PassCmd "pass mutt-wizard-metu_stu"
84AuthMechs LOGIN
85SSLType IMAPS
86CertificateFile /etc/ssl/certs/ca-certificates.crt
87
88MaildirStore metu_stu-local
89Subfolders Verbatim
90Path ~/.local/share/mail/metu_stu/
91Inbox ~/.local/share/mail/metu_stu/INBOX
92Flatten .
93
94Channel metu_stu
95Expunge Both
96Far :metu_stu-remote:
97Near :metu_stu-local:
98Patterns * !"[Gmail]/All Mail"
99Create Both
100SyncState *
101MaxMessages 0
102ExpireUnread no
103# End profile
104
105
106IMAPStore xyz-remote
107Host mail.yigitsever.com
108Port 993
109User yigit
110PassCmd "pass mutt-wizard-xyz"
111AuthMechs LOGIN
112SSLType IMAPS
113CertificateFile /etc/ssl/certs/ca-certificates.crt
114
115MaildirStore xyz-local
116Subfolders Verbatim
117Path ~/.local/share/mail/xyz/
118Inbox ~/.local/share/mail/xyz/INBOX
119
120Channel xyz
121Expunge Both
122Far :xyz-remote:
123Near :xyz-local:
124Remove Both
125Patterns * !"[Gmail]/All Mail"
126Create Both
127SyncState *
128MaxMessages 0
129ExpireUnread no
130# End profile
131