1384 lines
49 KiB
Org Mode
1384 lines
49 KiB
Org Mode
#+TITLE: Mail Configuration
|
|
|
|
* Synchronize Mailboxes - Mbsync
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.mbsyncrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
http://isync.sourceforge.net/
|
|
|
|
** Global Defaults
|
|
#+BEGIN_SRC conf
|
|
# Automatically create missing mailboxes, both locally and on the server
|
|
Create Both
|
|
# Save the synchronization state files in the relevant directory
|
|
SyncState *
|
|
# Permanently remove all messages [on the Master/Slave] marked for deletion.
|
|
Expunge Both
|
|
#+END_SRC
|
|
|
|
** Gmail Account
|
|
#+BEGIN_SRC conf
|
|
IMAPAccount gmail
|
|
Host imap.gmail.com
|
|
User dehaeze.thomas@gmail.com
|
|
PassCmd "pass email/dehaeze.thomas@gmail.com"
|
|
SSLType IMAPS
|
|
AuthMechs LOGIN
|
|
CertificateFile /etc/ssl/certs/ca-certificates.crt
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
IMAPStore gmail-remote
|
|
Account gmail
|
|
|
|
MaildirStore gmail-local
|
|
Path ~/.mail/gmail/
|
|
Inbox ~/.mail/gmail/Inbox
|
|
|
|
Channel gmail-Home
|
|
Master :gmail-remote:"INBOX"
|
|
Slave :gmail-local:Inbox
|
|
|
|
Channel gmail-Drafts
|
|
Master :gmail-remote:"[Gmail]/Drafts"
|
|
Slave :gmail-local:Drafts
|
|
|
|
Channel gmail-Sent
|
|
Master :gmail-remote:"[Gmail]/Sent Mail"
|
|
Slave :gmail-local:Sent
|
|
|
|
Channel gmail-Trash
|
|
Master :gmail-remote:"[Gmail]/Trash"
|
|
Slave :gmail-local:Trash
|
|
|
|
Channel gmail-All
|
|
Master :gmail-remote:"[Gmail]/All Mail"
|
|
Slave :gmail-local:Archive
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
# Catch-all for everything else: note that the `Patterns` have to exclude both
|
|
# the remote and local names for all the folders we want to exclude (except
|
|
# "INBOX", which is special-cased, it would seem).
|
|
Channel gmail
|
|
Master :gmail-remote:
|
|
Slave :gmail-local:
|
|
# Exclude everything under the internal [Gmail] folder, except the interesting folders
|
|
Patterns *
|
|
Patterns !INBOX
|
|
Patterns ![Gmail]*
|
|
Patterns !Archive
|
|
Patterns !Drafts
|
|
Patterns !Sent Mail
|
|
Patterns !Trash
|
|
Patterns !Spam
|
|
Patterns !Starred
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
# For doing a quick sync of just the INBOX with `mbsync gmail-download`.
|
|
Channel gmail-download
|
|
Master :gmail-remote:"INBOX"
|
|
Slave :gmail-local:Inbox
|
|
Create Slave
|
|
Expunge Slave
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
** ESRF Account
|
|
#+BEGIN_SRC conf
|
|
IMAPAccount esrf
|
|
Host imaps.esrf.fr
|
|
User dehaeze
|
|
PassCmd "pass email/thomas.dehaeze@esrf.fr"
|
|
SSLType IMAPS
|
|
AuthMechs LOGIN
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
IMAPStore esrf-remote
|
|
Account esrf
|
|
|
|
MaildirStore esrf-local
|
|
Path ~/.mail/esrf/
|
|
Inbox ~/.mail/esrf/Inbox
|
|
|
|
Channel esrf-Home
|
|
Master :esrf-remote:"Inbox"
|
|
Slave :esrf-local:Inbox
|
|
|
|
Channel esrf-Drafts
|
|
Master :esrf-remote:"Drafts"
|
|
Slave :esrf-local:Drafts
|
|
|
|
Channel esrf-Archive
|
|
Master :esrf-remote:"Archive"
|
|
Slave :esrf-local:Archive
|
|
|
|
Channel esrf-Sent
|
|
Master :esrf-remote:"Sent"
|
|
Slave :esrf-local:Sent
|
|
|
|
Channel esrf-Trash
|
|
Master :esrf-remote:"Trash"
|
|
Slave :esrf-local:Trash
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
Channel esrf
|
|
Master :esrf-remote:
|
|
Slave :esrf-local:
|
|
#+END_SRC
|
|
|
|
For doing a quick sync of just the INBOX with `mbsync esrf-download`.
|
|
#+BEGIN_SRC conf
|
|
Channel esrf-download
|
|
Master :esrf-remote:"INBOX"
|
|
Slave :esrf-local:Inbox
|
|
Create Slave
|
|
Expunge Slave
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
** ULG Account
|
|
#+BEGIN_SRC conf
|
|
IMAPAccount ulg
|
|
Host mail.ulg.ac.be
|
|
User thomas.dehaeze@doct.uliege.be
|
|
PassCmd "pass email/thomas.dehaeze@doct.uliege.be"
|
|
SSLType IMAPS
|
|
AuthMechs LOGIN
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
IMAPStore ulg-remote
|
|
Account ulg
|
|
|
|
MaildirStore ulg-local
|
|
Path ~/.mail/ulg/
|
|
Inbox ~/.mail/ulg/Inbox
|
|
|
|
Channel ulg-Home
|
|
Master :ulg-remote:"Inbox"
|
|
Slave :ulg-local:Inbox
|
|
|
|
Channel ulg-Drafts
|
|
Master :ulg-remote:"Drafts"
|
|
Slave :ulg-local:Drafts
|
|
|
|
Channel ulg-Archive
|
|
Master :ulg-remote:"Archive"
|
|
Slave :ulg-local:Archive
|
|
|
|
Channel ulg-Sent
|
|
Master :ulg-remote:"Sent"
|
|
Slave :ulg-local:Sent
|
|
|
|
Channel ulg-Trash
|
|
Master :ulg-remote:"Trash"
|
|
Slave :ulg-local:Trash
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
Channel ulg
|
|
Master :ulg-remote:
|
|
Slave :ulg-local:
|
|
#+END_SRC
|
|
|
|
For doing a quick sync of just the INBOX with `mbsync ulg-download`.
|
|
#+BEGIN_SRC conf
|
|
Channel ulg-download
|
|
Master :ulg-remote:"Inbox"
|
|
Slave :ulg-local:Inbox
|
|
Create Slave
|
|
Expunge Slave
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
* Send Mails - Msmtp
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.msmtprc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
https://marlam.de/msmtp/
|
|
|
|
** Defaults
|
|
#+BEGIN_SRC conf
|
|
defaults
|
|
auth on
|
|
tls on
|
|
tls_certcheck off
|
|
#+END_SRC
|
|
|
|
** Gmail Account
|
|
#+BEGIN_SRC conf
|
|
account gmail
|
|
host smtp.gmail.com
|
|
port 587
|
|
protocol smtp
|
|
from dehaeze.thomas@gmail.com
|
|
user dehaeze.thomas@gmail.com
|
|
passwordeval "pass email/dehaeze.thomas@gmail.com"
|
|
#+END_SRC
|
|
|
|
** ESRF Account
|
|
#+BEGIN_SRC conf
|
|
account esrf
|
|
host smtps.esrf.fr
|
|
port 465
|
|
protocol smtp
|
|
from thomas.dehaeze@esrf.fr
|
|
user dehaeze
|
|
tls_starttls off
|
|
passwordeval "pass email/thomas.dehaeze@esrf.fr"
|
|
#+END_SRC
|
|
|
|
** ULG Account
|
|
#+BEGIN_SRC conf
|
|
account ulg
|
|
host smtp.ulg.ac.be
|
|
port 587
|
|
protocol smtp
|
|
from thomas.dehaeze@doct.uliege.be
|
|
user s177313
|
|
tls_starttls on
|
|
passwordeval "pass email/thomas.dehaeze@doct.uliege.be"
|
|
#+END_SRC
|
|
|
|
** Default Account
|
|
#+BEGIN_SRC conf
|
|
account default : gmail
|
|
#+END_SRC
|
|
|
|
* TODO Mail Indexer - Mu
|
|
http://www.djcbsoftware.nl/code/mu/
|
|
|
|
** Cheatsheet
|
|
http://www.djcbsoftware.nl/code/mu/cheatsheet.html
|
|
|
|
* Mail Client - NeoMutt
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.config/neomutt/neomuttrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
https://neomutt.org/
|
|
|
|
Documentation:
|
|
#+begin_src bash :results none :exports code
|
|
man neomutt
|
|
man neomuttrc
|
|
#+end_src
|
|
|
|
** Bindings
|
|
*** Unding all the key bindings
|
|
#+begin_src conf
|
|
bind generic,pager,editor,index a noop
|
|
bind generic,pager,editor,index b noop
|
|
bind generic,pager,editor,index c noop
|
|
bind generic,pager,editor,index d noop
|
|
bind generic,pager,editor,index e noop
|
|
bind generic,pager,editor,index f noop
|
|
bind generic,pager,editor,index g noop
|
|
bind generic,pager,editor,index h noop
|
|
bind generic,pager,editor,index i noop
|
|
bind generic,pager,editor,index j noop
|
|
bind generic,pager,editor,index k noop
|
|
bind generic,pager,editor,index l noop
|
|
bind generic,pager,editor,index m noop
|
|
bind generic,pager,editor,index n noop
|
|
bind generic,pager,editor,index o noop
|
|
bind generic,pager,editor,index p noop
|
|
bind generic,pager,editor,index q noop
|
|
bind generic,pager,editor,index r noop
|
|
bind generic,pager,editor,index s noop
|
|
bind generic,pager,editor,index t noop
|
|
bind generic,pager,editor,index u noop
|
|
bind generic,pager,editor,index v noop
|
|
bind generic,pager,editor,index w noop
|
|
bind generic,pager,editor,index x noop
|
|
bind generic,pager,editor,index y noop
|
|
bind generic,pager,editor,index z noop
|
|
bind generic,pager,editor,index A noop
|
|
bind generic,pager,editor,index B noop
|
|
bind generic,pager,editor,index C noop
|
|
bind generic,pager,editor,index D noop
|
|
bind generic,pager,editor,index E noop
|
|
bind generic,pager,editor,index F noop
|
|
bind generic,pager,editor,index G noop
|
|
bind generic,pager,editor,index H noop
|
|
bind generic,pager,editor,index I noop
|
|
bind generic,pager,editor,index J noop
|
|
bind generic,pager,editor,index K noop
|
|
bind generic,pager,editor,index L noop
|
|
bind generic,pager,editor,index M noop
|
|
bind generic,pager,editor,index N noop
|
|
bind generic,pager,editor,index O noop
|
|
bind generic,pager,editor,index P noop
|
|
bind generic,pager,editor,index Q noop
|
|
bind generic,pager,editor,index R noop
|
|
bind generic,pager,editor,index S noop
|
|
bind generic,pager,editor,index T noop
|
|
bind generic,pager,editor,index U noop
|
|
bind generic,pager,editor,index V noop
|
|
bind generic,pager,editor,index W noop
|
|
bind generic,pager,editor,index X noop
|
|
bind generic,pager,editor,index Y noop
|
|
bind generic,pager,editor,index Z noop
|
|
|
|
bind generic,pager,editor,index <Tab> noop
|
|
bind generic,pager,editor,index <Space> noop
|
|
bind generic,pager,editor,index <PageUp> noop
|
|
bind generic,pager,editor,index <PageDown> noop
|
|
bind generic,pager,editor,index <Home> noop
|
|
bind generic,pager,editor,index <End> noop
|
|
bind generic,pager,editor,index <Insert> noop
|
|
bind generic,pager,editor,index <Delete> noop
|
|
bind generic,pager,editor,index <Up> noop
|
|
bind generic,pager,editor,index <Down> noop
|
|
bind generic,pager,editor,index <Left> noop
|
|
bind generic,pager,editor,index <Right> noop
|
|
bind generic,pager,editor,index <Enter> noop
|
|
bind generic,pager,editor,index <Return> noop
|
|
|
|
bind generic,pager,editor,index | noop
|
|
|
|
bind generic,pager,editor,index 1 noop
|
|
bind generic,pager,editor,index 2 noop
|
|
bind generic,pager,editor,index 3 noop
|
|
bind generic,pager,editor,index 4 noop
|
|
bind generic,pager,editor,index 5 noop
|
|
bind generic,pager,editor,index 6 noop
|
|
bind generic,pager,editor,index 7 noop
|
|
bind generic,pager,editor,index 8 noop
|
|
bind generic,pager,editor,index 9 noop
|
|
bind generic,pager,editor,index 0 noop
|
|
bind generic,pager,editor,index ! noop
|
|
bind generic,pager,editor,index @ noop
|
|
bind generic,pager,editor,index $ noop
|
|
bind generic,pager,editor,index % noop
|
|
bind generic,pager,editor,index ^ noop
|
|
bind generic,pager,editor,index & noop
|
|
bind generic,pager,editor,index * noop
|
|
bind generic,pager,editor,index ( noop
|
|
bind generic,pager,editor,index ) noop
|
|
|
|
bind generic,pager,editor,index \Ca noop
|
|
bind generic,pager,editor,index \Cb noop
|
|
bind generic,pager,editor,index \Cc noop
|
|
bind generic,pager,editor,index \Cd noop
|
|
bind generic,pager,editor,index \Ce noop
|
|
bind generic,pager,editor,index \Cf noop
|
|
bind generic,pager,editor,index \Cg noop
|
|
bind generic,pager,editor,index \Ch noop
|
|
bind generic,pager,editor,index \Ci noop
|
|
bind generic,pager,editor,index \Cj noop
|
|
bind generic,pager,editor,index \Ck noop
|
|
bind generic,pager,editor,index \Cl noop
|
|
bind generic,pager,editor,index \Cm noop
|
|
bind generic,pager,editor,index \Cn noop
|
|
bind generic,pager,editor,index \Co noop
|
|
bind generic,pager,editor,index \Cp noop
|
|
bind generic,pager,editor,index \Cq noop
|
|
bind generic,pager,editor,index \Cr noop
|
|
bind generic,pager,editor,index \Cs noop
|
|
bind generic,pager,editor,index \Ct noop
|
|
bind generic,pager,editor,index \Cu noop
|
|
bind generic,pager,editor,index \Cv noop
|
|
bind generic,pager,editor,index \Cw noop
|
|
bind generic,pager,editor,index \Cx noop
|
|
bind generic,pager,editor,index \Cy noop
|
|
bind generic,pager,editor,index \Cz noop
|
|
bind generic,pager,editor,index \CA noop
|
|
bind generic,pager,editor,index \CB noop
|
|
bind generic,pager,editor,index \CC noop
|
|
bind generic,pager,editor,index \CD noop
|
|
bind generic,pager,editor,index \CE noop
|
|
bind generic,pager,editor,index \CF noop
|
|
bind generic,pager,editor,index \CG noop
|
|
bind generic,pager,editor,index \CH noop
|
|
bind generic,pager,editor,index \CI noop
|
|
bind generic,pager,editor,index \CJ noop
|
|
bind generic,pager,editor,index \CK noop
|
|
bind generic,pager,editor,index \CL noop
|
|
bind generic,pager,editor,index \CM noop
|
|
bind generic,pager,editor,index \CN noop
|
|
bind generic,pager,editor,index \CO noop
|
|
bind generic,pager,editor,index \CP noop
|
|
bind generic,pager,editor,index \CQ noop
|
|
bind generic,pager,editor,index \CR noop
|
|
bind generic,pager,editor,index \CS noop
|
|
bind generic,pager,editor,index \CT noop
|
|
bind generic,pager,editor,index \CU noop
|
|
bind generic,pager,editor,index \CV noop
|
|
bind generic,pager,editor,index \CW noop
|
|
bind generic,pager,editor,index \CX noop
|
|
bind generic,pager,editor,index \CY noop
|
|
bind generic,pager,editor,index \CZ noop
|
|
|
|
bind generic,pager,editor,index \C<Tab> noop
|
|
bind generic,pager,editor,index \C<Space> noop
|
|
bind generic,pager,editor,index \C<PageUp> noop
|
|
bind generic,pager,editor,index \C<PageDown> noop
|
|
bind generic,pager,editor,index \C<Home> noop
|
|
bind generic,pager,editor,index \C<End> noop
|
|
bind generic,pager,editor,index \C<Insert> noop
|
|
bind generic,pager,editor,index \C<Delete> noop
|
|
bind generic,pager,editor,index \C<Up> noop
|
|
bind generic,pager,editor,index \C<Down> noop
|
|
bind generic,pager,editor,index \C<Left> noop
|
|
bind generic,pager,editor,index \C<Right> noop
|
|
bind generic,pager,editor,index \C<Enter> noop
|
|
bind generic,pager,editor,index \C<Return> noop
|
|
|
|
bind generic,pager,editor,index \C1 noop
|
|
bind generic,pager,editor,index \C2 noop
|
|
bind generic,pager,editor,index \C3 noop
|
|
bind generic,pager,editor,index \C4 noop
|
|
bind generic,pager,editor,index \C5 noop
|
|
bind generic,pager,editor,index \C6 noop
|
|
bind generic,pager,editor,index \C7 noop
|
|
bind generic,pager,editor,index \C8 noop
|
|
bind generic,pager,editor,index \C9 noop
|
|
bind generic,pager,editor,index \C0 noop
|
|
bind generic,pager,editor,index \C! noop
|
|
bind generic,pager,editor,index \C$ noop
|
|
bind generic,pager,editor,index \C% noop
|
|
bind generic,pager,editor,index \C^ noop
|
|
bind generic,pager,editor,index \C& noop
|
|
bind generic,pager,editor,index \C* noop
|
|
bind generic,pager,editor,index \C( noop
|
|
bind generic,pager,editor,index \C) noop
|
|
|
|
bind generic,pager,editor,index <Esc>a noop
|
|
bind generic,pager,editor,index <Esc>b noop
|
|
bind generic,pager,editor,index <Esc>c noop
|
|
bind generic,pager,editor,index <Esc>d noop
|
|
bind generic,pager,editor,index <Esc>e noop
|
|
bind generic,pager,editor,index <Esc>f noop
|
|
bind generic,pager,editor,index <Esc>g noop
|
|
bind generic,pager,editor,index <Esc>h noop
|
|
bind generic,pager,editor,index <Esc>i noop
|
|
bind generic,pager,editor,index <Esc>j noop
|
|
bind generic,pager,editor,index <Esc>k noop
|
|
bind generic,pager,editor,index <Esc>l noop
|
|
bind generic,pager,editor,index <Esc>m noop
|
|
bind generic,pager,editor,index <Esc>n noop
|
|
bind generic,pager,editor,index <Esc>o noop
|
|
bind generic,pager,editor,index <Esc>p noop
|
|
bind generic,pager,editor,index <Esc>q noop
|
|
bind generic,pager,editor,index <Esc>r noop
|
|
bind generic,pager,editor,index <Esc>s noop
|
|
bind generic,pager,editor,index <Esc>t noop
|
|
bind generic,pager,editor,index <Esc>u noop
|
|
bind generic,pager,editor,index <Esc>v noop
|
|
bind generic,pager,editor,index <Esc>w noop
|
|
bind generic,pager,editor,index <Esc>x noop
|
|
bind generic,pager,editor,index <Esc>y noop
|
|
bind generic,pager,editor,index <Esc>z noop
|
|
bind generic,pager,editor,index <Esc>A noop
|
|
bind generic,pager,editor,index <Esc>B noop
|
|
bind generic,pager,editor,index <Esc>C noop
|
|
bind generic,pager,editor,index <Esc>D noop
|
|
bind generic,pager,editor,index <Esc>E noop
|
|
bind generic,pager,editor,index <Esc>F noop
|
|
bind generic,pager,editor,index <Esc>G noop
|
|
bind generic,pager,editor,index <Esc>H noop
|
|
bind generic,pager,editor,index <Esc>I noop
|
|
bind generic,pager,editor,index <Esc>J noop
|
|
bind generic,pager,editor,index <Esc>K noop
|
|
bind generic,pager,editor,index <Esc>L noop
|
|
bind generic,pager,editor,index <Esc>M noop
|
|
bind generic,pager,editor,index <Esc>N noop
|
|
bind generic,pager,editor,index <Esc>O noop
|
|
bind generic,pager,editor,index <Esc>P noop
|
|
bind generic,pager,editor,index <Esc>Q noop
|
|
bind generic,pager,editor,index <Esc>R noop
|
|
bind generic,pager,editor,index <Esc>S noop
|
|
bind generic,pager,editor,index <Esc>T noop
|
|
bind generic,pager,editor,index <Esc>U noop
|
|
bind generic,pager,editor,index <Esc>V noop
|
|
bind generic,pager,editor,index <Esc>W noop
|
|
bind generic,pager,editor,index <Esc>X noop
|
|
bind generic,pager,editor,index <Esc>Y noop
|
|
bind generic,pager,editor,index <Esc>Z noop
|
|
|
|
bind generic,pager,editor,index <Esc><Tab> noop
|
|
bind generic,pager,editor,index <Esc><Space> noop
|
|
bind generic,pager,editor,index <Esc><PageUp> noop
|
|
bind generic,pager,editor,index <Esc><PageDown> noop
|
|
bind generic,pager,editor,index <Esc><Home> noop
|
|
bind generic,pager,editor,index <Esc><End> noop
|
|
bind generic,pager,editor,index <Esc><Insert> noop
|
|
bind generic,pager,editor,index <Esc><Delete> noop
|
|
bind generic,pager,editor,index <Esc><Up> noop
|
|
bind generic,pager,editor,index <Esc><Down> noop
|
|
bind generic,pager,editor,index <Esc><Left> noop
|
|
bind generic,pager,editor,index <Esc><Right> noop
|
|
bind generic,pager,editor,index <Esc><Enter> noop
|
|
bind generic,pager,editor,index <Esc><Return> noop
|
|
|
|
bind generic,pager,editor,index <Esc>1 noop
|
|
bind generic,pager,editor,index <Esc>2 noop
|
|
bind generic,pager,editor,index <Esc>3 noop
|
|
bind generic,pager,editor,index <Esc>4 noop
|
|
bind generic,pager,editor,index <Esc>5 noop
|
|
bind generic,pager,editor,index <Esc>6 noop
|
|
bind generic,pager,editor,index <Esc>7 noop
|
|
bind generic,pager,editor,index <Esc>8 noop
|
|
bind generic,pager,editor,index <Esc>9 noop
|
|
bind generic,pager,editor,index <Esc>0 noop
|
|
bind generic,pager,editor,index <Esc>! noop
|
|
bind generic,pager,editor,index <Esc>@ noop
|
|
bind generic,pager,editor,index <Esc>$ noop
|
|
bind generic,pager,editor,index <Esc>% noop
|
|
bind generic,pager,editor,index <Esc>^ noop
|
|
bind generic,pager,editor,index <Esc>& noop
|
|
bind generic,pager,editor,index <Esc>* noop
|
|
bind generic,pager,editor,index <Esc>( noop
|
|
bind generic,pager,editor,index <Esc>) noop
|
|
#+end_src
|
|
|
|
*** Quit Neomutt
|
|
#+begin_src conf
|
|
bind index,pager,compose Q exit
|
|
macro index q "<shell-escape>if [ $TMUX ]; then tmux detach; fi<enter>"
|
|
#+end_src
|
|
|
|
*** Generic
|
|
#+begin_src conf
|
|
bind generic <Return> select-entry
|
|
bind generic l select-entry
|
|
|
|
bind generic,index k previous-entry
|
|
bind generic,index j next-entry
|
|
|
|
bind generic,index 0 first-entry
|
|
bind generic,index $ last-entry
|
|
|
|
bind generic,index \031 previous-entry # Mouse wheel
|
|
bind generic,index \005 next-entry # Mouse wheel
|
|
|
|
bind generic,index gg first-entry
|
|
bind generic,index G last-entry
|
|
|
|
bind generic,index,pager \Cu half-up
|
|
bind generic,index,pager \Cd half-down
|
|
|
|
bind generic,index,pager \Ce next-line
|
|
bind generic,index,pager \Cy previous-line
|
|
#+end_src
|
|
|
|
*** Index and Pager
|
|
#+BEGIN_SRC conf
|
|
bind pager k previous-line
|
|
bind pager j next-line
|
|
|
|
bind index <space> collapse-thread
|
|
|
|
bind index,pager K previous-entry
|
|
bind index,pager J next-entry
|
|
|
|
bind index l display-message
|
|
bind index <Return> display-message
|
|
bind pager l view-attachments
|
|
|
|
bind pager gg top
|
|
bind pager 0 top
|
|
|
|
bind pager G bottom
|
|
bind pager $ bottom
|
|
|
|
macro index h "<change-folder>?" "Go back to the list of mailboxes"
|
|
bind pager h exit
|
|
bind pager q exit
|
|
|
|
macro index c "<change-folder>?<toggle-mailboxes>" "change folder"
|
|
|
|
bind index,pager u undelete-message
|
|
|
|
bind index,pager P print-message
|
|
|
|
# Compose a new email (not a reply) to the sender
|
|
bind index,pager @ compose-to-sender
|
|
|
|
# Marl All message as read
|
|
macro index \Cr \
|
|
"<tag-pattern>~N<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" \
|
|
"mark all new as read"
|
|
#+END_SRC
|
|
|
|
#+begin_src conf
|
|
bind index za collapse-thread
|
|
bind index zA collapse-all # Missing :folddisable/foldenable
|
|
#+end_src
|
|
|
|
|
|
Write/Reply/Forward mail
|
|
#+BEGIN_SRC conf
|
|
bind index,pager p recall-message
|
|
bind index,pager m mail
|
|
bind index,pager r reply
|
|
bind index,pager R group-reply
|
|
bind index,pager b bounce-message
|
|
bind index,pager f forward-message
|
|
#+END_SRC
|
|
|
|
Sync Mailbox
|
|
#+begin_src conf
|
|
bind index,pager s sync-mailbox
|
|
#+end_src
|
|
|
|
Sync email
|
|
#+BEGIN_SRC conf
|
|
macro index,pager o "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh<enter>"
|
|
macro index,pager O "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh -a<enter>"
|
|
#+END_SRC
|
|
|
|
Make quick html view macro
|
|
#+BEGIN_SRC conf
|
|
macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
|
|
#+END_SRC
|
|
|
|
Open mail with Vim
|
|
#+begin_src conf
|
|
macro index,pager V "<view-attachments><search>plain<enter><view-mailcap><exit>"
|
|
#+end_src
|
|
|
|
#+begin_src conf
|
|
# bind index,pager U toggle-new
|
|
#+end_src
|
|
|
|
Labels
|
|
#+BEGIN_SRC conf
|
|
bind index,pager y edit-label
|
|
bind index,pager Y modify-labels
|
|
#+END_SRC
|
|
|
|
*** Limit
|
|
#+begin_src conf
|
|
bind index L limit
|
|
macro index a <limit>all<enter>
|
|
#+end_src
|
|
|
|
*** Search
|
|
#+begin_src conf
|
|
bind generic,index,pager / search
|
|
|
|
bind index,pager n search-next
|
|
bind index,pager N search-opposite
|
|
#+end_src
|
|
|
|
*** Attachments
|
|
#+begin_src conf
|
|
bind attach l view-attach
|
|
|
|
bind attach h exit
|
|
bind attach q exit
|
|
|
|
bind attach <return> view-mailcap
|
|
|
|
macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
|
|
#+end_src
|
|
|
|
Attach multiple files using ranger
|
|
#+begin_src conf
|
|
macro compose A "<shell-escape>bash $HOME/.config/neomutt/bin/rangerpick<enter><enter-command>source /tmp/rangerpick<enter><shell-escape>bash $HOME/.config/neomutt/bin/rangerpick clean<enter>" "Attach with Ranger"
|
|
#+end_src
|
|
|
|
**** Attach with Ranger Script
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/neomutt/bin/rangerpick
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
:END:
|
|
#+begin_src bash
|
|
tmpfile=/tmp/rangerpick
|
|
if [ -z "$1" ]; then
|
|
ranger --choosefiles $tmpfile && sed -i 's/^/<attach-file>/' $tmpfile && sed -i 's/$/<enter>/' $tmpfile && sed -i ':a;N;$!ba;s/\n//g' $tmpfile && sed -i 's/^/push /' $tmpfile
|
|
elif [ $1 == "clean" ]; then
|
|
rm $tmpfile
|
|
fi
|
|
#+end_src
|
|
|
|
*** TODO Compose
|
|
#+BEGIN_SRC conf
|
|
bind compose p postpone-message
|
|
|
|
bind compose R rename-attachment
|
|
|
|
bind compose a attach-file
|
|
#+END_SRC
|
|
|
|
Write html emails using markdown
|
|
#+BEGIN_SRC conf
|
|
# macro compose M "F pandoc -s -f markdown -t html \ny^T^Utext/html; charset=us-ascii\n"
|
|
#+END_SRC
|
|
|
|
Open another instance of neomutt in readonly mode while composing
|
|
#+BEGIN_SRC conf
|
|
macro compose M "<shell-escape>termite -e \"neomutt -R\"<enter>"
|
|
#+END_SRC
|
|
|
|
*** Browser
|
|
#+begin_src conf
|
|
bind browser l select-entry
|
|
|
|
macro browser h "<top-page><select-entry>"
|
|
bind browser q exit
|
|
#+end_src
|
|
|
|
*** Generic
|
|
Enter Command
|
|
#+begin_src conf
|
|
bind generic,index,pager : enter-command
|
|
#+end_src
|
|
|
|
*** Copy and move mails
|
|
#+BEGIN_SRC conf
|
|
macro index C "<copy-message>?<toggle-mailboxes>" "copy a message to a mailbox"
|
|
macro index M "<save-message>?<toggle-mailboxes>" "move a message to a mailbox"
|
|
#+END_SRC
|
|
|
|
*** Sidebar
|
|
#+BEGIN_SRC conf
|
|
bind index,pager \Ck sidebar-prev
|
|
bind index,pager \Cj sidebar-next
|
|
bind index,pager \Cl sidebar-open
|
|
|
|
bind index,pager \Ch sidebar-toggle-visible
|
|
#+END_SRC
|
|
|
|
*** Reload Configuration
|
|
#+begin_src conf
|
|
macro generic,index,pager,editor ,<Space> ":source ~/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
|
|
#+end_src
|
|
|
|
*** urlview - Open URL in emails
|
|
Use =urlview= to extract urls from the mail.
|
|
#+begin_src conf
|
|
macro attach,compose,index,pager \cw "\
|
|
:set my_tmp_pipe_decode=\$pipe_decode\n\
|
|
:set pipe_decode\n\
|
|
<pipe-message>urlview\n\
|
|
:set pipe_decode=\$my_tmp_pipe_decode\n\
|
|
:unset my_tmp_pipe_decode\n" \
|
|
'call urlview to extract URLs out of a message'
|
|
#+end_src
|
|
|
|
*** Searching using Mu
|
|
#+begin_src conf
|
|
macro index,pager \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=~/.mail/search " \
|
|
"mu find"
|
|
macro index,pager gf "<change-folder-readonly>~/.mail/search<enter>" \
|
|
"mu find results"
|
|
#+end_src
|
|
|
|
*** Link to Orgmode
|
|
#+begin_src conf
|
|
macro index,pager S "<pipe-message>$HOME/scripts/mutt-save-org-link.py\n"
|
|
#+end_src
|
|
**** Link mail to orgmode - Script
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/scripts/mutt-save-org-link.py
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env python3"
|
|
:END:
|
|
#+begin_src python
|
|
import sys
|
|
import email
|
|
import subprocess
|
|
import urllib.parse
|
|
|
|
# Parse the email from standard input
|
|
message_bytes = sys.stdin.buffer.read()
|
|
message = email.message_from_bytes(message_bytes)
|
|
|
|
# Grab the relevant message headers
|
|
message_id = urllib.parse.quote(message['message-id'].strip()[1:-1])
|
|
subject = message['subject'].replace('[', '{').replace(']', '}')
|
|
|
|
# Ask emacsclient to save a link to the message
|
|
p = subprocess.Popen([
|
|
'emacsclient',
|
|
f'org-protocol://store-link?url=message://{message_id}&title={subject}'
|
|
])
|
|
|
|
p.wait()
|
|
#+end_src
|
|
|
|
** Colors
|
|
*** Basic colors
|
|
#+BEGIN_SRC conf
|
|
color normal color021 color000
|
|
color error color021 color000
|
|
color tilde color021 color000
|
|
color message color021 color000
|
|
color markers color021 color000
|
|
color attachment color021 color000
|
|
color search color000 color003
|
|
color status color016 color000
|
|
color indicator color000 color021
|
|
color tree color021 color000
|
|
color progress color000 color021
|
|
|
|
# basic monocolor screen
|
|
mono bold bold
|
|
mono underline underline
|
|
mono indicator reverse
|
|
mono error bold
|
|
#+END_SRC
|
|
|
|
*** Index
|
|
#+begin_src conf
|
|
color index color021 color000 "~A" # All messages
|
|
color index brightcolor006 color000 "~N" # New messages
|
|
color index color020 color000 "~O" # Old messages
|
|
color index color020 color000 "~Q" # messages that have been replied to
|
|
color index color021 color000 "~R" # read messages
|
|
color index color006 color000 "~U" # unread messages
|
|
color index color021 color000 "~R~p!~F" # messages to me
|
|
color index brightcolor006 color000 "~N~p!~F" # new messages to me
|
|
color index brightcolor006 color000 "~U~p!~F" # unread messages to me
|
|
color index color005 color000 "~F" # flagged messages
|
|
color index color005 color000 "~F~p" # flagged messages to me
|
|
color index brightcolor006 color000 "~N~F" # new flagged messages
|
|
color index brightcolor006 color000 "~N~F~p" # new flagged messages to me
|
|
color index brightcolor006 color000 "~U~F~p" # new flagged messages to me
|
|
color index brightcolor000 color001 "~D" # deleted messages
|
|
|
|
color index brightcolor021 color019 "~v~(!~N)" # collapsed thread with no unread
|
|
color index brightcolor006 color019 "~v~(~N)" # collapsed thread with some unread
|
|
color index brightcolor006 color019 "~N~v~(~N)" # collapsed thread with unread parent
|
|
color index brightcolor005 color019 "~v~(~F)!~N" # collapsed thread with flagged, no unread
|
|
color index brightcolor006 color019 "~v~(~F~N)" # collapsed thread with some unread & flagged
|
|
color index brightcolor006 color019 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
|
|
color index brightcolor005 color019 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
|
|
color index brightcolor000 color001 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
|
|
#+end_src
|
|
|
|
*** Sidebar
|
|
#+begin_src conf
|
|
color sidebar_indicator color000 color021 # Mailbox is open
|
|
color sidebar_highlight color000 color003 # Mailbox is highlighted
|
|
color sidebar_new brightcolor006 color000 # Mailbox contains new mail
|
|
color sidebar_ordinary color021 color000 # Mailbox contains new mail
|
|
#+end_src
|
|
|
|
*** Message headers
|
|
#+BEGIN_SRC conf
|
|
color hdrdefault color006 color000
|
|
color header brightcolor006 color000 "^(From)"
|
|
color header brightcolor004 color000 "^(Subject)"
|
|
#+END_SRC
|
|
|
|
*** Attachments
|
|
#+begin_src conf
|
|
# Color if the attachment is autoviewed
|
|
color attach_headers brightgreen default "Autoview"
|
|
# Color only the brackets around the headers
|
|
color attach_headers brightyellow default "^\\[--"
|
|
color attach_headers brightyellow default "--]$"
|
|
# Color the mime type and the size
|
|
color attach_headers green default "Type: [a-z]+/[a-z0-9\-]+"
|
|
color attach_headers green default "Size: [0-9\.]+[KM]"
|
|
# Color GPGME signature checks
|
|
color attach_headers brightgreen default "Good signature from.*"
|
|
color attach_headers brightred default "Bad signature from.*"
|
|
color attach_headers brightred default "BAD signature from.*"
|
|
color attach_headers brightred default "Note: This key has expired!"
|
|
color attach_headers brightmagenta default "Problem signature from.*"
|
|
color attach_headers brightmagenta default "WARNING: This key is not certified with a trusted signature!"
|
|
color attach_headers brightmagenta default " There is no indication that the signature belongs to the owner."
|
|
color attach_headers brightmagenta default "can't handle these multiple signatures"
|
|
color attach_headers brightmagenta default "signature verification suppressed"
|
|
color attach_headers brightmagenta default "invalid node with packet of type"
|
|
#+end_src
|
|
*** Body
|
|
#+BEGIN_SRC conf
|
|
color quoted color002 color000
|
|
color quoted1 color003 color000
|
|
color quoted2 color004 color000
|
|
color quoted3 color005 color000
|
|
color quoted4 color006 color000
|
|
|
|
color signature color021 color000
|
|
color bold brightcolor021 color000
|
|
color underline brightcolor021 color000
|
|
color normal color021 color000
|
|
#+END_SRC
|
|
|
|
*** PGP
|
|
#+BEGIN_SRC conf
|
|
color body color001 color000 "(BAD signature)"
|
|
color body color002 color000 "(Good signature)"
|
|
color body color002 color000 "^gpg: Good signature .*"
|
|
color body color002 color000 "^gpg: "
|
|
color body color002 color000 "^gpg: BAD signature from.*"
|
|
#+END_SRC
|
|
|
|
*** Urls
|
|
#+BEGIN_SRC conf
|
|
color body color006 color000 "([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<>\"]"
|
|
#+END_SRC
|
|
|
|
*** Emails
|
|
#+BEGIN_SRC conf
|
|
color body color006 color000 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
|
|
#+END_SRC
|
|
|
|
** Contacts with Mu
|
|
#+BEGIN_SRC conf
|
|
set query_command="mu cfind '%s' -o mutt-ab"
|
|
|
|
bind editor <Tab> complete-query
|
|
#+END_SRC
|
|
|
|
** Paths
|
|
#+BEGIN_SRC conf
|
|
set folder = ~/.mail # mail location
|
|
set alias_file = ~/.config/neomutt/alias # where to store aliases
|
|
set header_cache = ~/.config/neomutt/cache/headers # where to store headers
|
|
set message_cachedir = ~/.config/neomutt/cache/bodies # where to store bodies
|
|
set certificate_file = ~/.config/neomutt/certificates # where to store certs
|
|
set mailcap_path = ~/.config/neomutt/mailcap # entries for filetypes
|
|
set tmpdir = ~/.config/neomutt/temp # where to keep temp files
|
|
#+END_SRC
|
|
|
|
** Print
|
|
https://unix.stackexchange.com/questions/20456/pretty-print-mails-from-mutt
|
|
|
|
#+BEGIN_SRC conf
|
|
# set print_command="/usr/bin/muttprint %s -p ctb110c1u"
|
|
#+END_SRC
|
|
|
|
** Accounts
|
|
#+BEGIN_SRC conf
|
|
set spoolfile = "+gmail/Inbox" # Default inbox
|
|
set realname = "Dehaeze Thomas"
|
|
set from = "dehaeze.thomas@gmail.com"
|
|
|
|
folder-hook gmail/* source ~/.config/neomutt/accounts/gmail
|
|
folder-hook esrf/* source ~/.config/neomutt/accounts/esrf
|
|
folder-hook ulg/* source ~/.config/neomutt/accounts/ulg
|
|
|
|
macro index,pager gu "<change-folder>+ulg/Inbox<enter>" "go to inbox"
|
|
macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
|
|
macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
|
|
#+END_SRC
|
|
|
|
*** Gmail
|
|
**** Configuration
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail :comments none
|
|
set from = "dehaeze.thomas@gmail.com"
|
|
set sendmail = "msmtp -a gmail"
|
|
|
|
# Other special folders.
|
|
set mbox = "+gmail/Archive"
|
|
unset record # Don't copy send message to Sent folder: Gmail does that for us
|
|
set postponed = "+gmail/Drafts"
|
|
|
|
set signature = "~/.config/neomutt/accounts/gmail.signature"
|
|
|
|
macro index,pager d \
|
|
"<save-message>+gmail/Archive<enter>" \
|
|
"Move message to the Archive"
|
|
|
|
macro index,pager D \
|
|
"<save-message>+gmail/Trash<enter>" \
|
|
"Move message to the Trash"
|
|
#+end_src
|
|
|
|
**** Signature
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail.signature :comments none :padline no
|
|
Thomas Dehaeze
|
|
#+end_src
|
|
This empty code block is used to add a new line after signatude
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail.signature :comments none :padline no
|
|
#+end_src
|
|
*** ESRF
|
|
**** Configuration
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf :comments none
|
|
set from = "thomas.dehaeze@esrf.fr"
|
|
set sendmail = "msmtp -a esrf"
|
|
|
|
# Other special folders.
|
|
set mbox = "+esrf/Archive"
|
|
set record = "+esrf/Sent"
|
|
set postponed = "+esrf/Drafts"
|
|
|
|
set signature = "~/.config/neomutt/accounts/esrf.signature"
|
|
|
|
macro index,pager d \
|
|
"<save-message>+esrf/Archive<enter>" \
|
|
"Move message to the Archive"
|
|
|
|
macro index,pager D \
|
|
"<save-message>+esrf/Trash<enter>" \
|
|
"Move message to the Trash"
|
|
#+end_src
|
|
|
|
**** Signature
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
|
|
Thomas Dehaeze
|
|
#+end_src
|
|
This empty code block is used to add a new line after signatude
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
|
|
#+end_src
|
|
|
|
*** ULG
|
|
**** Configuration
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/ulg :comments none
|
|
set from = "thomas.dehaeze@doct.uliege.be"
|
|
set sendmail = "msmtp -a ulg"
|
|
|
|
# Other special folders.
|
|
set mbox = "+ulg/Archive"
|
|
set record = "+ulg/Sent"
|
|
set postponed = "+ulg/Drafts"
|
|
|
|
set signature = "~/.config/neomutt/accounts/ulg.signature"
|
|
|
|
macro index,pager d \
|
|
"<save-message>+ulg/Archive<enter>" \
|
|
"Move message to the Archive"
|
|
|
|
macro index,pager D \
|
|
"<save-message>+ulg/Trash<enter>" \
|
|
"Move message to the Trash"
|
|
#+end_src
|
|
|
|
**** Signature
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/ulg.signature :comments none :padline no
|
|
Thomas Dehaeze
|
|
#+end_src
|
|
This empty code block is used to add a new line after signatude
|
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
|
|
#+end_src
|
|
|
|
** Basic Options
|
|
#+BEGIN_SRC conf
|
|
set wait_key = no # shut up, mutt
|
|
set mbox_type = Maildir # mailbox type
|
|
set help = no # No top bar
|
|
set timeout = 3 # idle time before scanning
|
|
set sleep_time = 0 # how long NeoMutt may wait after an error message
|
|
set mail_check = 0 # minimum time between scans
|
|
set delete # don't ask, just do
|
|
unset confirmappend # don't ask, just do!
|
|
set quit # don't ask, just do!!
|
|
set mark_old = no # read/new is good enough for me
|
|
set beep_new # bell on new mails
|
|
# set pipe_decode # strip headers and eval mimes when piping
|
|
set thorough_search # strip headers and eval mimes before searching
|
|
set send_charset="us-ascii:utf-8:iso-8859-1"
|
|
set use_from # respect the From: address the editor sends back
|
|
|
|
# Use Vim to compose email, with a few default options.
|
|
set editor = "nvim -c '/\\n--' -c ':noh' -c 'startinsert' -c ':Goyo'"
|
|
#+END_SRC
|
|
|
|
** View Options
|
|
*** Status Bar
|
|
#+BEGIN_SRC conf
|
|
set status_on_top = no
|
|
set status_chars = " *%A"
|
|
set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
|
|
#+END_SRC
|
|
|
|
*** Index View Options
|
|
#+BEGIN_SRC conf
|
|
set date_format = "%d/%m/%y %H:%M"
|
|
set index_format = "[%Z] %D %-20.20F %s"
|
|
|
|
set sort = threads # like gmail
|
|
set sort_aux = reverse-last-date-received # like gmail
|
|
set uncollapse_jump # don't collapse on an unread message
|
|
set sort_re # thread based on regex
|
|
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
|
set folder_format = "%2C %t %N %8s %f"
|
|
#+END_SRC
|
|
|
|
*** Pager View Options
|
|
#+BEGIN_SRC conf
|
|
set pager_index_lines = 10 # number of index lines to show
|
|
set pager_context = 3 # number of context lines to show
|
|
set pager_stop # don't go to next message automatically
|
|
set menu_scroll # scroll in menus
|
|
set tilde # show tildes like in vim
|
|
set markers = no # no ugly plus signs
|
|
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
|
|
|
auto_view text/html # view html automatically
|
|
alternative_order text/plain text/enriched text/html # save html for last
|
|
#+END_SRC
|
|
|
|
*** Compose View Options
|
|
#+BEGIN_SRC conf
|
|
set envelope_from # which from?
|
|
set sig_dashes # dashes before sig
|
|
set sig_on_top # the signature is just below the response
|
|
set edit_headers # show headers when composing
|
|
set fast_reply # skip to compose when replying
|
|
set askcc # ask for CC:
|
|
set fcc_attach # save attachments with the body
|
|
set mime_forward = yes # forward attachments as part of body
|
|
set forward_format = "Fwd: %s" # format of subject when forwarding
|
|
set forward_decode # decode when forwarding
|
|
set attribution = "On %d, %n wrote:" # format of quoting header
|
|
set reply_to # reply to Reply to: field
|
|
set reverse_name # reply as whomever it was to
|
|
set include # include message in replies
|
|
set forward_quote # include message in forwards
|
|
#+END_SRC
|
|
|
|
*** Headers
|
|
#+BEGIN_SRC conf
|
|
ignore * # ignore all headers
|
|
unignore from: to: cc: date: subject: # show only these
|
|
unhdr_order *
|
|
hdr_order from: to: cc: date: subject: # and in this order
|
|
#+END_SRC
|
|
|
|
** Sidebar
|
|
*** General Config
|
|
#+BEGIN_SRC conf
|
|
# Should the Sidebar be shown?
|
|
set sidebar_visible = yes
|
|
|
|
# How wide should the Sidebar be in screen columns?
|
|
# Note: Some characters, e.g. Chinese, take up two columns each.
|
|
set sidebar_width = 20
|
|
|
|
# Should the mailbox paths be abbreviated?
|
|
set sidebar_short_path = yes
|
|
|
|
# When abbreviating mailbox path names, use any of these characters as path
|
|
# separators. Only the part after the last separators will be shown.
|
|
# For file folders '/' is good. For IMAP folders, often '.' is useful.
|
|
set sidebar_delim_chars = '/.'
|
|
|
|
# If the mailbox path is abbreviated, should it be indented?
|
|
set sidebar_folder_indent = yes
|
|
|
|
# Indent mailbox paths with this string.
|
|
set sidebar_indent_string = ' '
|
|
|
|
# Make the Sidebar only display mailboxes that contain new, or flagged,
|
|
# mail.
|
|
set sidebar_new_mail_only = no
|
|
|
|
# Any mailboxes that are whitelisted will always be visible, even if the
|
|
# sidebar_new_mail_only option is enabled.
|
|
# sidebar_whitelist '/home/user/mailbox1'
|
|
# sidebar_whitelist '/home/user/mailbox2'
|
|
|
|
# When searching for mailboxes containing new mail, should the search wrap
|
|
# around when it reaches the end of the list?
|
|
set sidebar_next_new_wrap = no
|
|
|
|
# Show the Sidebar on the right-hand side of the screen
|
|
set sidebar_on_right = no
|
|
|
|
# The character to use as the divider between the Sidebar and the other Mutt
|
|
# panels.
|
|
# Note: Only the first character of this string is used.
|
|
set sidebar_divider_char = '│'
|
|
|
|
# Enable extended buffy mode to calculate total, new, and flagged
|
|
# message counts for each mailbox.
|
|
set mail_check_stats
|
|
|
|
# Display the Sidebar mailboxes using this format string.
|
|
set sidebar_format = '%B %?N?(%N)?%* %S'
|
|
|
|
# Sort the mailboxes in the Sidebar using this method:
|
|
# count - total number of messages
|
|
# flagged - number of flagged messages
|
|
# new - number of new messages
|
|
# path - mailbox path
|
|
# unsorted - do not sort the mailboxes
|
|
set sidebar_sort_method = 'unsorted'
|
|
#+END_SRC
|
|
|
|
*** Mailboxes to show in the sidebar.
|
|
#+BEGIN_SRC conf
|
|
mailboxes \
|
|
+search \
|
|
"+Google" \
|
|
+gmail/Inbox \
|
|
+gmail/Archive \
|
|
+gmail/Drafts \
|
|
+gmail/Sent \
|
|
+gmail/Trash \
|
|
"+ESRF" \
|
|
+esrf/Inbox \
|
|
+esrf/Archive \
|
|
+esrf/Drafts \
|
|
+esrf/Sent \
|
|
+esrf/Trash \
|
|
"+ULG" \
|
|
+ulg/Inbox \
|
|
+ulg/Archive \
|
|
+ulg/Drafts \
|
|
+ulg/Sent \
|
|
+ulg/Trash \
|
|
|
|
set sendmail_wait = 0 # no please don't silently fail, email is important
|
|
unset move
|
|
#+END_SRC
|
|
|
|
** Attachments
|
|
*** Attachment View Options
|
|
#+BEGIN_SRC conf
|
|
set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
|
|
#+END_SRC
|
|
*** Open Attachment
|
|
Program to open is defined in the =mailcap= file.
|
|
|
|
A script =openfile.sh= is used to open files with the default application using =xdg-open=.
|
|
|
|
*** Attach multiple files at once
|
|
First, tag the files you want to send using =t=, then =;= to apply the action on all tagged files and finally =<enter>= to add them all.
|
|
|
|
*** Forgotten Attachment
|
|
#+begin_src conf
|
|
set abort_noattach = ask-yes
|
|
set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|attachons|joint|jointe|joints|jointes|joins|joignons))\\>"
|
|
#+end_src
|
|
** Scripts and other config files
|
|
*** Sync Mail script
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/neomutt/bin/get_new_mail.sh
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
:END:
|
|
#+begin_src bash
|
|
if [ $TMUX ]; then
|
|
tmux split -v -l 1 ~/scripts/checkmail.sh $1 && tmux select-pane -U
|
|
else
|
|
~/scripts/checkmail.sh $1
|
|
fi
|
|
#+end_src
|
|
|
|
*** Openfile Scripts
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/neomutt/bin/openfile.sh
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
:END:
|
|
#+begin_src bash
|
|
base=$(basename "$1")
|
|
ext="${base##*.}"
|
|
|
|
file=$(mktemp -u --suffix=".$ext")
|
|
|
|
rm -f "$file"
|
|
|
|
cp "$1" "$file"
|
|
|
|
setsid xdg-open "$file" >/dev/null 2>&1 &
|
|
#+end_src
|
|
|
|
*** urlview Config
|
|
:PROPERTIES:
|
|
:header-args:conf+: :tangle ~/.urlview
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
|
|
#+BEGIN_SRC conf
|
|
REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
|
|
|
|
COMMAND nohup qutebrowser %s </dev/null &>/dev/null &
|
|
#+END_SRC
|
|
|
|
*** Mailcap
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.config/neomutt/mailcap
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:END:
|
|
|
|
Generic
|
|
#+BEGIN_SRC conf
|
|
text/plain; nvim %s
|
|
audio/*; /usr/bin/xdg-open %s; copiousoutput
|
|
video/*; setsid mpv --quiet %s &; copiousoutput
|
|
image/*; ~/.config/neomutt/bin/openfile.sh %s;
|
|
application/pdf; ~/.config/neomutt/bin/openfile.sh %s;
|
|
text/html; export DISPLAY=:0 && setsid qutebrowser %s; nametemplate=%s.html
|
|
text/html; w3m -I %{charset} -T text/html; copiousoutput;
|
|
text/calendar; khal import --batch -a home %s && khal printics %s; copiousoutput;
|
|
application/ics; khal import --batch -a home %s && khal printics %s; copiousoutput;
|
|
#+END_SRC
|
|
|
|
Libreoffice
|
|
#+begin_src conf
|
|
application/docx; libreoffice %s --nologo &; copiousoutput;
|
|
application/doc; libreoffice --nologo %s &; copiousoutput;
|
|
|
|
application/vnd.oasis.opendocument.database; libreoffice --nologo --base '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.chart; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.spreadsheet-template; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.graphics; libreoffice --nologo --draw '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.graphics-template; libreoffice --nologo --draw '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.presentation; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.presentation-template; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.formula; libreoffice --nologo --math '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.text; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.text-master; libreoffice --nologo -global '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.text-template; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.oasis.opendocument.text-web; libreoffice --nologo -web '%s'; copiousoutput
|
|
application/vnd.sun.xml.base; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.sun.xml.calc; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.sun.xml.calc.template; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.sun.xml.draw; libreoffice --nologo --draw '%s'; copiousoutput
|
|
application/vnd.sun.xml.draw.template; libreoffice --nologo --draw '%s'; copiousoutput
|
|
application/vnd.stardivision.calc; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.stardivision.chart; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.stardivision.draw; libreoffice --nologo --draw '%s'; copiousoutput
|
|
application/vnd.stardivision.impress; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.stardivision.math; libreoffice --nologo --math '%s'; copiousoutput
|
|
application/vnd.stardivision.writer-global; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.stardivision.writer; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.sun.xml.impress; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.sun.xml.impress.template; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.sun.xml.math; libreoffice --nologo --math '%s'; copiousoutput
|
|
application/vnd.sun.xml.writer; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.sun.xml.writer.global; libreoffice --nologo -global '%s'; copiousoutput
|
|
application/vnd.sun.xml.writer.template; libreoffice --nologo --writer '%s'; copiousoutput
|
|
text/csv; libreoffice --nologo --calc '%s'; copiousoutput
|
|
text/spreadsheet; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/x-quattropro; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/x-dbf; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.ms-excel.sheet.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.ms-excel.template.macroEnabled.12; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.spreadsheetml.template; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.lotus-1-2-3; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.ms-excel; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/msexcel; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/x-dbase; libreoffice --nologo --calc '%s'; copiousoutput
|
|
text/x-csv; libreoffice --nologo --calc '%s'; copiousoutput
|
|
application/vnd.ms-powerpoint.presentation.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.ms-powerpoint.slideshow.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.ms-powerpoint.template.macroEnabled.12; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.presentationml.presentation; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.presentationml.slideshow; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.presentationml.template; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/vnd.ms-powerpoint; libreoffice --nologo --impress '%s'; copiousoutput
|
|
application/mspowerpoint; libreoffice --nologo --impress '%s'; copiousoutput
|
|
text/mathml; libreoffice --nologo --math '%s'; copiousoutput
|
|
application/rtf; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/x-t602; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.ms-word.document.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.ms-word.template.macroEnabled.12; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.openxmlformats-officedocument.wordprocessingml.template; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/vnd.ms-works; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/msword; libreoffice --nologo --writer '%s'; copiousoutput
|
|
application/wordperfect; libreoffice --nologo --writer '%s'; copiousoutput
|
|
text/rtf; libreoffice --nologo --writer '%s'; copiousoutput
|
|
#+end_src
|