1288 lines
42 KiB
Org Mode
1288 lines
42 KiB
Org Mode
#+TITLE: Mail Configuration
|
|
#+SETUPFILE: ./setup/org-setup-file.org
|
|
|
|
Installation:
|
|
#+begin_src bash :tangle no
|
|
sudo apt install mbsync msmtp maildir-utils neomutt lynx
|
|
#+end_src
|
|
|
|
* =mbsync= - Synchronize Mailboxes
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.mbsyncrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:CUSTOM_ID: mbsync
|
|
: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 Far/Near] 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
|
|
Far :gmail-remote:INBOX
|
|
Near :gmail-local:Inbox
|
|
|
|
Channel gmail-Drafts
|
|
Far :gmail-remote:"[Gmail]/Drafts"
|
|
Near :gmail-local:Drafts
|
|
|
|
Channel gmail-Sent
|
|
Far :gmail-remote:"[Gmail]/Sent Mail"
|
|
Near :gmail-local:Sent
|
|
|
|
Channel gmail-Trash
|
|
Far :gmail-remote:"[Gmail]/Trash"
|
|
Near :gmail-local:Trash
|
|
|
|
Channel gmail-Archive
|
|
Far :gmail-remote:"[Imap]/Archive"
|
|
Near :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
|
|
Far :gmail-remote:
|
|
Near :gmail-local:
|
|
# Exclude everything under the internal [Gmail] folder, except the interesting folders
|
|
Patterns *
|
|
Patterns !INBOX
|
|
Patterns ![Gmail]*
|
|
Patterns !Drafts
|
|
Patterns !Sent Mail
|
|
Patterns !Trash
|
|
# Patterns ![Imap]/Archive
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
# For doing a quick sync of just the INBOX with `mbsync gmail-download`.
|
|
Channel gmail-download
|
|
Far :gmail-remote:INBOX
|
|
Near :gmail-local:Inbox
|
|
Create Near
|
|
Expunge Near
|
|
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
|
|
Far :esrf-remote:INBOX
|
|
Near :esrf-local:Inbox
|
|
|
|
Channel esrf-Drafts
|
|
Far :esrf-remote:Drafts
|
|
Near :esrf-local:Drafts
|
|
|
|
Channel esrf-Archive
|
|
Far :esrf-remote:Archive
|
|
Near :esrf-local:Archive
|
|
|
|
Channel esrf-Sent
|
|
Far :esrf-remote:Sent
|
|
Near :esrf-local:Sent
|
|
|
|
Channel esrf-Trash
|
|
Far :esrf-remote:Trash
|
|
Near :esrf-local:Trash
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
Channel esrf
|
|
Far :esrf-remote:
|
|
Near :esrf-local:
|
|
#+END_SRC
|
|
|
|
For doing a quick sync of just the INBOX with =mbsync esrf-download=.
|
|
#+BEGIN_SRC conf
|
|
Channel esrf-download
|
|
Far :esrf-remote:INBOX
|
|
Near :esrf-local:Inbox
|
|
Create Near
|
|
Expunge Near
|
|
Sync Pull
|
|
#+END_SRC
|
|
|
|
* =msmtp= - Send Mails
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.config/msmtp/config
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:CUSTOM_ID: msmtp
|
|
: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"
|
|
proxy_host localhost
|
|
proxy_port 8080
|
|
#+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
|
|
|
|
** Default Account
|
|
#+BEGIN_SRC conf
|
|
account default : esrf
|
|
#+END_SRC
|
|
|
|
* =mu= - Mail Indexer
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.config/neomutt/neomuttrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:CUSTOM_ID: mu
|
|
:END:
|
|
=Mu= ([[https://github.com/djcb/mu][github]]) it used as a "maildir indexer/searcher".
|
|
Useful commands are described in the [[http://www.djcbsoftware.nl/code/mu/cheatsheet.html][Cheat-sheet]].
|
|
|
|
For instance, to find mails with =pdf= attachments:
|
|
#+begin_src bash :eval no :tangle no
|
|
mu find 'mime:application/pdf'
|
|
#+end_src
|
|
|
|
* =neomutt= - Mail Client
|
|
:PROPERTIES:
|
|
:header-args:conf: :tangle ~/.config/neomutt/neomuttrc
|
|
:header-args:conf+: :comments both :mkdirp yes
|
|
:CUSTOM_ID: neomutt
|
|
:END:
|
|
https://neomutt.org/
|
|
|
|
Documentation:
|
|
#+begin_src bash :results none :exports code :tangle no
|
|
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 Q exit
|
|
|
|
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
|
|
|
|
# Display mode information
|
|
bind pager i display-toggle-weed
|
|
|
|
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 z collapse-thread
|
|
bind index Z collapse-all
|
|
#+end_src
|
|
|
|
Write/Reply/Forward mail
|
|
#+BEGIN_SRC conf
|
|
bind index,pager p recall-message
|
|
bind index,pager m mail
|
|
bind index,pager M resend-message
|
|
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 U toggle-new
|
|
#+end_src
|
|
|
|
Labels
|
|
#+BEGIN_SRC conf
|
|
bind index,pager y edit-label
|
|
bind index,pager Y modify-labels
|
|
#+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
|
|
|
|
*** 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
|
|
|
|
*** Compose
|
|
#+BEGIN_SRC conf
|
|
bind compose p postpone-message
|
|
|
|
bind compose R rename-attachment
|
|
|
|
bind compose a attach-file
|
|
#+END_SRC
|
|
|
|
Open another instance of neomutt in readonly mode while composing
|
|
#+BEGIN_SRC conf
|
|
macro compose M "<shell-escape>$TERMINAL -e \"neomutt -R\"<enter>"
|
|
#+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 file by drooping from GUI
|
|
#+begin_src conf
|
|
macro compose B "<shell-escape>bash $HOME/.config/neomutt/bin/rangerpick dragon<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/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}' $tmpfile)" > $tmpfile
|
|
elif [ $1 == "dragon" ]; then
|
|
dragon --target --print-path --keep > $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}' $tmpfile)" > $tmpfile
|
|
elif [ $1 == "clean" ]; then
|
|
ls $tmpfile
|
|
fi
|
|
#+end_src
|
|
|
|
**** Send HTML mails using Markdown
|
|
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
|
|
|
|
*** Browser
|
|
#+begin_src conf
|
|
bind browser l select-entry
|
|
macro browser h "<top-page><select-entry>"
|
|
|
|
bind browser t tag-entry
|
|
|
|
bind browser q exit
|
|
#+end_src
|
|
|
|
*** Generic
|
|
Enter Command
|
|
#+begin_src conf
|
|
bind generic,index,pager : enter-command
|
|
#+end_src
|
|
|
|
*** Sidebar
|
|
#+BEGIN_SRC conf
|
|
bind index,pager \Cp sidebar-prev
|
|
bind index,pager \Cn sidebar-next
|
|
bind index,pager \Co 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
|
|
https://www.donarmstrong.com/posts/org_mode_mutt_capture/
|
|
https://upsilon.cc/~zack/blog/posts/2010/02/integrating_Mutt_with_Org-mode/
|
|
|
|
#+begin_src conf
|
|
macro index,pager S "<pipe-message>$HOME/.config/neomutt/bin/mutt-save-org-link.py\n"
|
|
#+end_src
|
|
|
|
**** Link mail to orgmode - Script
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/neomutt/bin/mutt-save-org-link.py
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env python3"
|
|
:END:
|
|
|
|
https://orgmode.org/manual/The-capture-protocol.html#The-capture-protocol
|
|
|
|
#+begin_src python
|
|
import sys
|
|
import email
|
|
from email import policy
|
|
import subprocess
|
|
import urllib.parse
|
|
|
|
# Parse the email from standard input
|
|
message_bytes = sys.stdin.buffer.read()
|
|
message = email.message_from_bytes(message_bytes, policy=policy.default)
|
|
|
|
# Grab the relevant message headers
|
|
message_id = urllib.parse.quote(message['message-id'][1:-1])
|
|
subject = message['subject']
|
|
message_to = message['to']
|
|
|
|
# Ask emacsclient to save a link to the message
|
|
subprocess.Popen([
|
|
'emacsclient',
|
|
f'org-protocol://capture?template=ps&url={message_id}&title={subject}&body={message_to}'
|
|
])
|
|
#+end_src
|
|
|
|
** Colors
|
|
#+begin_src conf
|
|
color attachment color109 color235
|
|
color bold color229 color235
|
|
color error color167 color235
|
|
color hdrdefault color246 color235
|
|
color indicator color223 color237
|
|
color markers color243 color235
|
|
color normal color223 color235
|
|
color prompt color223 color235
|
|
color quoted color250 color235
|
|
color quoted1 color108 color235
|
|
color quoted2 color250 color235
|
|
color quoted3 color108 color235
|
|
color quoted4 color250 color235
|
|
color quoted5 color108 color235
|
|
color search color235 color208
|
|
color signature color108 color235
|
|
color status color245 color235
|
|
color tilde color243 color235
|
|
color tree color142 color235
|
|
color underline color223 color239
|
|
|
|
color sidebar_divider color250 color235
|
|
color sidebar_new color142 color235
|
|
|
|
color index color142 color235 ~N
|
|
color index color108 color235 ~O
|
|
color index color109 color235 ~P
|
|
color index color214 color235 ~F
|
|
color index color175 color235 ~Q
|
|
color index color167 color235 ~=
|
|
color index color235 color223 ~T
|
|
color index color235 color167 ~D
|
|
|
|
color header color214 color235 "^(To:|Cc:|Bcc:|From:)"
|
|
color header color142 color235 "^Subject:"
|
|
color header color108 color235 "^X-Spam-Status:"
|
|
color header color108 color235 "^Received:"
|
|
|
|
color body color142 color235 "[a-z]{3,256}://[-a-zA-Z0-9@:%._\\+~#=/?&,]+"
|
|
color body color208 color235 "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
|
|
color body color208 color235 "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
|
|
color body color235 color214 "[;:]-*[)>(<lt;|]"
|
|
color body color229 color235 "\\*[- A-Za-z]+\\*"
|
|
|
|
color body color214 color235 "^-.*PGP.*-*"
|
|
color body color142 color235 "^gpg: Good signature from"
|
|
color body color167 color235 "^gpg: Can't.*$"
|
|
color body color214 color235 "^gpg: WARNING:.*$"
|
|
color body color167 color235 "^gpg: BAD signature from"
|
|
color body color167 color235 "^gpg: Note: This key has expired!"
|
|
color body color214 color235 "^gpg: There is no indication that the signature belongs to the owner."
|
|
color body color214 color235 "^gpg: can't handle these multiple signatures"
|
|
color body color214 color235 "^gpg: signature verification suppressed"
|
|
color body color214 color235 "^gpg: invalid node with packet of type"
|
|
#+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 = "+esrf/Inbox" # Default inbox
|
|
set realname = "Dehaeze Thomas"
|
|
set from = "thomas.dehaeze@esrf.fr"
|
|
|
|
folder-hook gmail/* source ~/.config/neomutt/accounts/gmail
|
|
folder-hook esrf/* source ~/.config/neomutt/accounts/esrf
|
|
|
|
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 = "~/.config/neomutt/bin/send_mail.sh gmail"
|
|
|
|
# Other special folders.
|
|
set mbox = "+gmail/Archive" # Archive Box
|
|
set postponed = "+gmail/Drafts"
|
|
|
|
unset record # Don't copy send message to Sent folder: Gmail does that for us
|
|
|
|
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 signature
|
|
#+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 = "~/.config/neomutt/bin/send_mail.sh 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 signature
|
|
#+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 sendmail_wait = 0 # no please don't silently fail, email is important
|
|
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'"
|
|
#+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 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 fcc_attach # save attachments with the body
|
|
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
|
|
#+END_SRC
|
|
|
|
*** Forward
|
|
#+BEGIN_SRC conf
|
|
set forward_format = "Fwd: %s" # format of subject when forwarding
|
|
set forward_decode # decode when forwarding
|
|
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 = '%D %* %?N?[%N]?'
|
|
|
|
# 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
|
|
named-mailboxes " Search" =search
|
|
named-mailboxes " GMAIL" =empty/gmail
|
|
named-mailboxes " Inbox" =gmail/Inbox
|
|
named-mailboxes " Sent" =gmail/Sent
|
|
named-mailboxes " Drafts" =gmail/Drafts
|
|
named-mailboxes " ﮊ Archive" =gmail/Archive
|
|
named-mailboxes " Trash" =gmail/Trash
|
|
named-mailboxes " ESRF" =empty/esrf
|
|
named-mailboxes " Inbox" =esrf/Inbox
|
|
named-mailboxes " Sent" =esrf/Sent
|
|
named-mailboxes " Drafts" =esrf/Drafts
|
|
named-mailboxes " ﮊ Archive" =esrf/Archive
|
|
named-mailboxes " Trash" =esrf/Trash
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC conf
|
|
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.
|
|
|
|
Of ranger can be used with the =A= keybinding.
|
|
|
|
*** 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
|
|
*** Send Mail Script
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/neomutt/bin/send_mail.sh
|
|
:header-args+: :comments both :mkdirp yes
|
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
:END:
|
|
|
|
#+begin_src bash
|
|
msmtp -a $1 ${@:2} && \
|
|
if [ $TMUX ]; then
|
|
tmux split -v -l 1 mbsync $1-Sent && tmux select-pane -U
|
|
else
|
|
mbsync $1-Sent
|
|
fi
|
|
#+end_src
|
|
|
|
*** 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 checkmail $1 && tmux select-pane -U
|
|
else
|
|
checkmail $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
|
|
video/*; setsid mpv --quiet %s &
|
|
image/*; sxiv -a -b %s &
|
|
application/pdf; zathura %s &
|
|
audio/*; /usr/bin/xdg-open %s; copiousoutput
|
|
text/html; export DISPLAY=:0 && setsid qutebrowser %s > /dev/null 2>&1 &; nametemplate=%s.html
|
|
text/html; lynx -width ${COLUMNS:-80} -dump %s; nametemplate=%s.html; copiousoutput;
|
|
#+END_SRC
|
|
|
|
For calendar output, a personal =ics-add= script is used.
|
|
#+BEGIN_SRC conf
|
|
text/calendar; ics-add %s; copiousoutput;
|
|
application/ics; ics-add %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
|