Replace neomutt with mu4e
This commit is contained in:
parent
4c3a9c65ee
commit
34558df58c
|
@ -7,18 +7,8 @@
|
||||||
},
|
},
|
||||||
"username": "akasroua@disroot.org",
|
"username": "akasroua@disroot.org",
|
||||||
"passwordCmd": "pass mail/disroot",
|
"passwordCmd": "pass mail/disroot",
|
||||||
"onNewMail": "mbsync disroot",
|
"onNewMail": "~/.local/share/scripts/mail-sync disroot",
|
||||||
"onNewMailPost": "mu index --lazy-check",
|
|
||||||
"boxes": [
|
"boxes": [
|
||||||
"INBOX",
|
"INBOX"
|
||||||
"Sent",
|
|
||||||
"Trash",
|
|
||||||
"Archive",
|
|
||||||
"Junk",
|
|
||||||
"Bookings",
|
|
||||||
"Buying",
|
|
||||||
"Services",
|
|
||||||
"SMART",
|
|
||||||
"Travel"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,8 @@
|
||||||
},
|
},
|
||||||
"username": "akasroua@gmail.com",
|
"username": "akasroua@gmail.com",
|
||||||
"passwordCmd": "pass mail/gmail",
|
"passwordCmd": "pass mail/gmail",
|
||||||
"onNewMail": "mbsync gmail",
|
"onNewMail": "~/.local/share/scripts/mail-sync gmail",
|
||||||
"onNewMailPost": "mu index --lazy-check",
|
|
||||||
"boxes": [
|
"boxes": [
|
||||||
"INBOX",
|
"INBOX"
|
||||||
"[Gmail]/Sent Mail",
|
|
||||||
"[Gmail]/Bin",
|
|
||||||
"[Gmail]/Spam",
|
|
||||||
"[Gmail]/All Mail"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,13 +8,8 @@
|
||||||
"username": "amin.kasrouaouam@ugent.be",
|
"username": "amin.kasrouaouam@ugent.be",
|
||||||
"passwordCmd": "/home/coolneng/.local/share/scripts/mutt_oauth2.py /home/coolneng/.cache/tokenfile",
|
"passwordCmd": "/home/coolneng/.local/share/scripts/mutt_oauth2.py /home/coolneng/.cache/tokenfile",
|
||||||
"xoauth2": true,
|
"xoauth2": true,
|
||||||
"onNewMail": "mbsync ugent",
|
"onNewMail": "~/.local/share/scripts/mail-sync ugent",
|
||||||
"onNewMailPost": "mu index --lazy-check",
|
|
||||||
"boxes": [
|
"boxes": [
|
||||||
"INBOX",
|
"INBOX"
|
||||||
"Sent Items",
|
|
||||||
"Deleted Items",
|
|
||||||
"Archive",
|
|
||||||
"Junk Email"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,12 +116,20 @@ Create Both
|
||||||
Expunge Both
|
Expunge Both
|
||||||
SyncState *
|
SyncState *
|
||||||
|
|
||||||
|
Channel ugent-mailing-lists
|
||||||
|
Far :ugent-remote:"Mailing Lists"
|
||||||
|
Near :ugent-local:mailing-lists
|
||||||
|
Create Both
|
||||||
|
Expunge Both
|
||||||
|
SyncState *
|
||||||
|
|
||||||
Group ugent
|
Group ugent
|
||||||
Channel ugent-default
|
Channel ugent-default
|
||||||
Channel ugent-sent
|
Channel ugent-sent
|
||||||
Channel ugent-trash
|
Channel ugent-trash
|
||||||
Channel ugent-archive
|
Channel ugent-archive
|
||||||
Channel ugent-junk
|
Channel ugent-junk
|
||||||
|
Channel ugent-mailing-lists
|
||||||
|
|
||||||
IMAPAccount disroot
|
IMAPAccount disroot
|
||||||
Host disroot.org
|
Host disroot.org
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
# vim: filetype=neomuttrc
|
|
||||||
# muttrc file for account disroot
|
|
||||||
set realname = "Amin Kasrou Aouam"
|
|
||||||
set from = "akasroua@disroot.org"
|
|
||||||
set sendmail = "~/.config/neomutt/etc/sendmail disroot"
|
|
||||||
set folder = "~/.mail/disroot"
|
|
||||||
|
|
||||||
set mbox_type = Maildir
|
|
||||||
set ssl_starttls = yes
|
|
||||||
set ssl_force_tls = yes
|
|
||||||
|
|
||||||
bind index,pager gg noop
|
|
||||||
bind index,pager g noop
|
|
||||||
bind index gg first-entry
|
|
||||||
unmailboxes *
|
|
||||||
mailboxes =junk =inbox =trash =sent =bookings =buying =services =smart =travel
|
|
||||||
macro index,pager gi "<change-folder>=inbox<enter>" "Go to inbox."
|
|
||||||
macro index,pager gs "<change-folder>=sent<enter>" "Go to sent."
|
|
||||||
macro index,pager gt "<change-folder>=trash<enter>" "Go to trash."
|
|
||||||
macro index,pager gj "<change-folder>=junk<enter>" "Go to spam."
|
|
||||||
macro index,pager gb "<change-folder>=bookings<enter>" "Go to bookings."
|
|
||||||
macro index,pager gy "<change-folder>=buying<enter>" "Go to buying."
|
|
||||||
macro index,pager ge "<change-folder>=services<enter>" "Go to services."
|
|
||||||
macro index,pager gm "<change-folder>=smart<enter>" "Go to smart."
|
|
||||||
macro index,pager gr "<change-folder>=travel<enter>" "Go to travel."
|
|
||||||
set spoolfile = "+inbox"
|
|
||||||
set postponed = ""
|
|
||||||
set trash = "+trash"
|
|
|
@ -1,24 +0,0 @@
|
||||||
# vim: filetype=neomuttrc
|
|
||||||
# muttrc file for account gmail
|
|
||||||
set realname = "Amin Kasrou Aouam"
|
|
||||||
set from = "akasroua@gmail.com"
|
|
||||||
set sendmail = "~/.config/neomutt/etc/sendmail gmail"
|
|
||||||
set folder = "~/.mail/gmail"
|
|
||||||
|
|
||||||
set mbox_type = Maildir
|
|
||||||
set ssl_starttls = yes
|
|
||||||
set ssl_force_tls = yes
|
|
||||||
|
|
||||||
bind index,pager gg noop
|
|
||||||
bind index,pager g noop
|
|
||||||
bind index gg first-entry
|
|
||||||
unmailboxes *
|
|
||||||
mailboxes =junk =Inbox =trash =sent
|
|
||||||
macro index,pager gi "<change-folder>=Inbox<enter>" "Go to inbox."
|
|
||||||
macro index,pager gs "<change-folder>=sent<enter>" "Go to sent."
|
|
||||||
macro index,pager gt "<change-folder>=trash<enter>" "Go to trash."
|
|
||||||
macro index,pager gj "<change-folder>=junk<enter>" "Go to spam."
|
|
||||||
set spoolfile = "+Inbox"
|
|
||||||
set record = "+sent"
|
|
||||||
set postponed = ""
|
|
||||||
set trash = "+trash"
|
|
|
@ -1,25 +0,0 @@
|
||||||
# vim: filetype=neomuttrc
|
|
||||||
# muttrc file for account coolneng
|
|
||||||
set realname = "Amin Kasrou Aouam"
|
|
||||||
set from = "amin.kasrouaouam@ugent.be"
|
|
||||||
set sendmail = "~/.config/neomutt/etc/sendmail ugent"
|
|
||||||
set folder = "~/.mail/ugent"
|
|
||||||
|
|
||||||
set mbox_type = Maildir
|
|
||||||
set ssl_starttls = yes
|
|
||||||
set ssl_force_tls = yes
|
|
||||||
|
|
||||||
bind index,pager gg noop
|
|
||||||
bind index,pager g noop
|
|
||||||
bind index gg first-entry
|
|
||||||
unmailboxes *
|
|
||||||
mailboxes =inbox =sent =trash =archive =junk
|
|
||||||
macro index,pager gi "<change-folder>=inbox<enter>" "Go to inbox."
|
|
||||||
macro index,pager gs "<change-folder>=sent<enter>" "Go to sent."
|
|
||||||
macro index,pager gt "<change-folder>=trash<enter>" "Go to trash."
|
|
||||||
macro index,pager ga "<change-folder>=archive<enter>" "Go to archive."
|
|
||||||
macro index,pager gj "<change-folder>=junk<enter>" "Go to junk."
|
|
||||||
set spoolfile = "+inbox"
|
|
||||||
set record = "+sent"
|
|
||||||
set postponed = ""
|
|
||||||
set trash = "+deleted"
|
|
|
@ -1,66 +0,0 @@
|
||||||
# Header colors:
|
|
||||||
color header blue default ".*"
|
|
||||||
color header brightmagenta default "^(From)"
|
|
||||||
color header brightcyan default "^(Subject)"
|
|
||||||
color header brightwhite default "^(CC|BCC)"
|
|
||||||
|
|
||||||
mono bold bold
|
|
||||||
mono underline underline
|
|
||||||
mono indicator reverse
|
|
||||||
mono error bold
|
|
||||||
color normal default default
|
|
||||||
color indicator brightmagenta default # currently selected message. default makes bar clear, disabled arrow to save space.
|
|
||||||
color sidebar_highlight red default
|
|
||||||
color sidebar_divider brightblack black
|
|
||||||
color sidebar_flagged red black
|
|
||||||
color sidebar_new green black
|
|
||||||
color normal brightyellow default
|
|
||||||
color error red default
|
|
||||||
color tilde black default
|
|
||||||
color message cyan default
|
|
||||||
color markers red white
|
|
||||||
color attachment white default
|
|
||||||
color search brightmagenta default
|
|
||||||
color status magenta black
|
|
||||||
color hdrdefault brightgreen default
|
|
||||||
color quoted green default
|
|
||||||
color quoted1 blue default
|
|
||||||
color quoted2 cyan default
|
|
||||||
color quoted3 yellow default
|
|
||||||
color quoted4 red default
|
|
||||||
color quoted5 brightred default
|
|
||||||
color signature brightgreen default
|
|
||||||
color bold black default
|
|
||||||
color underline black default
|
|
||||||
color normal default default
|
|
||||||
|
|
||||||
color body brightblue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
|
||||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
|
||||||
color body green default "\`[^\`]*\`" # Green text between ` and `
|
|
||||||
color body brightblue default "^# \.*" # Headings as bold blue
|
|
||||||
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
|
||||||
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
|
||||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
|
||||||
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
|
||||||
color body brightcyan default "[;:][)(|]" # emoticons
|
|
||||||
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
|
||||||
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
|
||||||
color body red default "(BAD signature)"
|
|
||||||
color body cyan default "(Good signature)"
|
|
||||||
color body brightblack default "^gpg: Good signature .*"
|
|
||||||
color body brightyellow default "^gpg: "
|
|
||||||
color body brightyellow red "^gpg: BAD signature from.*"
|
|
||||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
|
||||||
|
|
||||||
# Default index colors:
|
|
||||||
color index brightwhite default '.*'
|
|
||||||
color index_author brightgreen default '.*'
|
|
||||||
color index_number blue default
|
|
||||||
color index_subject cyan default '.*'
|
|
||||||
|
|
||||||
# For new mail:
|
|
||||||
color index brightyellow black "~N"
|
|
||||||
color index_author brightred black "~N"
|
|
||||||
color index_subject brightcyan black "~N"
|
|
||||||
|
|
||||||
color progress black cyan
|
|
|
@ -1,21 +0,0 @@
|
||||||
## A file for aliases
|
|
||||||
|
|
||||||
# UGR professors
|
|
||||||
alias dani dmolina@decsai.ugr.es
|
|
||||||
alias cano ccano@decsai.ugr.es
|
|
||||||
alias merino cmerino@ugr.es
|
|
||||||
alias fran fjrodriguez@decsai.ugr.es
|
|
||||||
alias salva salvaguti@decsai.ugr.es
|
|
||||||
alias marisol marisolbc@ugr.es
|
|
||||||
|
|
||||||
# UGent students
|
|
||||||
alias mickey michael.fatjanov@ugent.be
|
|
||||||
alias natan natan.tourne@ugent.be
|
|
||||||
alias conor sean.barr@ugent.be
|
|
||||||
|
|
||||||
# Personal
|
|
||||||
alias barbas arodasaparicio@gmail.com
|
|
||||||
alias rafika rafibel63@gmail.com
|
|
||||||
alias oekk luismata06@gmail.com
|
|
||||||
alias walid mkasrou@gmail.com
|
|
||||||
alias walida naouam61@gmail.com
|
|
|
@ -1,131 +0,0 @@
|
||||||
# -*-muttrc-*-
|
|
||||||
#
|
|
||||||
# Command formats for gpg.
|
|
||||||
#
|
|
||||||
# Version notes:
|
|
||||||
#
|
|
||||||
# GPG 2.1 introduces the option "--pinentry-mode", which requires
|
|
||||||
# the "loopback" argument in instances where "--passphrase-fd" is
|
|
||||||
# used.
|
|
||||||
#
|
|
||||||
# Some of the older commented-out versions of the commands use gpg-2comp from:
|
|
||||||
# http://70t.de/download/gpg-2comp.tar.gz
|
|
||||||
#
|
|
||||||
# %p The empty string when no passphrase is needed,
|
|
||||||
# the string "PGPPASSFD=0" if one is needed.
|
|
||||||
#
|
|
||||||
# This is mostly used in conditional % sequences.
|
|
||||||
#
|
|
||||||
# %f Most PGP commands operate on a single file or a file
|
|
||||||
# containing a message. %f expands to this file's name.
|
|
||||||
#
|
|
||||||
# %s When verifying signatures, there is another temporary file
|
|
||||||
# containing the detached signature. %s expands to this
|
|
||||||
# file's name.
|
|
||||||
#
|
|
||||||
# %a In "signing" contexts, this expands to the value of the
|
|
||||||
# configuration variable $pgp_sign_as, if set, otherwise
|
|
||||||
# $pgp_default_key. You probably need to
|
|
||||||
# use this within a conditional % sequence.
|
|
||||||
#
|
|
||||||
# %r In many contexts, neomutt passes key IDs to pgp. %r expands to
|
|
||||||
# a list of key IDs.
|
|
||||||
|
|
||||||
# Section A: Key Management
|
|
||||||
|
|
||||||
# The default key for encryption (used by $pgp_self_encrypt and
|
|
||||||
# $postpone_encrypt).
|
|
||||||
#
|
|
||||||
# It will also be used for signing unless $pgp_sign_as is set to a
|
|
||||||
# key.
|
|
||||||
#
|
|
||||||
# Unless your key does not have encryption capability, uncomment this
|
|
||||||
# line and replace the keyid with your own.
|
|
||||||
#
|
|
||||||
# set pgp_default_key="0x12345678"
|
|
||||||
|
|
||||||
# If you have a separate signing key, or your key _only_ has signing
|
|
||||||
# capability, uncomment this line and replace the keyid with your
|
|
||||||
# signing keyid.
|
|
||||||
#
|
|
||||||
# set pgp_sign_as="0x87654321"
|
|
||||||
|
|
||||||
|
|
||||||
# Section B: Commands
|
|
||||||
|
|
||||||
# Note that we explicitly set the comment armor header since GnuPG, when used
|
|
||||||
# in some localiaztion environments, generates 8bit data in that header, thereby
|
|
||||||
# breaking PGP/MIME.
|
|
||||||
|
|
||||||
# decode application/pgp
|
|
||||||
#
|
|
||||||
set pgp_decode_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
|
|
||||||
|
|
||||||
# Verify a signature
|
|
||||||
#
|
|
||||||
set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f"
|
|
||||||
|
|
||||||
# Decrypt an attachment
|
|
||||||
#
|
|
||||||
set pgp_decrypt_command="gpg --status-fd=2 %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --quiet --batch --output - --decrypt %f"
|
|
||||||
|
|
||||||
# Create a PGP/MIME signed attachment
|
|
||||||
#
|
|
||||||
# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
|
|
||||||
#
|
|
||||||
set pgp_sign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --detach-sign %f"
|
|
||||||
|
|
||||||
# Create a application/pgp inline signed message. This style is obsolete but still needed for Hushmail recipients and some MUAs.
|
|
||||||
#
|
|
||||||
# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
|
|
||||||
#
|
|
||||||
set pgp_clearsign_command="gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --no-verbose --batch --quiet --output - --armor --textmode %?a?--local-user %a? --clearsign %f"
|
|
||||||
|
|
||||||
# Create an encrypted attachment (note that some users include the --always-trust option here)
|
|
||||||
#
|
|
||||||
# set pgp_encrypt_only_command="/usr/libexec/neomutt/pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
|
|
||||||
#
|
|
||||||
set pgp_encrypt_only_command="/usr/libexec/neomutt/pgpewrap gpg --batch --quiet --no-verbose --output - --textmode --armor --encrypt -- --recipient %r -- %f"
|
|
||||||
|
|
||||||
# Create an encrypted and signed attachment (note that some users include the --always-trust option here)
|
|
||||||
#
|
|
||||||
# set pgp_encrypt_sign_command="/usr/libexec/neomutt/pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
|
|
||||||
#
|
|
||||||
set pgp_encrypt_sign_command="/usr/libexec/neomutt/pgpewrap gpg %?p?--pinentry-mode loopback --passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - %?a?--local-user %a? --armor --sign --encrypt -- --recipient %r -- %f"
|
|
||||||
|
|
||||||
# Import a key into the public key ring
|
|
||||||
#
|
|
||||||
set pgp_import_command="gpg --no-verbose --import %f"
|
|
||||||
|
|
||||||
# Export a key from the public key ring
|
|
||||||
#
|
|
||||||
set pgp_export_command="gpg --no-verbose --armor --export %r"
|
|
||||||
|
|
||||||
# Verify a key
|
|
||||||
#
|
|
||||||
set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r"
|
|
||||||
|
|
||||||
# Read in the public key ring
|
|
||||||
#
|
|
||||||
set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-keys %r"
|
|
||||||
|
|
||||||
# Read in the secret key ring
|
|
||||||
#
|
|
||||||
set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --with-fingerprint --with-fingerprint --list-secret-keys %r"
|
|
||||||
|
|
||||||
# Fetch keys
|
|
||||||
# set pgp_getkeys_command="pkspxycwrap %r"
|
|
||||||
|
|
||||||
# pattern for good signature - may need to be adapted to locale!
|
|
||||||
# OK, here's a version which uses gnupg's message catalog:
|
|
||||||
# set pgp_good_sign="^gpgv?: Good signature from"
|
|
||||||
# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"
|
|
||||||
#
|
|
||||||
# Output pattern to indicate a valid signature using --status-fd messages
|
|
||||||
set pgp_good_sign="^\\[GNUPG:\\] GOODSIG"
|
|
||||||
|
|
||||||
# Output pattern to verify a decryption occurred
|
|
||||||
# This is now deprecated by pgp_check_gpg_decrypt_status_fd:
|
|
||||||
# set pgp_decryption_okay="^\\[GNUPG:\\] DECRYPTION_OKAY"
|
|
||||||
set pgp_check_gpg_decrypt_status_fd
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
text/html; w3m -I %{charset} -T text/html %s; copiousoutput;
|
|
||||||
text/* ; nvim %s ; edit=nvim %s ; compose=nvim %s ; needsterminal
|
|
||||||
image/*; imv %s ; copiousoutput
|
|
||||||
application/pdf; zathura %s ;
|
|
||||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice %s ;
|
|
||||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice %s ;
|
|
||||||
application/msword; libreoffice %s ;
|
|
||||||
application/pgp-encrypted; gpg -d '%s'; copiousoutput;
|
|
|
@ -1,71 +0,0 @@
|
||||||
# vim: filetype=neomuttrc
|
|
||||||
|
|
||||||
# Default index colors:
|
|
||||||
color index yellow default '.*'
|
|
||||||
color index_author red default '.*'
|
|
||||||
color index_number blue default
|
|
||||||
color index_subject cyan default '.*'
|
|
||||||
|
|
||||||
# For new mail:
|
|
||||||
color index brightyellow black "~N"
|
|
||||||
color index_author brightred black "~N"
|
|
||||||
color index_subject brightcyan black "~N"
|
|
||||||
|
|
||||||
# Header colors:
|
|
||||||
color header blue default ".*"
|
|
||||||
color header brightmagenta default "^(From)"
|
|
||||||
color header brightcyan default "^(Subject)"
|
|
||||||
color header brightwhite default "^(CC|BCC)"
|
|
||||||
|
|
||||||
mono bold bold
|
|
||||||
mono underline underline
|
|
||||||
mono indicator reverse
|
|
||||||
mono error bold
|
|
||||||
color normal default default
|
|
||||||
color indicator brightblack white
|
|
||||||
color sidebar_highlight red default
|
|
||||||
color sidebar_divider brightblack black
|
|
||||||
color sidebar_flagged red black
|
|
||||||
color sidebar_new green black
|
|
||||||
color normal brightyellow default
|
|
||||||
color error red default
|
|
||||||
color tilde black default
|
|
||||||
color message cyan default
|
|
||||||
color markers red white
|
|
||||||
color attachment white default
|
|
||||||
color search brightmagenta default
|
|
||||||
color status brightyellow black
|
|
||||||
color hdrdefault brightgreen default
|
|
||||||
color quoted green default
|
|
||||||
color quoted1 blue default
|
|
||||||
color quoted2 cyan default
|
|
||||||
color quoted3 yellow default
|
|
||||||
color quoted4 red default
|
|
||||||
color quoted5 brightred default
|
|
||||||
color signature brightgreen default
|
|
||||||
color bold black default
|
|
||||||
color underline black default
|
|
||||||
color normal default default
|
|
||||||
|
|
||||||
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
|
||||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
|
||||||
color body green default "\`[^\`]*\`" # Green text between ` and `
|
|
||||||
color body brightblue default "^# \.*" # Headings as bold blue
|
|
||||||
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
|
||||||
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
|
||||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
|
||||||
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
|
||||||
color body brightcyan default "[;:][)(|]" # emoticons
|
|
||||||
color body brightcyan default "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\
|
|
||||||
|FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\
|
|
||||||
|IRL|RTFM|ROTFL|ROFL|YMMV)[*]?"
|
|
||||||
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
|
||||||
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
|
||||||
color body red default "(BAD signature)"
|
|
||||||
color body cyan default "(Good signature)"
|
|
||||||
color body brightblack default "^gpg: Good signature .*"
|
|
||||||
color body brightyellow default "^gpg: "
|
|
||||||
color body brightyellow red "^gpg: BAD signature from.*"
|
|
||||||
mono body bold "^gpg: Good signature"
|
|
||||||
mono body bold "^gpg: BAD signature from.*"
|
|
||||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]""']))']))']))']))']))']))']))']))']))']))']))']))'])']))))))])]"
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
nix-shell -p python3 --command "python ~/.local/bin/MIMEmbellish | msmtp -a $1 -t"
|
|
|
@ -1,93 +0,0 @@
|
||||||
#vim: filetype=neomuttrc
|
|
||||||
# This is the general mutt config which has the settings that all accounts use.
|
|
||||||
bind index,pager i noop
|
|
||||||
bind index,pager g noop
|
|
||||||
bind index \Cf noop
|
|
||||||
source etc/muttcol
|
|
||||||
source etc/aliases
|
|
||||||
source personal.muttrc
|
|
||||||
source colors.muttrc
|
|
||||||
set sleep_time = 0
|
|
||||||
set sort = 'reverse-date'
|
|
||||||
set editor = $EDITOR
|
|
||||||
set copy = no
|
|
||||||
set beep_new = yes
|
|
||||||
set mailcap_path = ~/.config/neomutt/etc/mailcap
|
|
||||||
set date_format="%d/%m/%y %H:%M"
|
|
||||||
set index_format="%2C %zs %?X?A& ? %D %-15.15F %s (%-4.4c)"
|
|
||||||
set markers = no
|
|
||||||
set mark_old = no
|
|
||||||
set mime_forward = yes
|
|
||||||
set smtp_authenticators = 'gssapi:login'
|
|
||||||
set wait_key = no
|
|
||||||
auto_view text/html
|
|
||||||
auto_view application/pgp-encrypted
|
|
||||||
alternative_order text/plain text/enriched text/html
|
|
||||||
set rfc2047_parameters = yes
|
|
||||||
set send_charset = 'us-ascii:utf-8'
|
|
||||||
set ssl_use_tlsv1_2 = yes
|
|
||||||
unset help
|
|
||||||
set pager_stop = yes
|
|
||||||
set wrap=-20
|
|
||||||
|
|
||||||
# General remappings
|
|
||||||
bind editor <space> noop
|
|
||||||
bind index G last-entry
|
|
||||||
bind index gg first-entry
|
|
||||||
bind pager j next-line
|
|
||||||
bind pager k previous-line
|
|
||||||
bind pager gg top
|
|
||||||
bind pager G bottom
|
|
||||||
bind index d half-down
|
|
||||||
bind index u half-up
|
|
||||||
bind index D delete-message
|
|
||||||
bind index U undelete-message
|
|
||||||
bind index F search
|
|
||||||
bind index,pager R group-reply
|
|
||||||
bind index,pager \031 previous-undeleted # Mouse wheel
|
|
||||||
bind index,pager \005 next-undeleted # Mouse wheel
|
|
||||||
macro index,pager S <sync-mailbox>
|
|
||||||
macro index,pager \Cu |urlscan\n
|
|
||||||
macro index,pager ,, |urlscan\n
|
|
||||||
|
|
||||||
# View attachments properly.
|
|
||||||
bind attach <return> view-mailcap
|
|
||||||
set fast_reply # skip to compose when replying
|
|
||||||
set fcc_attach # save attachments with the body
|
|
||||||
unset mime_forward # forward attachments as part of body
|
|
||||||
set forward_format = "Fwd: %s" # format of subject when forwarding
|
|
||||||
set forward_decode # decode when forwarding
|
|
||||||
set forward_quote # include message in forwards
|
|
||||||
set reverse_name # reply as whomever it was to
|
|
||||||
set include # include message in replies
|
|
||||||
|
|
||||||
#Ctrl-R to mark all as read
|
|
||||||
macro index \Cr "T~U<enter><tag-prefix><clear-flag>N<untag-pattern>.<enter>" "mark all messages as read"
|
|
||||||
#
|
|
||||||
# #sync email
|
|
||||||
macro index o "<shell-escape>mbsync -a 2>/dev/null 1>&2 &<enter>" "run mbsync to sync all mail"
|
|
||||||
|
|
||||||
# #copy/move dialogs
|
|
||||||
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"
|
|
||||||
|
|
||||||
# Notmuch searching
|
|
||||||
macro index \Cf "<enter-command>unset wait_key<enter><shell-escape>read -p 'notmuch query: ' x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;chomp@a;s/\^id:// for@a;$,=\"|\";print@a'\`\"<enter>" "show only messages matching a notmuch pattern"
|
|
||||||
macro index A "<limit>all\n" "show all messages (undo limit)"
|
|
||||||
|
|
||||||
# # Sidebar mappings
|
|
||||||
set sidebar_visible = yes
|
|
||||||
set sidebar_width = 20
|
|
||||||
set sidebar_short_path = yes
|
|
||||||
set sidebar_next_new_wrap = yes
|
|
||||||
set mail_check_stats
|
|
||||||
set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?'
|
|
||||||
bind index,pager \Ck sidebar-prev
|
|
||||||
bind index,pager \Cj sidebar-next
|
|
||||||
bind index,pager \Co sidebar-open
|
|
||||||
bind index,pager \Cp sidebar-prev-new
|
|
||||||
bind index,pager \Cn sidebar-next-new
|
|
||||||
bind index,pager B sidebar-toggle-visible
|
|
||||||
|
|
||||||
# Remove signature
|
|
||||||
unset signature
|
|
|
@ -1,6 +0,0 @@
|
||||||
macro index,pager i3 '<sync-mailbox><enter-command>source "/home/coolneng/.config/neomutt"/accounts/disroot.muttrc<enter><change-folder>!<enter>'
|
|
||||||
source /home/coolneng/.config/neomutt/accounts/disroot.muttrc
|
|
||||||
macro index,pager i2 '<sync-mailbox><enter-command>source "/home/coolneng/.config/neomutt"/accounts/gmail.muttrc<enter><change-folder>!<enter>'
|
|
||||||
source /home/coolneng/.config/neomutt/accounts/gmail.muttrc
|
|
||||||
macro index,pager i1 '<sync-mailbox><enter-command>source "/home/coolneng/.config/neomutt"/accounts/ugent.muttrc<enter><change-folder>!<enter>'
|
|
||||||
source /home/coolneng/.config/neomutt/accounts/ugent.muttrc
|
|
|
@ -1,238 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
import email
|
|
||||||
import shlex
|
|
||||||
import mimetypes
|
|
||||||
import subprocess
|
|
||||||
from copy import copy
|
|
||||||
from hashlib import md5
|
|
||||||
from email import charset
|
|
||||||
from email import encoders
|
|
||||||
from email.mime.text import MIMEText
|
|
||||||
from email.mime.multipart import MIMEMultipart
|
|
||||||
from email.mime.nonmultipart import MIMENonMultipart
|
|
||||||
from os.path import basename, splitext, expanduser
|
|
||||||
|
|
||||||
|
|
||||||
charset.add_charset('utf-8', charset.SHORTEST, '8bit')
|
|
||||||
|
|
||||||
|
|
||||||
def pandoc(from_format, to_format='markdown', plain='markdown', title=None):
|
|
||||||
markdown = ('markdown'
|
|
||||||
'-blank_before_blockquote')
|
|
||||||
|
|
||||||
if from_format == 'plain':
|
|
||||||
from_format = plain
|
|
||||||
if from_format == 'markdown':
|
|
||||||
from_format = markdown
|
|
||||||
if to_format == 'markdown':
|
|
||||||
to_format = markdown
|
|
||||||
|
|
||||||
command = 'pandoc -f {} -t {} --standalone --highlight-style=tango'
|
|
||||||
if to_format in ('html', 'html5'):
|
|
||||||
if title is not None:
|
|
||||||
command += ' --variable=pagetitle:{}'.format(shlex.quote(title))
|
|
||||||
command += ' --webtex --template={}'.format(
|
|
||||||
expanduser('~/.pandoc/templates/email.html'))
|
|
||||||
return command.format(from_format, to_format)
|
|
||||||
|
|
||||||
|
|
||||||
def gmailfy(payload):
|
|
||||||
return payload.replace('<blockquote>',
|
|
||||||
'<blockquote class="gmail_quote" style="'
|
|
||||||
'padding: 0 7px 0 7px;'
|
|
||||||
'border-left: 2px solid #cccccc;'
|
|
||||||
'font-style: italic;'
|
|
||||||
'margin: 0 0 7px 3px;'
|
|
||||||
'">')
|
|
||||||
|
|
||||||
|
|
||||||
def make_alternative(message, part):
|
|
||||||
alternative = convert(part, 'html',
|
|
||||||
pandoc(part.get_content_subtype(),
|
|
||||||
to_format='html',
|
|
||||||
title=message.get('Subject')))
|
|
||||||
alternative.set_payload(gmailfy(alternative.get_payload()))
|
|
||||||
return alternative
|
|
||||||
|
|
||||||
|
|
||||||
def make_replacement(message, part):
|
|
||||||
return convert(part, 'plain', pandoc(part.get_content_subtype()))
|
|
||||||
|
|
||||||
|
|
||||||
def convert(part, to_subtype, command):
|
|
||||||
payload = part.get_payload()
|
|
||||||
if isinstance(payload, str):
|
|
||||||
payload = payload.encode('utf-8')
|
|
||||||
else:
|
|
||||||
payload = part.get_payload(None, True)
|
|
||||||
if not isinstance(payload, bytes):
|
|
||||||
payload = payload.encode('utf-8')
|
|
||||||
process = subprocess.run(
|
|
||||||
shlex.split(command),
|
|
||||||
input=payload, stdout=subprocess.PIPE, check=True)
|
|
||||||
return MIMEText(process.stdout, to_subtype, 'utf-8')
|
|
||||||
|
|
||||||
|
|
||||||
def with_alternative(parent, part, from_signed,
|
|
||||||
make_alternative=make_alternative,
|
|
||||||
make_replacement=None):
|
|
||||||
try:
|
|
||||||
alternative = make_alternative(parent or part, from_signed or part)
|
|
||||||
replacement = (make_replacement(parent or part, part)
|
|
||||||
if from_signed is None and make_replacement is not None
|
|
||||||
else part)
|
|
||||||
except:
|
|
||||||
return parent or part
|
|
||||||
envelope = MIMEMultipart('alternative')
|
|
||||||
if parent is None:
|
|
||||||
for k, v in part.items():
|
|
||||||
if (k.lower() != 'mime-version'
|
|
||||||
and not k.lower().startswith('content-')):
|
|
||||||
envelope.add_header(k, v)
|
|
||||||
del part[k]
|
|
||||||
envelope.attach(replacement)
|
|
||||||
envelope.attach(alternative)
|
|
||||||
if parent is None:
|
|
||||||
return envelope
|
|
||||||
payload = parent.get_payload()
|
|
||||||
payload[payload.index(part)] = envelope
|
|
||||||
return parent
|
|
||||||
|
|
||||||
|
|
||||||
def tag_attachments(message):
|
|
||||||
if message.get_content_type() == 'multipart/mixed':
|
|
||||||
for part in message.get_payload():
|
|
||||||
if (part.get_content_maintype() in ['image']
|
|
||||||
and 'Content-ID' not in part):
|
|
||||||
filename = part.get_param('filename',
|
|
||||||
header='Content-Disposition')
|
|
||||||
if isinstance(filename, tuple):
|
|
||||||
filename = str(filename[2], filename[0] or 'us-ascii')
|
|
||||||
if filename:
|
|
||||||
filename = splitext(basename(filename))[0]
|
|
||||||
if filename:
|
|
||||||
part.add_header('Content-ID', '<{}>'.format(filename))
|
|
||||||
return message
|
|
||||||
|
|
||||||
|
|
||||||
def attachment_from_file_path(attachment_path):
|
|
||||||
try:
|
|
||||||
mime, encoding = mimetypes.guess_type(attachment_path, strict=False)
|
|
||||||
maintype, subtype = mime.split('/')
|
|
||||||
with open(attachment_path, 'rb') as payload:
|
|
||||||
attachment = MIMENonMultipart(maintype, subtype)
|
|
||||||
attachment.set_payload(payload.read())
|
|
||||||
encoders.encode_base64(attachment)
|
|
||||||
if encoding:
|
|
||||||
attachment.add_header('Content-Encoding', encoding)
|
|
||||||
return attachment
|
|
||||||
except:
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
attachment_path_pattern = re.compile(r'\]\s*\(\s*file://(/[^)]*\S)\s*\)|'
|
|
||||||
r'\]\s*:\s*file://(/.*\S)\s*$',
|
|
||||||
re.MULTILINE)
|
|
||||||
|
|
||||||
|
|
||||||
def link_attachments(payload):
|
|
||||||
attached = []
|
|
||||||
attachments = []
|
|
||||||
|
|
||||||
def on_match(match):
|
|
||||||
if match.group(1):
|
|
||||||
attachment_path = match.group(1)
|
|
||||||
cid_fmt = '](cid:{})'
|
|
||||||
else:
|
|
||||||
attachment_path = match.group(2)
|
|
||||||
cid_fmt = ']: cid:{}'
|
|
||||||
attachment_id = md5(attachment_path.encode()).hexdigest()
|
|
||||||
if attachment_id in attached:
|
|
||||||
return cid_fmt.format(attachment_id)
|
|
||||||
attachment = attachment_from_file_path(attachment_path)
|
|
||||||
if attachment:
|
|
||||||
attachment.add_header('Content-ID', '<{}>'.format(attachment_id))
|
|
||||||
attachments.append(attachment)
|
|
||||||
attached.append(attachment_id)
|
|
||||||
return cid_fmt.format(attachment_id)
|
|
||||||
return match.group()
|
|
||||||
|
|
||||||
return attachments, attachment_path_pattern.sub(on_match, payload)
|
|
||||||
|
|
||||||
|
|
||||||
def with_local_attachments(parent, part, from_signed,
|
|
||||||
link_attachments=link_attachments):
|
|
||||||
if from_signed is None:
|
|
||||||
attachments, payload = link_attachments(part.get_payload())
|
|
||||||
part.set_payload(payload)
|
|
||||||
else:
|
|
||||||
attachments, payload = link_attachments(from_signed.get_payload())
|
|
||||||
from_signed = copy(from_signed)
|
|
||||||
from_signed.set_payload(payload)
|
|
||||||
if not attachments:
|
|
||||||
return parent, part, from_signed
|
|
||||||
if parent is None:
|
|
||||||
parent = MIMEMultipart('mixed')
|
|
||||||
for k, v in part.items():
|
|
||||||
if (k.lower() != 'mime-version'
|
|
||||||
and not k.lower().startswith('content-')):
|
|
||||||
parent.add_header(k, v)
|
|
||||||
del part[k]
|
|
||||||
parent.attach(part)
|
|
||||||
for attachment in attachments:
|
|
||||||
parent.attach(attachment)
|
|
||||||
return parent, part, from_signed
|
|
||||||
|
|
||||||
|
|
||||||
def is_target(part, target_subtypes):
|
|
||||||
return (part.get('Content-Disposition', 'inline') == 'inline'
|
|
||||||
and part.get_content_maintype() == 'text'
|
|
||||||
and part.get_content_subtype() in target_subtypes)
|
|
||||||
|
|
||||||
|
|
||||||
def pick_from_signed(part, target_subtypes):
|
|
||||||
for from_signed in part.get_payload():
|
|
||||||
if is_target(from_signed, target_subtypes):
|
|
||||||
return from_signed
|
|
||||||
|
|
||||||
|
|
||||||
def seek_target(message, target_subtypes=['plain', 'markdown']):
|
|
||||||
if message.is_multipart():
|
|
||||||
if message.get_content_type() == 'multipart/signed':
|
|
||||||
part = pick_from_signed(message, target_subtypes)
|
|
||||||
if part is not None:
|
|
||||||
return None, message, part
|
|
||||||
elif message.get_content_type() == 'multipart/mixed':
|
|
||||||
for part in message.get_payload():
|
|
||||||
if part.is_multipart():
|
|
||||||
if part.get_content_type() == 'multipart/signed':
|
|
||||||
from_signed = pick_from_signed(part, target_subtypes)
|
|
||||||
if from_signed is not None:
|
|
||||||
return message, part, from_signed
|
|
||||||
elif is_target(part, target_subtypes):
|
|
||||||
return message, part, None
|
|
||||||
else:
|
|
||||||
if is_target(message, target_subtypes):
|
|
||||||
return None, message, None
|
|
||||||
return None, None, None
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
try:
|
|
||||||
message = email.message_from_file(sys.stdin)
|
|
||||||
parent, part, from_signed = seek_target(message)
|
|
||||||
if (parent, part, from_signed) == (None, None, None):
|
|
||||||
print(message)
|
|
||||||
return
|
|
||||||
tag_attachments(message)
|
|
||||||
print(with_alternative(
|
|
||||||
*with_local_attachments(parent, part, from_signed)))
|
|
||||||
except (BrokenPipeError, KeyboardInterrupt):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
|
@ -1,88 +0,0 @@
|
||||||
# .notmuch-config - Configuration file for the notmuch mail system
|
|
||||||
#
|
|
||||||
# For more information about notmuch, see https://notmuchmail.org
|
|
||||||
|
|
||||||
# Database configuration
|
|
||||||
#
|
|
||||||
# The only value supported here is 'path' which should be the top-level
|
|
||||||
# directory where your mail currently exists and to where mail will be
|
|
||||||
# delivered in the future. Files should be individual email messages.
|
|
||||||
# Notmuch will store its database within a sub-directory of the path
|
|
||||||
# configured here named ".notmuch".
|
|
||||||
#
|
|
||||||
[database]
|
|
||||||
path=/home/coolneng/.mail
|
|
||||||
|
|
||||||
# User configuration
|
|
||||||
#
|
|
||||||
# Here is where you can let notmuch know how you would like to be
|
|
||||||
# addressed. Valid settings are
|
|
||||||
#
|
|
||||||
# name Your full name.
|
|
||||||
# primary_email Your primary email address.
|
|
||||||
# other_email A list (separated by ';') of other email addresses
|
|
||||||
# at which you receive email.
|
|
||||||
#
|
|
||||||
# Notmuch will use the various email addresses configured here when
|
|
||||||
# formatting replies. It will avoid including your own addresses in the
|
|
||||||
# recipient list of replies, and will set the From address based on the
|
|
||||||
# address to which the original email was addressed.
|
|
||||||
#
|
|
||||||
[user]
|
|
||||||
name=Amin Kasrou Aouam
|
|
||||||
primary_email=akasroua@gmail.com
|
|
||||||
other_email=akasroua@correo.ugr.es;
|
|
||||||
|
|
||||||
# Configuration for "notmuch new"
|
|
||||||
#
|
|
||||||
# The following options are supported here:
|
|
||||||
#
|
|
||||||
# tags A list (separated by ';') of the tags that will be
|
|
||||||
# added to all messages incorporated by "notmuch new".
|
|
||||||
#
|
|
||||||
# ignore A list (separated by ';') of file and directory names
|
|
||||||
# that will not be searched for messages by "notmuch new".
|
|
||||||
#
|
|
||||||
# NOTE: *Every* file/directory that goes by one of those
|
|
||||||
# names will be ignored, independent of its depth/location
|
|
||||||
# in the mail store.
|
|
||||||
#
|
|
||||||
[new]
|
|
||||||
tags=unread;inbox;
|
|
||||||
ignore=
|
|
||||||
|
|
||||||
# Search configuration
|
|
||||||
#
|
|
||||||
# The following option is supported here:
|
|
||||||
#
|
|
||||||
# exclude_tags
|
|
||||||
# A ;-separated list of tags that will be excluded from
|
|
||||||
# search results by default. Using an excluded tag in a
|
|
||||||
# query will override that exclusion.
|
|
||||||
#
|
|
||||||
[search]
|
|
||||||
exclude_tags=deleted;spam;
|
|
||||||
|
|
||||||
# Maildir compatibility configuration
|
|
||||||
#
|
|
||||||
# The following option is supported here:
|
|
||||||
#
|
|
||||||
# synchronize_flags Valid values are true and false.
|
|
||||||
#
|
|
||||||
# If true, then the following maildir flags (in message filenames)
|
|
||||||
# will be synchronized with the corresponding notmuch tags:
|
|
||||||
#
|
|
||||||
# Flag Tag
|
|
||||||
# ---- -------
|
|
||||||
# D draft
|
|
||||||
# F flagged
|
|
||||||
# P passed
|
|
||||||
# R replied
|
|
||||||
# S unread (added when 'S' flag is not present)
|
|
||||||
#
|
|
||||||
# The "notmuch new" command will notice flag changes in filenames
|
|
||||||
# and update tags, while the "notmuch tag" and "notmuch restore"
|
|
||||||
# commands will notice tag changes and update flags in filenames
|
|
||||||
#
|
|
||||||
[maildir]
|
|
||||||
synchronize_flags=true
|
|
|
@ -1,598 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="ProgId" content="Word.Document">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
$for(author-meta)$
|
|
||||||
<meta name="author" content="$author-meta$" />
|
|
||||||
$endfor$
|
|
||||||
$if(date-meta)$
|
|
||||||
<meta name="date" content="$date-meta$" />
|
|
||||||
$endif$
|
|
||||||
$if(keywords)$
|
|
||||||
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
|
|
||||||
$endif$
|
|
||||||
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
|
|
||||||
<style type="text/css">
|
|
||||||
body, table, td, a {
|
|
||||||
-webkit-text-size-adjust: 100%;
|
|
||||||
-ms-text-size-adjust: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table, td {
|
|
||||||
mso-table-lspace: 0pt;
|
|
||||||
mso-table-rspace: 0pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
-ms-interpolation-mode: bicubic;
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border: 0;
|
|
||||||
height: auto;
|
|
||||||
line-height: 100%;
|
|
||||||
outline: none;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
height: 100% !important;
|
|
||||||
margin: 0 !important;
|
|
||||||
padding: 0 !important;
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
figure {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
a[x-apple-data-detectors] {
|
|
||||||
color: inherit !important;
|
|
||||||
text-decoration: none !important;
|
|
||||||
font-size: inherit !important;
|
|
||||||
font-family: inherit !important;
|
|
||||||
font-weight: inherit !important;
|
|
||||||
line-height: inherit !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[style*="margin: 16px 0;"] {
|
|
||||||
margin: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table,td,div,a {
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
-ms-interpolation-mode: bicubic;
|
|
||||||
max-width: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
padding-top: 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body, .body {
|
|
||||||
font-family: Georgia, "Times New Roman", Times, serif;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 1.2;
|
|
||||||
height: 100% !important;
|
|
||||||
width: 100% !important;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-ms-text-size-adjust: 100%;
|
|
||||||
-webkit-text-size-adjust: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
border-collapse: separate !important;
|
|
||||||
mso-table-lspace: 0pt;
|
|
||||||
mso-table-rspace: 0pt;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table td {
|
|
||||||
font-family: Georgia, "Times New Roman", Times, serif;
|
|
||||||
font-size: 14px;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ExternalClass {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass font,.ExternalClass td,.ExternalClass div {
|
|
||||||
line-height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
strong, b {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ajT {
|
|
||||||
height: none;
|
|
||||||
padding-top: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background-color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.body {
|
|
||||||
background-color: #ffffff;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
display: block;
|
|
||||||
Margin: 0 auto !important;
|
|
||||||
max-width: 800px;
|
|
||||||
padding: 10px;
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
display: block;
|
|
||||||
margin: 0 auto;
|
|
||||||
max-width: 800px;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
background: #ffffff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 4px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content-block {
|
|
||||||
padding: 0 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
margin-top: 0px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
clear: both;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer * {
|
|
||||||
color: #7F7F7F;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer td {
|
|
||||||
padding: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,h2,h3,h4,h5,h6 {
|
|
||||||
color: #222222 !important;
|
|
||||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
line-height: 1.2;
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 7px;
|
|
||||||
margin-top: 10.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1, h2 {
|
|
||||||
margin-bottom: 10.5px;
|
|
||||||
margin-top: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 22.4px;
|
|
||||||
text-transform: capitalize;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 19.6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 16.8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-size: 15.4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h5 {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h6 {
|
|
||||||
font-size: 12.6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
p,ul,ol {
|
|
||||||
font-family: Georgia, "Times New Roman", Times, serif;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: normal;
|
|
||||||
margin: 0;
|
|
||||||
padding-top: 7px;
|
|
||||||
color: #111111;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul, ol {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 7.5px;
|
|
||||||
padding-left: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li, ol li {
|
|
||||||
list-style-position: outside;
|
|
||||||
margin-left: 5px;
|
|
||||||
margin-bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
li > ul, li > ol {
|
|
||||||
margin-top: 7.5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #348eda;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre > a, code > a {
|
|
||||||
color: none;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
code,pre,.word-wrap {
|
|
||||||
word-break: break-word;
|
|
||||||
word-wrap: break-word;
|
|
||||||
-webkit-hyphens: auto;
|
|
||||||
-moz-hyphens: auto;
|
|
||||||
hyphens: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre, code {
|
|
||||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
|
||||||
font-size: 11.9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
display: block;
|
|
||||||
width: 96%;
|
|
||||||
margin: 1em 0;
|
|
||||||
margin-bottom: 9px;
|
|
||||||
background: #f8f8f8;
|
|
||||||
padding: 1%;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
p > code {
|
|
||||||
color: #111111;
|
|
||||||
background: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
padding: 0 7px 0 7px;
|
|
||||||
border-left: 2px solid #cccccc;
|
|
||||||
border-top: 4.2px solid transparent;
|
|
||||||
font-style: italic;
|
|
||||||
margin: 0 0 7px 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote p {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
mark {
|
|
||||||
background: #ff0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl dt {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl dd {
|
|
||||||
margin-left: 28px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn {
|
|
||||||
width: 100%;
|
|
||||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn table {
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn table td {
|
|
||||||
background-color: #ffffff;
|
|
||||||
border-radius: 4px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn a {
|
|
||||||
background-color: #ffffff;
|
|
||||||
border: solid 1px #348eda;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: #348eda;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0;
|
|
||||||
padding: 8px 18px;
|
|
||||||
text-decoration: none;
|
|
||||||
text-transform: capitalize;
|
|
||||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn-primary table td {
|
|
||||||
background-color: #348eda;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn-primary a {
|
|
||||||
background-color: #348eda;
|
|
||||||
border-color: #348eda;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn-secondary table td {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-btn-secondary a {
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: #348eda;
|
|
||||||
color: #348eda;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice {
|
|
||||||
border-collapse: separate;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice-spacer {
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice td {
|
|
||||||
line-height: 1.2;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: normal;
|
|
||||||
font-family: "Roboto", "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice td p {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice-info td {
|
|
||||||
background: #f0f6fb;
|
|
||||||
border: 1px solid #b7d3ed;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: #2c6eac;
|
|
||||||
padding: 6px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice-success td {
|
|
||||||
background: #e1f2bd;
|
|
||||||
border: 1px solid #c6e682;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: #61821a;
|
|
||||||
padding: 6px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice-warning td {
|
|
||||||
background: #f7eed0;
|
|
||||||
border: 1px solid #edd993;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: #9a7d1a;
|
|
||||||
padding: 6px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice-danger td {
|
|
||||||
background: #f5d5d5;
|
|
||||||
border: 1px solid #e89b9b;
|
|
||||||
border-radius: 4px;
|
|
||||||
color: #952222;
|
|
||||||
padding: 6px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.et-notice-lg td {
|
|
||||||
font-size: 16.8px;
|
|
||||||
line-height: 1.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider {
|
|
||||||
border-collapse: separate;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider-spacer {
|
|
||||||
padding: 14px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider td {
|
|
||||||
border-top: 1px solid #ccc;
|
|
||||||
line-height: 0;
|
|
||||||
font-size: 0;
|
|
||||||
height: 1px;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
margin: 28px 0;
|
|
||||||
border: none;
|
|
||||||
border-top: 1px solid #cccccc;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.last {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.first {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-right {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-left {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clear {
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mt0 {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mb0 {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preheader {
|
|
||||||
color: transparent;
|
|
||||||
display: none;
|
|
||||||
height: 0;
|
|
||||||
max-height: 0;
|
|
||||||
max-width: 0;
|
|
||||||
opacity: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
mso-hide: all;
|
|
||||||
visibility: hidden;
|
|
||||||
width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (max-width: 840px) {
|
|
||||||
table[class=body] {
|
|
||||||
font-size: 12px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] p,table[class=body] ul,table[class=body] ol {
|
|
||||||
font-size: 12px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] .et-btn {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h1 {
|
|
||||||
font-size: 18.2px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h2 {
|
|
||||||
font-size: 16.8px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h3 {
|
|
||||||
font-size: 15.4px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h4 {
|
|
||||||
font-size: 14.7px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h5 {
|
|
||||||
font-size: 12.6px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h6 {
|
|
||||||
font-size: 11.9px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] h1, table[class=body] h2 {
|
|
||||||
margin-bottom: 14px !important;
|
|
||||||
margin-top: 14px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] .container, table[class=body] .content {
|
|
||||||
width: 100% !important;
|
|
||||||
max-width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] .content,table[class=body] .wrapper {
|
|
||||||
padding: 10px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] .container {
|
|
||||||
padding: 0 !important;
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table[class=body] .btn table,table[class=body] .btn a {
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
$if(quotes)$
|
|
||||||
<style type="text/css">q { quotes: "“" "”" "‘" "’"; }</style>
|
|
||||||
$endif$
|
|
||||||
$if(highlighting-css)$
|
|
||||||
<style type="text/css">
|
|
||||||
$highlighting-css$
|
|
||||||
</style>
|
|
||||||
$endif$
|
|
||||||
$for(css)$
|
|
||||||
<link rel="stylesheet" href="$css$" type="text/css" />
|
|
||||||
$endfor$
|
|
||||||
$if(math)$
|
|
||||||
$math$
|
|
||||||
$endif$
|
|
||||||
$for(header-includes)$
|
|
||||||
$header-includes$
|
|
||||||
$endfor$
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
$for(include-before)$
|
|
||||||
$include-before$
|
|
||||||
$endfor$
|
|
||||||
$if(title)$
|
|
||||||
<div id="$idprefix$header">
|
|
||||||
<h1 class="title">$title$</h1>
|
|
||||||
$if(subtitle)$
|
|
||||||
<h1 class="subtitle">$subtitle$</h1>
|
|
||||||
$endif$
|
|
||||||
$for(author)$
|
|
||||||
<h2 class="author">$author$</h2>
|
|
||||||
$endfor$
|
|
||||||
$if(date)$
|
|
||||||
<h3 class="date">$date$</h3>
|
|
||||||
$endif$
|
|
||||||
</div>
|
|
||||||
$endif$
|
|
||||||
$if(toc)$
|
|
||||||
<div id="$idprefix$TOC">
|
|
||||||
$toc$
|
|
||||||
</div>
|
|
||||||
$endif$
|
|
||||||
$body$
|
|
||||||
$for(include-after)$
|
|
||||||
$include-after$
|
|
||||||
$endfor$
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -6,4 +6,8 @@ if [ $# -lt 1 ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mbsync "$1"
|
mbsync "$1"
|
||||||
notmuch new
|
if pgrep -f 'mu server'; then
|
||||||
|
emacsclient -e '(mu4e-update-index)'
|
||||||
|
else
|
||||||
|
mu index --lazy-check
|
||||||
|
fi
|
||||||
|
|
|
@ -25,10 +25,6 @@ windows:
|
||||||
panes:
|
panes:
|
||||||
- ncmpcpp
|
- ncmpcpp
|
||||||
|
|
||||||
- window_name: mail
|
|
||||||
panes:
|
|
||||||
- neomutt
|
|
||||||
|
|
||||||
- window_name: IM
|
- window_name: IM
|
||||||
panes:
|
panes:
|
||||||
- gomuks
|
- gomuks
|
||||||
|
|
Loading…
Reference in New Issue