# Screenshot http://trovao.droplinegnome.org/stuff/mutt-zenburnt.png
#
# This is a zenburn-based neomutt color scheme that is not (even by far)
# complete. There's no copyright involved. Do whatever you want with it.
# Just be aware that I won't be held responsible if the current color-scheme
# explodes your mail client. ;)
#
# Do notice that this color scheme requires a terminal emulator that supports
# 256 color. Any modern X terminal emulator should have support for that and
# you can enable it by calling neomutt as "TERM=xterm-256color neomutt" or, if you
# use screen, by adding "term screen-256color" to your .screenrc.
#
# This file is in the public domain.
#

# general-doesn't-fit stuff
color normal     white black
color error      red black
color markers    yellow black
color tilde      white black
color status     white black

# index stuff
color indicator  black green
color tree       cyan black
color index      white  black ~A
color index      magenta  black ~N
color index      magenta  black ~O
color index      red black ~F
color index      red black ~D

# header stuff
color hdrdefault yellow black
color header     yellow black "^Subject"

# gpg stuff
color body       green black "^gpg: Good signature.*"
color body       red black "^gpg: BAD signature.*"
color body       yellow black "^gpg: Can't check signature.*"
color body       black white "^-----BEGIN PGP SIGNED MESSAGE-----"
color body       black white "^-----BEGIN PGP SIGNATURE-----"
color body       black white "^-----END PGP SIGNED MESSAGE-----"
color body       black white "^-----END PGP SIGNATURE-----"
color body       black white "^Version: GnuPG.*"
color body       black white "^Comment: .*"

# url, email and web stuff
color body       magenta black "(finger|ftp|http|https|news|telnet)://[^ >]*"
color body       magenta black "<URL:[^ ]*>"
color body       magenta black "www\\.[-.a-z0-9]+\\.[a-z][a-z][a-z]?([-_./~a-z0-9]+)?"
color body       magenta black "mailto: *[^ ]+\(\\i?subject=[^ ]+\)?"
color body       magenta black "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"

# misc body stuff
color attachment magenta black #Add-ons to the message
color signature  lightblack black

# quote levels
color quoted     lightred black
color quoted1    lightyellow black
color quoted2    lightgreen  black
color quoted3    lightcyan  black
color quoted4    lightmagenta black
color quoted5    lightred black
color quoted6    lightyellow black
color quoted7    lightgreen  black
color quoted8    lightcyan  black
color quoted9    lightmagenta black
