literate-dotfiles/mail.org

1306 lines
43 KiB
Org Mode
Raw Normal View History

2019-01-31 09:41:03 +01:00
#+TITLE: Mail Configuration
2021-01-01 20:12:34 +01:00
#+SETUPFILE: ./setup/org-setup-file.org
2019-01-31 09:41:03 +01:00
Installation:
#+begin_src bash :tangle no
2022-02-06 22:06:00 +01:00
sudo apt install mbsync msmtp maildir-utils neomutt lynx
#+end_src
2021-01-01 20:12:34 +01:00
* =mbsync= - Synchronize Mailboxes
:PROPERTIES:
:header-args:conf: :tangle ~/.mbsyncrc
:header-args:conf+: :comments both :mkdirp yes
2021-01-01 20:12:34 +01:00
:CUSTOM_ID: mbsync
:END:
2019-01-31 09:41:03 +01:00
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 *
2021-04-25 19:10:57 +02:00
# Permanently remove all messages [on the Far/Near] marked for deletion.
Expunge Both
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
#+BEGIN_SRC conf
IMAPStore gmail-remote
Account gmail
2019-01-31 09:41:03 +01:00
MaildirStore gmail-local
Path ~/.mail/gmail/
Inbox ~/.mail/gmail/Inbox
2019-01-31 09:41:03 +01:00
Channel gmail-Home
2021-04-25 19:10:57 +02:00
Far :gmail-remote:INBOX
Near :gmail-local:Inbox
2019-01-31 09:41:03 +01:00
Channel gmail-Drafts
2021-04-25 19:10:57 +02:00
Far :gmail-remote:"[Gmail]/Drafts"
Near :gmail-local:Drafts
2019-01-31 09:41:03 +01:00
Channel gmail-Sent
2021-04-25 19:10:57 +02:00
Far :gmail-remote:"[Gmail]/Sent Mail"
Near :gmail-local:Sent
2019-01-31 09:41:03 +01:00
Channel gmail-Trash
2021-04-25 19:10:57 +02:00
Far :gmail-remote:"[Gmail]/Trash"
Near :gmail-local:Trash
2019-01-31 09:41:03 +01:00
2021-10-25 14:25:08 +02:00
Channel gmail-Archive
Far :gmail-remote:"[Imap]/Archive"
2021-04-25 19:10:57 +02:00
Near :gmail-local:Archive
2019-01-31 09:41:03 +01:00
#+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
2021-04-25 19:10:57 +02:00
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
2021-10-25 14:25:08 +02:00
# Patterns ![Imap]/Archive
2019-01-31 09:41:03 +01:00
#+END_SRC
#+BEGIN_SRC conf
# For doing a quick sync of just the INBOX with `mbsync gmail-download`.
Channel gmail-download
2021-04-25 19:10:57 +02:00
Far :gmail-remote:INBOX
Near :gmail-local:Inbox
Create Near
Expunge Near
Sync Pull
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
#+BEGIN_SRC conf
IMAPStore esrf-remote
Account esrf
2019-01-31 09:41:03 +01:00
MaildirStore esrf-local
Path ~/.mail/esrf/
Inbox ~/.mail/esrf/Inbox
2019-01-31 09:41:03 +01:00
Channel esrf-Home
2021-04-25 19:10:57 +02:00
Far :esrf-remote:INBOX
Near :esrf-local:Inbox
2019-01-31 09:41:03 +01:00
Channel esrf-Drafts
2021-04-25 19:10:57 +02:00
Far :esrf-remote:Drafts
Near :esrf-local:Drafts
2019-01-31 09:41:03 +01:00
Channel esrf-Archive
2021-04-25 19:10:57 +02:00
Far :esrf-remote:Archive
Near :esrf-local:Archive
2019-01-31 09:41:03 +01:00
Channel esrf-Sent
2021-04-25 19:10:57 +02:00
Far :esrf-remote:Sent
Near :esrf-local:Sent
2019-01-31 09:41:03 +01:00
Channel esrf-Trash
2021-04-25 19:10:57 +02:00
Far :esrf-remote:Trash
Near :esrf-local:Trash
2019-01-31 09:41:03 +01:00
#+END_SRC
#+BEGIN_SRC conf
Channel esrf
2021-04-25 19:10:57 +02:00
Far :esrf-remote:
Near :esrf-local:
2019-01-31 09:41:03 +01:00
#+END_SRC
2022-02-06 22:06:00 +01:00
For doing a quick sync of just the INBOX with =mbsync esrf-download=.
2019-01-31 09:41:03 +01:00
#+BEGIN_SRC conf
Channel esrf-download
2021-04-25 19:10:57 +02:00
Far :esrf-remote:INBOX
Near :esrf-local:Inbox
Create Near
Expunge Near
Sync Pull
2019-01-31 09:41:03 +01:00
#+END_SRC
2021-01-01 20:12:34 +01:00
* =msmtp= - Send Mails
:PROPERTIES:
:header-args:conf: :tangle ~/.config/msmtp/config
:header-args:conf+: :comments both :mkdirp yes
2021-01-01 20:12:34 +01:00
:CUSTOM_ID: msmtp
:END:
2019-01-31 09:41:03 +01:00
https://marlam.de/msmtp/
** Defaults
#+BEGIN_SRC conf
defaults
auth on
tls on
tls_certcheck off
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+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"
2019-01-31 09:41:03 +01:00
#+END_SRC
** Default Account
#+BEGIN_SRC conf
2022-02-06 22:05:10 +01:00
account default : esrf
2019-01-31 09:41:03 +01:00
#+END_SRC
2021-01-01 20:12:34 +01:00
* =mu= - Mail Indexer
:PROPERTIES:
:header-args:conf: :tangle ~/.config/neomutt/neomuttrc
:header-args:conf+: :comments both :mkdirp yes
:CUSTOM_ID: mu
:END:
2020-03-22 23:03:23 +01:00
=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'
2020-03-22 23:03:23 +01:00
#+end_src
2019-01-31 09:41:03 +01:00
2021-01-01 20:12:34 +01:00
* =neomutt= - Mail Client
:PROPERTIES:
:header-args:conf: :tangle ~/.config/neomutt/neomuttrc
:header-args:conf+: :comments both :mkdirp yes
2021-01-01 20:12:34 +01:00
:CUSTOM_ID: neomutt
:END:
2019-01-31 09:41:03 +01:00
https://neomutt.org/
2019-03-26 12:09:49 +01:00
Documentation:
#+begin_src bash :results none :exports code :tangle no
man neomutt
man neomuttrc
2019-03-26 12:09:49 +01:00
#+end_src
2019-01-31 09:41:03 +01:00
** Bindings
2019-05-16 21:13:08 +02:00
*** 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
2019-05-16 21:13:08 +02:00
#+end_src
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
*** Quit Neomutt
#+begin_src conf
bind index,pager,compose Q exit
macro index q "<shell-escape>if [ $TMUX ]; then tmux detach; fi<enter>"
2019-05-16 21:13:08 +02:00
#+end_src
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
*** Generic
#+begin_src conf
bind generic Q exit
2019-12-15 10:54:16 +01:00
bind generic <Return> select-entry
bind generic l select-entry
2019-01-31 09:41:03 +01:00
bind generic,index k previous-entry
bind generic,index j next-entry
2019-01-31 09:41:03 +01:00
bind generic,index 0 first-entry
bind generic,index $ last-entry
2019-05-16 21:13:08 +02:00
bind generic,index \031 previous-entry # Mouse wheel
bind generic,index \005 next-entry # Mouse wheel
2019-05-16 21:13:08 +02:00
bind generic,index gg first-entry
bind generic,index G last-entry
2019-05-16 21:13:08 +02:00
bind generic,index,pager \Cu half-up
bind generic,index,pager \Cd half-down
2019-05-16 21:13:08 +02:00
bind generic,index,pager \Ce next-line
bind generic,index,pager \Cy previous-line
2019-05-16 21:13:08 +02:00
#+end_src
2022-05-13 15:46:09 +02:00
*** Index (list of mails)
#+begin_src conf
bind index <space> collapse-thread
2019-05-16 21:13:08 +02:00
bind index,pager K previous-entry
bind index,pager J next-entry
2019-05-16 21:13:08 +02:00
bind index l display-message
bind index <Return> display-message
2019-01-31 09:41:03 +01:00
macro index h "<change-folder>?" "Go back to the list of mailboxes"
bind pager h exit
2019-01-31 09:41:03 +01:00
macro index c "<change-folder>?<toggle-mailboxes>" "change folder"
2019-05-16 21:13:08 +02:00
bind index,pager u undelete-message
2019-01-31 09:41:03 +01:00
bind index,pager P print-message
2019-01-31 09:41:03 +01:00
# Compose a new email (not a reply) to the sender
bind index,pager @ compose-to-sender
2019-07-20 17:27:59 +02:00
# 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"
2022-05-13 15:46:09 +02:00
#+end_src
#+begin_src conf
bind index U toggle-new
#+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
*** Pager (One mail opened)
#+BEGIN_SRC conf
bind pager k previous-line
bind pager j next-line
bind pager l view-attachments
# Display mode information
bind pager i display-toggle-weed
bind pager gg top
bind pager 0 top
bind pager G bottom
bind pager $ bottom
bind pager q exit
macro pager L "<pipe-message> urlscan<Enter>" "call urls
2019-05-16 21:13:08 +02:00
#+END_SRC
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
#+begin_src conf
2021-02-10 17:59:43 +01:00
bind index z collapse-thread
bind index Z collapse-all
2019-05-16 21:13:08 +02:00
#+end_src
2019-03-26 12:09:49 +01:00
2019-05-16 21:13:08 +02:00
Write/Reply/Forward mail
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
Sync Mailbox
#+begin_src conf
bind index,pager s sync-mailbox
2019-03-05 22:03:30 +01:00
#+end_src
2019-05-16 21:13:08 +02:00
Sync email
2019-01-31 09:41:03 +01:00
#+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>"
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
Make quick html view macro
2019-01-31 09:41:03 +01:00
#+BEGIN_SRC conf
macro index,pager H "<view-attachments><search>html<enter><view-mailcap><exit>"
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
Open mail with Vim
#+begin_src conf
macro index,pager V "<view-attachments><search>plain<enter><view-mailcap><exit>"
2019-05-16 21:13:08 +02:00
#+end_src
Labels
2019-01-31 09:41:03 +01:00
#+BEGIN_SRC conf
bind index,pager y edit-label
bind index,pager Y modify-labels
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-06-22 17:26:36 +02:00
*** Limit
#+begin_src conf
bind index L limit
macro index a <limit>all<enter>
2019-06-22 17:26:36 +02:00
#+end_src
2019-05-16 21:13:08 +02:00
*** Search
#+begin_src conf
bind generic,index,pager / search
2019-01-31 09:41:03 +01:00
bind index,pager n search-next
bind index,pager N search-opposite
2019-05-16 21:13:08 +02:00
#+end_src
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
*** Attachments
#+begin_src conf
bind attach l view-attach
2019-01-31 09:41:03 +01:00
bind attach h exit
bind attach q exit
2019-05-16 21:13:08 +02:00
bind attach <return> view-mailcap
2019-05-16 21:13:08 +02:00
macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
2019-05-16 21:13:08 +02:00
#+end_src
2019-01-31 09:41:03 +01:00
*** 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
2019-01-31 09:41:03 +01:00
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
2020-01-11 22:24:51 +01:00
: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
2022-02-06 22:05:26 +01:00
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
2020-03-22 23:03:23 +01:00
**** Send HTML mails using Markdown
2019-08-23 10:02:42 +02:00
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"
2019-08-23 10:02:42 +02:00
#+END_SRC
2019-05-16 21:13:08 +02:00
*** Browser
#+begin_src conf
bind browser l select-entry
macro browser h "<top-page><select-entry>"
bind browser q exit
2019-05-16 21:13:08 +02:00
#+end_src
*** Generic
Enter Command
#+begin_src conf
bind generic,index,pager : enter-command
2019-05-16 21:13:08 +02:00
#+end_src
*** Sidebar
2019-01-31 09:41:03 +01:00
#+BEGIN_SRC conf
bind index,pager \Cp sidebar-prev
bind index,pager \Cn sidebar-next
bind index,pager \Co sidebar-open
2019-01-31 09:41:03 +01:00
bind index,pager \Ch sidebar-toggle-visible
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
*** Reload Configuration
#+begin_src conf
macro generic,index,pager,editor ,<Space> ":source ~/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
2019-05-16 21:13:08 +02:00
#+end_src
2019-04-05 12:03:36 +02:00
2019-05-16 21:13:08 +02:00
*** urlview - Open URL in emails
Use =urlview= to extract urls from the mail.
2019-04-05 12:03:36 +02:00
#+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'
2019-05-16 21:13:08 +02:00
#+end_src
*** Searching using Mu
#+begin_src conf
2022-05-09 10:03:40 +02:00
macro index,pager \Cf "<shell-escape>$HOME/.config/neomutt/bin/search_mail.sh<enter><change-folder-readonly>~/.mail/search<enter>" \
"test"
# 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"
2019-04-05 12:03:36 +02:00
#+end_src
2019-06-22 17:26:36 +02:00
*** 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/
2019-06-22 17:26:36 +02:00
#+begin_src conf
macro index,pager S "<pipe-message>$HOME/.config/neomutt/bin/mutt-save-org-link.py\n"
2019-06-22 17:26:36 +02:00
#+end_src
2019-12-15 10:54:16 +01:00
2019-08-23 10:02:42 +02:00
**** 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:
2021-10-25 14:25:08 +02:00
https://orgmode.org/manual/The-capture-protocol.html#The-capture-protocol
2019-08-23 10:02:42 +02:00
#+begin_src python
import sys
import email
2021-10-25 14:25:08 +02:00
from email import policy
import subprocess
import urllib.parse
# Parse the email from standard input
message_bytes = sys.stdin.buffer.read()
2021-10-25 14:25:08 +02:00
message = email.message_from_bytes(message_bytes, policy=policy.default)
# Grab the relevant message headers
2021-10-25 14:25:08 +02:00
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
2021-10-25 14:25:08 +02:00
subprocess.Popen([
'emacsclient',
2021-10-25 14:25:08 +02:00
f'org-protocol://capture?template=ps&url={message_id}&title={subject}&body={message_to}'
])
2019-08-23 10:02:42 +02:00
#+end_src
2019-06-22 17:26:36 +02:00
2019-05-16 21:13:08 +02:00
** Colors
2019-07-20 17:27:59 +02:00
#+begin_src conf
2021-05-13 19:08:59 +02:00
color attachment color109 color235
color bold color229 color235
color error color167 color235
color hdrdefault color246 color235
2021-05-13 18:56:48 +02:00
color indicator color223 color237
2021-05-13 19:08:59 +02:00
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
2021-05-13 18:56:48 +02:00
color underline color223 color239
2021-05-13 19:08:59 +02:00
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"
2019-07-20 17:27:59 +02:00
#+end_src
2019-01-31 09:41:03 +01:00
** Contacts with Mu
#+BEGIN_SRC conf
set query_command="mu cfind '%s' -o mutt-ab"
2019-01-31 09:41:03 +01:00
bind editor <Tab> complete-query
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
** Print
2019-01-31 09:41:03 +01:00
https://unix.stackexchange.com/questions/20456/pretty-print-mails-from-mutt
#+BEGIN_SRC conf
# set print_command="/usr/bin/muttprint %s -p ctb110c1u"
2019-01-31 09:41:03 +01:00
#+END_SRC
** Accounts
#+BEGIN_SRC conf
2022-02-06 22:06:00 +01:00
set spoolfile = "+esrf/Inbox" # Default inbox
set realname = "Dehaeze Thomas"
2022-02-06 22:06:00 +01:00
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"
2019-01-31 09:41:03 +01:00
#+END_SRC
*** Gmail
**** Configuration
2019-03-05 22:03:30 +01:00
#+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"
2019-01-31 09:41:03 +01:00
# Other special folders.
2021-10-25 14:25:08 +02:00
set mbox = "+gmail/Archive" # Archive Box
set postponed = "+gmail/Drafts"
2019-01-31 09:41:03 +01:00
2021-10-25 14:25:08 +02:00
unset record # Don't copy send message to Sent folder: Gmail does that for us
set signature = "~/.config/neomutt/accounts/gmail.signature"
2019-01-31 09:41:03 +01:00
macro index,pager d \
"<save-message>+gmail/Archive<enter>" \
"Move message to the Archive"
2019-01-31 09:41:03 +01:00
macro index,pager D \
"<save-message>+gmail/Trash<enter>" \
"Move message to the Trash"
2019-01-31 09:41:03 +01:00
#+end_src
**** Signature
2019-03-05 22:03:30 +01:00
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail.signature :comments none :padline no
Thomas Dehaeze
2019-01-31 09:41:03 +01:00
#+end_src
2020-01-28 21:27:48 +01:00
This empty code block is used to add a new line after signature
2019-03-05 22:03:30 +01:00
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail.signature :comments none :padline no
#+end_src
2019-12-12 23:15:01 +01:00
2019-01-31 09:41:03 +01:00
*** ESRF
**** Configuration
2019-03-05 22:03:30 +01:00
#+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"
2019-01-31 09:41:03 +01:00
# Other special folders.
set mbox = "+esrf/Archive"
set record = "+esrf/Sent"
set postponed = "+esrf/Drafts"
2019-01-31 09:41:03 +01:00
set signature = "~/.config/neomutt/accounts/esrf.signature"
2019-01-31 09:41:03 +01:00
macro index,pager d \
"<save-message>+esrf/Archive<enter>" \
"Move message to the Archive"
2019-01-31 09:41:03 +01:00
macro index,pager D \
"<save-message>+esrf/Trash<enter>" \
"Move message to the Trash"
2019-01-31 09:41:03 +01:00
#+end_src
**** Signature
2019-03-05 22:03:30 +01:00
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
2022-05-09 10:03:40 +02:00
Thomas DEHAEZE
Mechatronics Engineer
ESRF - The European Synchrotron
Tel: +33 (0)4.76.88.22.34
2019-03-05 22:03:30 +01:00
#+end_src
2020-01-28 21:27:48 +01:00
This empty code block is used to add a new line after signature
2019-03-05 22:03:30 +01:00
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf.signature :comments none :padline no
2019-01-31 09:41:03 +01:00
#+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'"
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
** View Options
*** Status Bar
2019-01-31 09:41:03 +01:00
#+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 )?───"
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
*** Index View Options
2019-01-31 09:41:03 +01:00
#+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"
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
*** Pager View Options
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
*** Compose View Options
2019-01-31 09:41:03 +01:00
#+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
2021-01-01 20:12:34 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
*** Headers
2019-01-31 09:41:03 +01:00
#+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
2019-01-31 09:41:03 +01:00
#+END_SRC
2019-05-16 21:13:08 +02:00
** Sidebar
*** General Config
2019-01-31 09:41:03 +01:00
#+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'
2019-05-16 21:13:08 +02:00
#+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
2019-05-16 21:13:08 +02:00
#+BEGIN_SRC conf
unset move
2019-05-16 21:13:08 +02:00
#+END_SRC
** Attachments
*** Attachment View Options
#+BEGIN_SRC conf
set attach_format = "[%D %t] %2n [%-7.7m/%10.10M] %.40d %> [%s] "
2019-01-31 09:41:03 +01:00
#+END_SRC
2020-01-11 22:24:51 +01:00
2019-05-16 21:13:08 +02:00
*** Open Attachment
Program to open is defined in the =mailcap= file.
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
A script =openfile.sh= is used to open files with the default application using =xdg-open=.
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
*** 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.
2019-05-16 21:13:08 +02:00
*** 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))\\>"
2019-05-16 21:13:08 +02:00
#+end_src
2020-01-11 22:24:51 +01:00
2019-05-16 21:13:08 +02:00
** Scripts and other config files
2020-12-09 22:14:17 +01:00
:PROPERTIES:
2022-05-09 10:03:40 +02:00
:header-args: :comments both :mkdirp yes
2020-12-09 22:14:17 +01:00
:header-args+: :shebang "#!/usr/bin/env bash"
:END:
2022-05-09 10:03:40 +02:00
*** Search Mail
#+begin_src bash :tangle ~/.config/neomutt/bin/search_mail.sh
arg_subject=$(rofi -p "Search" -dmenu)
arg_from=$(rofi -p "From" -dmenu)
if [ ! -z "$arg_from" ]; then
arg_from="from:${arg_from}"
fi
arg_to=$(rofi -p "To" -dmenu)
if [ ! -z "$arg_to" ]; then
arg_to="to:${arg_to}"
fi
arg_mime=$(echo -e "\napplication/pdf\nimage/*\nvideo/*" | rofi -i -p "Mime" -dmenu)
if [ ! -z "$arg_mime" ]; then
arg_mime="mime:${arg_mime}"
fi
mu find --clearlinks --format=links --linksdir=~/.mail/search "${arg_from} ${arg_to} ${arg_mime} ${arg_subject}"
#+end_src
*** Send Mail Script
#+begin_src bash :tangle ~/.config/neomutt/bin/send_mail.sh
msmtp -a $1 ${@:2} && \
if [ $TMUX ]; then
tmux split -v -l 1 mbsync $1-Sent && tmux select-pane -U
else
mbsync $1-Sent
fi
2020-12-09 22:14:17 +01:00
#+end_src
*** Sync Mail Script
2022-05-09 10:03:40 +02:00
#+begin_src bash :tangle ~/.config/neomutt/bin/get_new_mail.sh
if [ $TMUX ]; then
tmux split -v -l 1 checkmail $1 && tmux select-pane -U
else
checkmail $1
fi
2019-05-16 21:13:08 +02:00
#+end_src
2019-06-22 17:26:36 +02:00
2019-05-16 21:13:08 +02:00
*** Openfile Scripts
2022-05-09 10:03:40 +02:00
#+begin_src bash :tangle ~/.config/neomutt/bin/openfile.sh
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
2019-05-16 21:13:08 +02:00
*** urlview Config
2020-01-11 22:24:51 +01:00
:PROPERTIES:
:header-args:conf+: :tangle ~/.urlview
:header-args:conf+: :comments both :mkdirp yes
:END:
2019-03-05 22:03:30 +01:00
#+BEGIN_SRC conf
REGEXP (((http|https|ftp|gopher)|mailto)[.:][^ >"\t]*|www\.[-a-z0-9.]+)[^ .,;\t>">\):]
2019-05-16 21:13:08 +02:00
COMMAND nohup qutebrowser %s </dev/null &>/dev/null &
2019-03-05 22:03:30 +01:00
#+END_SRC
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
*** Mailcap
2020-01-11 22:24:51 +01:00
:PROPERTIES:
:header-args:conf: :tangle ~/.config/neomutt/mailcap
:header-args:conf+: :comments both :mkdirp yes
:END:
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
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
2022-02-20 22:05:42 +01:00
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;
2021-10-25 14:25:08 +02:00
#+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;
2019-05-16 21:13:08 +02:00
#+END_SRC
2019-01-31 09:41:03 +01:00
2019-05-16 21:13:08 +02:00
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
2019-05-16 21:13:08 +02:00
#+end_src