jaromail

a commandline tool to easily and privately handle your e-mail
git clone git://parazyd.org/jaromail.git
Log | Files | Refs | Submodules | README

commit 3cbc58b12cef08cfedd33eca6e5ceefe94eca5f4
parent 623bd05abbfea61310de481b6aa1eae46bb7aa5b
Author: Jaromil <jaromil@dyne.org>
Date:   Mon, 18 Jun 2012 17:13:00 +0200

documentation updates for the release

Diffstat:
MChangeLog | 49+++++++++++++++++++++++++++++++++----------------
Mdoc/jaromail-manual.org | 148++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Minstall.sh | 8++++++++
Msrc/fetchdate.c | 22++++++++++++++++++++++
Msrc/jaro | 13++++++++++---
Asrc/mutt/colors-solarized-dark-16 | 151++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mutt/colors-solarized-dark-256 | 151++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mutt/colors-solarized-light-16 | 151++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mutt/colors-solarized-light-256 | 151++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/zlibs/helpers | 83+++++++++++++++++++++++++++++++++----------------------------------------------
10 files changed, 817 insertions(+), 110 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,22 +1,39 @@ +Jaro Mail 1.0 - 18 June 2012 - E-Data addict + + Software development went forward in a rather passionate way, + mostly motivated by the author's need to backup his rather big + archive of e-mails. So this release's focus is on stability, + search and backup features and a rather deep refactoring of the + codebase. + + Mairix has been added as an integrated search engine. + + Backup is possible also using search expressions (see manual) + + Some new modules in statistics implement jquery reports. + + Code is modularized in pre-compiled zsh modules. + + Extensive testing has proven the whole setup to be stable and + ready for production use, hence the 1.0 release. + Jaro Mail 0.9 - 06 May 2012 - The rush of the unemployed - After getting recently unemployed because of European - austerity cuts (and because of not working in a bank), - Jaromil followed up with a full pijama coding session - that lasted about a week, hammering out most issues - that make now this software enter BETA stage, while - starting to use it for real. + After getting recently unemployed because of European austerity + cuts (and because of not working in a bank), Jaromil followed up + with a full pijama coding session that lasted about a week, + hammering out most issues that make now this software enter BETA + stage, while starting to use it for real. - This is the first public release of Jaro Mail, - it comes with a User Manual and lots of usability - fixes over the previous, it was tested on GNU and OSX - operating systems. + This is the first public release of Jaro Mail, it comes with a + User Manual and lots of usability fixes over the previous, it was + tested on GNU and OSX operating systems. Jaro Mail 0.1 - 29 May 2012 - Initial release - After a dozen years of development and use, - Jaromil releases his own e-mail and mailinglist - desktop setup. - While doing so, J. asked his friend and PhD colleague - Max Kazemzadeh how he should call it, and Max replied: - Jaro Mail! :^D + + After a dozen years of development and use, Jaromil releases his + own e-mail and mailinglist desktop setup. + + While doing so, J. asked his friend and PhD colleague Max + Kazemzadeh how he should call it, and Max replied: Jaro Mail! :^D diff --git a/doc/jaromail-manual.org b/doc/jaromail-manual.org @@ -32,14 +32,15 @@ this manual is made available on http://files.dyne.org/jaromail/jaromail-manual. + Easy to deploy and use + Targets intensive usage of mailinglists - + Integrates addressbook and whitelisting - + Generates Procmail and Sieve filters - + Encrypts password storage (keyrings) - + Provides advanced maildir tools + + Does whitelisting and integrates addressbooks + + Can do search and backup by expressions + + Automatically generates filtering rules + + Computes and shows statistics on mail traffic + + Encrypts password storage (using keyrings) + + Provides advanced maildir management tools + Defers connections for off-line operations + Checks SSL certificates over (imap, smtp) - + Supports strong encryption (GnuPG) - + Is Based on solid GNU and BSD technology + + Supports strong encryption messaging (GnuPG) + Is Multi platform: GNU/Linux/BSD, Apple/OSX + Old school, used by its author for the past 10 years @@ -85,7 +86,7 @@ and actions involved in managing one's email communication: | MTA | Mail Transport Agent | [[http://www.fetchmail.info][Fetchmail]] | | | Filtering Agent | [[http://www.procmail.org][Procmail]] | | SMTP | Mail Delivery Agent | [[http://msmtp.sourceforge.net][MSmtp]] | - + | | Search engine | [[http://www.rpcurnow.force9.co.uk/mairix/][Mairix]] | #+LATEX: \pagebreak * Setup @@ -389,13 +390,14 @@ whenever possible. After the indexing is done, you can use the command *jaro search* followed by any number of arguments to run the search. This is not a - glob match, but an absolute match on the single words. More than one - word is aloud to refine the match (they are all AND'ed together), - plus a number of tricks can be done: every single word following the - command can be a particular expression that indicates in which - header to search and for what. Here below a short reference of - possible expressions: + glob match, but an absolute match on the single words. + + More than one word is aloud to refine the match (they are all AND'ed + together), plus a number of tricks can be done: every single word + following the command can be a particular expression that indicates + in which header to search and for what. + Here below a short reference of possible expressions: | word | match word in message body and major headers | | t:word | match word in To: header | @@ -418,7 +420,13 @@ whenever possible. | s:^substring= | match left-anchored substring in any word in Subject: | | s:substring=2 | match substring with <=2 errors in any word in Subject: | + Besides expression, you can also use names of maildirs that you want + to search: they can be in any position following the *jaro search* + command. If no maildir was specified then the search is performed on + all stored maildirs. + At last, for a reference on how the date range works in search + expressions, you can look into the *backup* section in this manual. * Security @@ -509,6 +517,7 @@ above the average. For more information about Tomb please refer to its own documentation. + * Storage and backup @@ -584,34 +593,30 @@ of any interest, but still might be useful to be retrieved just in case, Jaro Mail implements a function that will move all messages older than a certain date out of a maildir folder into another. -: $ jaro backup ml.recent ml.yearsago 365 +: $ jaro backup ml.recent ml.yearsago d:5y-1y The above command will move out of the "ml.recent" maildir all e-mails -that are older than 365 days and store them into the "ml.yearsago" -maildir which for instance could be present on an external usb -hard-disk or any other backup device, helping us to save space on the -desktop in use. +that are older than 1 year (up to 5 years before, can be more) and +stores them into the "ml.yearsago" maildir which for instance could be +present on an external usb hard-disk or any other backup device, +helping us to save space on the desktop in use. + +: jaro backup unsorted may98-may99 unsorted.week.old + + +Will move all emails found in any folder that are dated between May +1998 and May 1999. Here below more examples of date range expressions: + #+BEGIN_EXAMPLE - check("2w-1w"); - check("4m-1w"); - check("2002-2003"); - check("may2002-2003"); - check("2002may-2003"); - check("feb98-15may99"); - check("feb98-15may1999"); - check("2feb98-1y"); - check("02feb98-1y"); - check("970617-20010618"); + d:2002-2003 + d:may2002-2003 + d:2002may-2003 + d:feb98-15may99 + d:feb98-15may1999 + d:2feb98-1y + d:02feb98-1y + d:970617-20010618 #+END_EXAMPLE -*Caveat*: this system determines the date of emails from the time -stamp of files, not from the Date: field in their headers nor from the -time they were received. We need help to overcome this imperfection, a -string parser for dates would be a welcome contribution, meanwhile -users should be aware that if a maildir was copied around filesystems -updating the timestamps of its files they will lose date information -useful to the backup function and all mails will result more recent -than they are. - ** Filter a maildir @@ -666,10 +671,10 @@ licenses, or available in the public domain. ** Jaro Mail credits -Jaro Mail is written and maintained by Jaromil, it started from the -intention to share his own 10 years old e-mail setup, encouraged by -the typical geek attitude of exchanging configuration files between -friends. +Jaro Mail is written and maintained by Denis Roio (aka Jaromil) it +started from the intention to share his own 10 years old e-mail setup, +encouraged by the geek tradition of exchanging configuration files +between friends. The RFC 822 address parser (fetchaddr) is originally written by Michael Elkins for the Mutt MUA. @@ -677,8 +682,8 @@ Michael Elkins for the Mutt MUA. The gateway to Apple/OSX addressbook (ABQuery) was written by Brendan Cully and just slightly updated for our distribution. -Thanks also go to Anatole Shaw for the help testing and debugging Jaro -Mail. +Thanks also go to Alvise Gottieri and Anatole Shaw for early testing +and debugging. ** Mutt credits @@ -698,6 +703,33 @@ have been helpful with the development of Mutt. Copyright (C) 2006-2008 Rocco Rutte <pdmef@gmx.net> #+END_EXAMPLE +** Mairix credits +Jaro Mail includes a search engine for e-mails that is also licensed +GNU GPL v2. Here below the names of the copyright holders and all +those who have written it: + +#+BEGIN_EXAMPLE + Copyright (C) Richard P. Curnow 2002,2003,2004,2005,2006,2007,2008 + Copyright (C) Sanjoy Mahajan 2005 + Copyright (C) James Cameron 2005 + Copyright (C) Paul Fox 2006 +#+END_EXAMPLE + +Mairix received contributions from: Anand Kumria André Costa, Andreas +Amann, Andre Costa, Aredridel, Balázs Szabó, Bardur Arantsson, +Benj. Mako Hill, Chris Mason, Christoph Dworzak, Christopher Rosado, +Chung-chieh Shan, Claus Alboege, Corrin Lakeland, Dan Egnor, Daniel +Jacobowitz, Dirk Huebner, Ed Blackman, Emil Sit, Felipe Gustavo de +Almeida, Ico Doornekamp, Jaime Velasco Juan, James Leifer, Jerry +Jorgenson, Joerg Desch, Johannes Schindelin, Johannes Weißl, John +Arthur Kane, John Keener, Jonathan Kamens, Josh Purinton, Karsten +Petersen, Kevin Rosenberg, Mark Hills, Martin Danielsson, Matthias +Teege, Mikael Ylikoski, Mika Fischer, Oliver Braun, Paramjit Oberoi, +Paul Fox, Peter Chines, Peter Jeremy, Robert Hofer, Roberto Boati, +Samuel Tardieu, Sanjoy Mahajan, Satyaki Das, Steven Lumos, Tim Harder, +Tom Doherty, Vincent Lefevre, Vladimir V. Kisil, Will Yardley, +Wolfgang Weisselberg. + ** Fetchmail credits Fetchmail is also licensed GNU GPL v2 @@ -730,6 +762,36 @@ General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. +** Statistics modules + We are including some (experimental, still) modules for statistical + visualization using JQuery libraries. The first module inspiring us + to implement such a functionality is Timecloud, then other modules + followed. + +#+BEGIN_EXAMPLE + Timecloud is Copyright (C) 2008-2009 by Stefan Marsiske + Dual licensed under the MIT and GPLv3 licenses. + + TagCloud version 1.1.2 + (c) 2006 Lyo Kato <lyo.kato@gmail.com> + TagCloud is freely distributable under the terms of an MIT-style license. + + ExCanvas is Copyright 2006 Google Inc. + Licensed under the Apache License, Version 2.0 (the "License"); + + jQuery project is distributed by the JQuery Foundation under the + terms of either the GNU General Public License (GPL) Version 2. + + The Sizzle selector engine (which is included inside the jQuery + library) is held by the Dojo Foundation and is licensed under the + MIT, GPL, and BSD licenses. + + JQuery.sparkline 2.0 is licensed under the New BSD License + + Visualize.JQuery is written by Scott Jehl + Copyright (c) 2009 Filament Group + licensed under MIT (filamentgroup.com/examples/mit-license.txt) +#+END_EXAMPLE * Appendix ** Configuration examples diff --git a/install.sh b/install.sh @@ -99,6 +99,14 @@ if ! [ -r $WORKDIR/Mutt.txt ]; then # Mutt specific customizations # uncomment and fill in with your settings +## dark background (uncomment to switch) +# source \$HOME/Mail/jaro/.mutt/colors-solarized-dark-256 +# source \$HOME/Mail/jaro/.mutt/colors-solarized-dark-16 + +## light background (uncomment to switch) +# source \$HOME/Mail/jaro/.mutt/colors-solarized-light-256 +# source \$HOME/Mail/jaro/.mutt/colors-solarized-light-16 + # set locale="" # system default locale ("C") # set signature='~/.signature' # signature file # set pgp_sign_as="0xC2B68E39" # UserID/KeyID for signing diff --git a/src/fetchdate.c b/src/fetchdate.c @@ -1,3 +1,25 @@ +/* Jaro Mail + * + * (C) Copyright 2012 Denis Roio <jaromil@dyne.org> + * + * This is just a simple use of Mairix API to extract formatted dates + * + * This source code is free software; you can redistribute it and/or + * modify it under the terms of the GNU Public License as published + * by the Free Software Foundation; either version 3 of the License, + * or (at your option) any later version. + * + * This source code is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * Please refer to the GNU Public License for more details. + * + * You should have received a copy of the GNU Public License along with + * this source code; if not, write to: + * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + #include <stdio.h> #include <mairix.h> diff --git a/src/jaro b/src/jaro @@ -20,7 +20,7 @@ # this source code; if not, write to: # Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -VERSION=0.9 +VERSION=1.0 DATE=Jun/2012 JAROMAILEXEC=$0 typeset -a OLDARGS @@ -272,11 +272,13 @@ Main commands: fetch download unread emails from [account] send send all mails queued in the outbox peek look into the [account] mailbox without downloading + search search local maildirs for a string or an expression Options: -a use a particular account instead of default (keyword) -l whitelist or blacklist to use with learn/query/forget + -h print this help -v version information for this tool -q run quietly without printing informations @@ -294,11 +296,16 @@ Maintenance commands: query read mail from stdin, return 0 if known to list learn learn addresses from mails piped in stdin forget remove addresses found in mails piped in stdin + list prints out the list of known addresses - backup move all mails older than N days from a maildir to another - rmdupes remove all duplicate mails into a maildir + backup move mails from a maildir to a new one with search expr + rmdupes remove all duplicated e-mails into a maildir merge merge a maildir into another, removing all duplicates + filter passes a maildir through the filters + stat prints a statistical overview on stored maildirs + cert import most common SSL certificates from the Internet + ramdisk open/close activates fast cache in RAM on Mac/OSX Please report bugs on <http://bugs.dyne.org>. EOF } diff --git a/src/mutt/colors-solarized-dark-16 b/src/mutt/colors-solarized-dark-16 @@ -0,0 +1,151 @@ +# vim: filetype=muttrc + +# +# +# make sure that you are using mutt linked against slang, not ncurses, or +# suffer the consequences of weird color issues. use "mutt -v" to check this. + +# custom body highlights ----------------------------------------------- +# highlight my name and other personally relevant strings +#color body yellow default "(ethan|schoonover)" +# custom index highlights ---------------------------------------------- +# messages which mention my name in the body +#color index yellow default "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P" +#color index J_cream brightwhite "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P" +#color index yellow cyan "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P" +#color index yellow J_magent "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P" +## messages which are in reference to my mails +#color index J_magent default "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P" +#color index J_magent brightwhite "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P" +#color index J_magent cyan "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P" +#color index J_magent red "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P" + +# for background in 16 color terminal, valid background colors include: +# base03, bg, black, any of the non brights + +# basic colors --------------------------------------------------------- +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 J_black J_status +color status brightyellow black +color indicator brightblack yellow +color tree yellow default # arrow in threads + +# basic monocolor screen +mono bold bold +mono underline underline +mono indicator reverse +mono error bold + +# index ---------------------------------------------------------------- + +#color index red default "~D(!~p|~p)" # deleted +#color index black default ~F # flagged +#color index brightred default ~= # duplicate messages +#color index brightgreen default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest +#color index J_base default "~A~N!~T!~p!~Q!~F!~D" # the rest, new +color index red default "~A" # all messages +color index brightred default "~E" # expired messages +color index blue default "~N" # new messages +color index blue default "~O" # old messages +color index brightmagenta default "~Q" # messages that have been replied to +color index brightgreen default "~R" # read messages +color index blue default "~U" # unread messages +color index blue default "~U~$" # unread, unreferenced messages +color index brightyellow default "~v" # messages part of a collapsed thread +color index brightyellow default "~P" # messages from me +color index cyan default "~p!~F" # messages to me +color index cyan default "~N~p!~F" # new messages to me +color index cyan default "~U~p!~F" # unread messages to me +color index brightgreen default "~R~p!~F" # messages to me +color index red default "~F" # flagged messages +color index red default "~F~p" # flagged messages to me +color index red default "~N~F" # new flagged messages +color index red default "~N~F~p" # new flagged messages to me +color index red default "~U~F~p" # new flagged messages to me +color index black red "~D" # deleted messages +color index brightcyan default "~v~(!~N)" # collapsed thread with no unread +color index yellow default "~v~(~N)" # collapsed thread with some unread +color index green default "~N~v~(~N)" # collapsed thread with unread parent +# statusbg used to indicated flagged when foreground color shows other status +# for collapsed thread +color index red black "~v~(~F)!~N" # collapsed thread with flagged, no unread +color index yellow black "~v~(~F~N)" # collapsed thread with some unread & flagged +color index green black "~N~v~(~F~N)" # collapsed thread with unread parent & flagged +color index green black "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged +color index cyan black "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly +color index yellow red "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial) +#color index yellow default "~(~N)" # messages in threads with some unread +#color index green default "~S" # superseded messages +#color index red default "~T" # tagged messages +#color index brightred red "~=" # duplicated messages + +# message headers ------------------------------------------------------ + +#color header brightgreen default "^" +color hdrdefault brightgreen default +color header brightyellow default "^(From)" +color header blue default "^(Subject)" + +# body ----------------------------------------------------------------- + +color quoted blue default +color quoted1 cyan default +color quoted2 yellow default +color quoted3 red default +color quoted4 brightred default + +color signature brightgreen default +color bold black default +color underline black default +color normal default default +# +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? + +## pgp + +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.*" + +# yes, an insance URL regex +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<>\"]" +# and a heavy handed email regex +#color body J_magent default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])" + +# Various smilies and the like +#color body brightwhite default "<[Gg]>" # <g> +#color body brightwhite default "<[Bb][Gg]>" # <bg> +#color body yellow default " [;:]-*[})>{(<|]" # :-) etc... +# *bold* +#color body blue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +# _underline_ +#color body blue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +# /italic/ (Sometimes gets directory names) +#color body blue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" + +# Border lines. +#color body blue default "( *[-+=#*~_]){6,}" + +#folder-hook . "color status J_black J_status " +#folder-hook gmail/inbox "color status J_black yellow " +#folder-hook gmail/important "color status J_black yellow " + diff --git a/src/mutt/colors-solarized-dark-256 b/src/mutt/colors-solarized-dark-256 @@ -0,0 +1,151 @@ +# vim: filetype=muttrc + +# +# +# make sure that you are using mutt linked against slang, not ncurses, or +# suffer the consequences of weird color issues. use "mutt -v" to check this. + +# custom body highlights ----------------------------------------------- +# highlight my name and other personally relevant strings +#color body color136 color234 "(ethan|schoonover)" +# custom index highlights ---------------------------------------------- +# messages which mention my name in the body +#color index color136 color234 "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P" +#color index J_cream color230 "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P" +#color index color136 color37 "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P" +#color index color136 J_magent "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P" +## messages which are in reference to my mails +#color index J_magent color234 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P" +#color index J_magent color230 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P" +#color index J_magent color37 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P" +#color index J_magent color160 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P" + +# for background in 16 color terminal, valid background colors include: +# base03, bg, black, any of the non brights + +# basic colors --------------------------------------------------------- +color normal color241 color234 +color error color160 color234 +color tilde color235 color234 +color message color37 color234 +color markers color160 color254 +color attachment color254 color234 +color search color61 color234 +#color status J_black J_status +color status color241 color235 +color indicator color234 color136 +color tree color136 color234 # arrow in threads + +# basic monocolor screen +mono bold bold +mono underline underline +mono indicator reverse +mono error bold + +# index ---------------------------------------------------------------- + +#color index color160 color234 "~D(!~p|~p)" # deleted +#color index color235 color234 ~F # flagged +#color index color166 color234 ~= # duplicate messages +#color index color240 color234 "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest +#color index J_base color234 "~A~N!~T!~p!~Q!~F!~D" # the rest, new +color index color160 color234 "~A" # all messages +color index color166 color234 "~E" # expired messages +color index color33 color234 "~N" # new messages +color index color33 color234 "~O" # old messages +color index color61 color234 "~Q" # messages that have been replied to +color index color240 color234 "~R" # read messages +color index color33 color234 "~U" # unread messages +color index color33 color234 "~U~$" # unread, unreferenced messages +color index color241 color234 "~v" # messages part of a collapsed thread +color index color241 color234 "~P" # messages from me +color index color37 color234 "~p!~F" # messages to me +color index color37 color234 "~N~p!~F" # new messages to me +color index color37 color234 "~U~p!~F" # unread messages to me +color index color240 color234 "~R~p!~F" # messages to me +color index color160 color234 "~F" # flagged messages +color index color160 color234 "~F~p" # flagged messages to me +color index color160 color234 "~N~F" # new flagged messages +color index color160 color234 "~N~F~p" # new flagged messages to me +color index color160 color234 "~U~F~p" # new flagged messages to me +color index color235 color160 "~D" # deleted messages +color index color245 color234 "~v~(!~N)" # collapsed thread with no unread +color index color136 color234 "~v~(~N)" # collapsed thread with some unread +color index color64 color234 "~N~v~(~N)" # collapsed thread with unread parent +# statusbg used to indicated flagged when foreground color shows other status +# for collapsed thread +color index color160 color235 "~v~(~F)!~N" # collapsed thread with flagged, no unread +color index color136 color235 "~v~(~F~N)" # collapsed thread with some unread & flagged +color index color64 color235 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged +color index color64 color235 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged +color index color37 color235 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly +color index color136 color160 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial) +#color index color136 color234 "~(~N)" # messages in threads with some unread +#color index color64 color234 "~S" # superseded messages +#color index color160 color234 "~T" # tagged messages +#color index color166 color160 "~=" # duplicated messages + +# message headers ------------------------------------------------------ + +#color header color240 color234 "^" +color hdrdefault color240 color234 +color header color241 color234 "^(From)" +color header color33 color234 "^(Subject)" + +# body ----------------------------------------------------------------- + +color quoted color33 color234 +color quoted1 color37 color234 +color quoted2 color136 color234 +color quoted3 color160 color234 +color quoted4 color166 color234 + +color signature color240 color234 +color bold color235 color234 +color underline color235 color234 +color normal color244 color234 +# +color body color245 color234 "[;:][-o][)/(|]" # emoticons +color body color245 color234 "[;:][)(|]" # emoticons +color body color245 color234 "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\ + |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\ + |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?" +color body color245 color234 "[ ][*][^*]*[*][ ]?" # more emoticon? +color body color245 color234 "[ ]?[*][^*]*[*][ ]" # more emoticon? + +## pgp + +color body color160 color234 "(BAD signature)" +color body color37 color234 "(Good signature)" +color body color234 color234 "^gpg: Good signature .*" +color body color241 color234 "^gpg: " +color body color241 color160 "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +mono body bold "^gpg: BAD signature from.*" + +# yes, an insance URL regex +color body color160 color234 "([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<>\"]" +# and a heavy handed email regex +#color body J_magent color234 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])" + +# Various smilies and the like +#color body color230 color234 "<[Gg]>" # <g> +#color body color230 color234 "<[Bb][Gg]>" # <bg> +#color body color136 color234 " [;:]-*[})>{(<|]" # :-) etc... +# *bold* +#color body color33 color234 "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +# _underline_ +#color body color33 color234 "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +# /italic/ (Sometimes gets directory names) +#color body color33 color234 "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" + +# Border lines. +#color body color33 color234 "( *[-+=#*~_]){6,}" + +#folder-hook . "color status J_black J_status " +#folder-hook gmail/inbox "color status J_black color136 " +#folder-hook gmail/important "color status J_black color136 " + diff --git a/src/mutt/colors-solarized-light-16 b/src/mutt/colors-solarized-light-16 @@ -0,0 +1,151 @@ +# vim: filetype=muttrc + +# +# +# make sure that you are using mutt linked against slang, not ncurses, or +# suffer the consequences of weird color issues. use "mutt -v" to check this. + +# custom body highlights ----------------------------------------------- +# highlight my name and other personally relevant strings +#color body yellow default "(ethan|schoonover)" +# custom index highlights ---------------------------------------------- +# messages which mention my name in the body +#color index yellow default "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P" +#color index J_cream brightblack "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P" +#color index yellow cyan "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P" +#color index yellow J_magent "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P" +## messages which are in reference to my mails +#color index J_magent default "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P" +#color index J_magent brightblack "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P" +#color index J_magent cyan "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P" +#color index J_magent red "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P" + +# for background in 16 color terminal, valid background colors include: +# base03, bg, black, any of the non brights + +# basic colors --------------------------------------------------------- +color normal brightblue default +color error red default +color tilde white default +color message cyan default +color markers red black +color attachment black default +color search brightmagenta default +#color status J_black J_status +color status brightblue white +color indicator brightwhite yellow +color tree yellow default # arrow in threads + +# basic monocolor screen +mono bold bold +mono underline underline +mono indicator reverse +mono error bold + +# index ---------------------------------------------------------------- + +#color index red default "~D(!~p|~p)" # deleted +#color index white default ~F # flagged +#color index brightred default ~= # duplicate messages +#color index brightcyan default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest +#color index J_base default "~A~N!~T!~p!~Q!~F!~D" # the rest, new +color index red default "~A" # all messages +color index brightred default "~E" # expired messages +color index blue default "~N" # new messages +color index blue default "~O" # old messages +color index brightmagenta default "~Q" # messages that have been replied to +color index brightcyan default "~R" # read messages +color index blue default "~U" # unread messages +color index blue default "~U~$" # unread, unreferenced messages +color index brightblue default "~v" # messages part of a collapsed thread +color index brightblue default "~P" # messages from me +color index cyan default "~p!~F" # messages to me +color index cyan default "~N~p!~F" # new messages to me +color index cyan default "~U~p!~F" # unread messages to me +color index brightcyan default "~R~p!~F" # messages to me +color index red default "~F" # flagged messages +color index red default "~F~p" # flagged messages to me +color index red default "~N~F" # new flagged messages +color index red default "~N~F~p" # new flagged messages to me +color index red default "~U~F~p" # new flagged messages to me +color index white red "~D" # deleted messages +color index brightgreen default "~v~(!~N)" # collapsed thread with no unread +color index yellow default "~v~(~N)" # collapsed thread with some unread +color index green default "~N~v~(~N)" # collapsed thread with unread parent +# statusbg used to indicated flagged when foreground color shows other status +# for collapsed thread +color index red white "~v~(~F)!~N" # collapsed thread with flagged, no unread +color index yellow white "~v~(~F~N)" # collapsed thread with some unread & flagged +color index green white "~N~v~(~F~N)" # collapsed thread with unread parent & flagged +color index green white "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged +color index cyan white "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly +color index yellow red "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial) +#color index yellow default "~(~N)" # messages in threads with some unread +#color index green default "~S" # superseded messages +#color index red default "~T" # tagged messages +#color index brightred red "~=" # duplicated messages + +# message headers ------------------------------------------------------ + +#color header brightcyan default "^" +color hdrdefault brightcyan default +color header brightblue default "^(From)" +color header blue default "^(Subject)" + +# body ----------------------------------------------------------------- + +color quoted blue default +color quoted1 cyan default +color quoted2 yellow default +color quoted3 red default +color quoted4 brightred default + +color signature brightcyan default +color bold white default +color underline white default +color normal default default +# +color body brightgreen default "[;:][-o][)/(|]" # emoticons +color body brightgreen default "[;:][)(|]" # emoticons +color body brightgreen default "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\ + |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\ + |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?" +color body brightgreen default "[ ][*][^*]*[*][ ]?" # more emoticon? +color body brightgreen default "[ ]?[*][^*]*[*][ ]" # more emoticon? + +## pgp + +color body red default "(BAD signature)" +color body cyan default "(Good signature)" +color body brightwhite default "^gpg: Good signature .*" +color body brightblue default "^gpg: " +color body brightblue red "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +mono body bold "^gpg: BAD signature from.*" + +# yes, an insance URL regex +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<>\"]" +# and a heavy handed email regex +#color body J_magent default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])" + +# Various smilies and the like +#color body brightblack default "<[Gg]>" # <g> +#color body brightblack default "<[Bb][Gg]>" # <bg> +#color body yellow default " [;:]-*[})>{(<|]" # :-) etc... +# *bold* +#color body blue default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +# _underline_ +#color body blue default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +# /italic/ (Sometimes gets directory names) +#color body blue default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" + +# Border lines. +#color body blue default "( *[-+=#*~_]){6,}" + +#folder-hook . "color status J_black J_status " +#folder-hook gmail/inbox "color status J_black yellow " +#folder-hook gmail/important "color status J_black yellow " + diff --git a/src/mutt/colors-solarized-light-256 b/src/mutt/colors-solarized-light-256 @@ -0,0 +1,151 @@ +# vim: filetype=muttrc + +# +# +# make sure that you are using mutt linked against slang, not ncurses, or +# suffer the consequences of weird color issues. use "mutt -v" to check this. + +# custom body highlights ----------------------------------------------- +# highlight my name and other personally relevant strings +#color body color136 color233 "(ethan|schoonover)" +# custom index highlights ---------------------------------------------- +# messages which mention my name in the body +#color index color136 color233 "~b \"phil(_g|\!| gregory| gold)|pgregory\" !~N !~T !~F !~p !~P" +#color index J_cream color233 "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~N !~T !~F !~p !~P" +#color index color136 color37 "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~T !~F !~p !~P" +#color index color136 J_magent "~b \"phil(_g|\!| gregory| gold)|pgregory\" ~F !~p !~P" +## messages which are in reference to my mails +#color index J_magent color233 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" !~N !~T !~F !~p !~P" +#color index J_magent color233 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~N !~T !~F !~p !~P" +#color index J_magent color37 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~T !~F !~p !~P" +#color index J_magent color160 "~x \"(mithrandir|aragorn)\\.aperiodic\\.net|thorin\\.hillmgt\\.com\" ~F !~p !~P" + +# for background in 16 color terminal, valid background colors include: +# base03, bg, black, any of the non brights + +# basic colors --------------------------------------------------------- +color normal color244 color233 +color error color160 color233 +color tilde color254 color233 +color message color37 color233 +color markers color160 color234 +color attachment color234 color233 +color search color61 color233 +#color status J_black J_status +color status color244 color254 +color indicator color230 color136 +color tree color136 color233 # arrow in threads + +# basic monocolor screen +mono bold bold +mono underline underline +mono indicator reverse +mono error bold + +# index ---------------------------------------------------------------- + +#color index color160 color233 "~D(!~p|~p)" # deleted +#color index color254 color233 ~F # flagged +#color index color166 color233 ~= # duplicate messages +#color index color245 color233 "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest +#color index J_base color233 "~A~N!~T!~p!~Q!~F!~D" # the rest, new +color index color160 color233 "~A" # all messages +color index color166 color233 "~E" # expired messages +color index color33 color233 "~N" # new messages +color index color33 color233 "~O" # old messages +color index color61 color233 "~Q" # messages that have been replied to +color index color245 color233 "~R" # read messages +color index color33 color233 "~U" # unread messages +color index color33 color233 "~U~$" # unread, unreferenced messages +color index color244 color233 "~v" # messages part of a collapsed thread +color index color244 color233 "~P" # messages from me +color index color37 color233 "~p!~F" # messages to me +color index color37 color233 "~N~p!~F" # new messages to me +color index color37 color233 "~U~p!~F" # unread messages to me +color index color245 color233 "~R~p!~F" # messages to me +color index color160 color233 "~F" # flagged messages +color index color160 color233 "~F~p" # flagged messages to me +color index color160 color233 "~N~F" # new flagged messages +color index color160 color233 "~N~F~p" # new flagged messages to me +color index color160 color233 "~U~F~p" # new flagged messages to me +color index color254 color160 "~D" # deleted messages +color index color239 color233 "~v~(!~N)" # collapsed thread with no unread +color index color136 color233 "~v~(~N)" # collapsed thread with some unread +color index color64 color233 "~N~v~(~N)" # collapsed thread with unread parent +# statusbg used to indicated flagged when foreground color shows other status +# for collapsed thread +color index color160 color254 "~v~(~F)!~N" # collapsed thread with flagged, no unread +color index color136 color254 "~v~(~F~N)" # collapsed thread with some unread & flagged +color index color64 color254 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged +color index color64 color254 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged +color index color37 color254 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly +color index color136 color160 "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial) +#color index color136 color233 "~(~N)" # messages in threads with some unread +#color index color64 color233 "~S" # superseded messages +#color index color160 color233 "~T" # tagged messages +#color index color166 color160 "~=" # duplicated messages + +# message headers ------------------------------------------------------ + +#color header color245 color233 "^" +color hdrdefault color245 color233 +color header color244 color233 "^(From)" +color header color33 color233 "^(Subject)" + +# body ----------------------------------------------------------------- + +color quoted color33 color233 +color quoted1 color37 color233 +color quoted2 color136 color233 +color quoted3 color160 color233 +color quoted4 color166 color233 + +color signature color245 color233 +color bold color254 color233 +color underline color254 color233 +color normal color240 color233 +# +color body color239 color233 "[;:][-o][)/(|]" # emoticons +color body color239 color233 "[;:][)(|]" # emoticons +color body color239 color233 "[*]?((N)?ACK|CU|LOL|SCNR|BRB|BTW|CWYL|\ + |FWIW|vbg|GD&R|HTH|HTHBE|IMHO|IMNSHO|\ + |IRL|RTFM|ROTFL|ROFL|YMMV)[*]?" +color body color239 color233 "[ ][*][^*]*[*][ ]?" # more emoticon? +color body color239 color233 "[ ]?[*][^*]*[*][ ]" # more emoticon? + +## pgp + +color body color160 color233 "(BAD signature)" +color body color37 color233 "(Good signature)" +color body color230 color233 "^gpg: Good signature .*" +color body color244 color233 "^gpg: " +color body color244 color160 "^gpg: BAD signature from.*" +mono body bold "^gpg: Good signature" +mono body bold "^gpg: BAD signature from.*" + +# yes, an insance URL regex +color body color160 color233 "([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<>\"]" +# and a heavy handed email regex +#color body J_magent color233 "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])" + +# Various smilies and the like +#color body color233 color233 "<[Gg]>" # <g> +#color body color233 color233 "<[Bb][Gg]>" # <bg> +#color body color136 color233 " [;:]-*[})>{(<|]" # :-) etc... +# *bold* +#color body color33 color233 "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +#mono body bold "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)" +# _underline_ +#color body color33 color233 "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)" +# /italic/ (Sometimes gets directory names) +#color body color33 color233 "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" +#mono body underline "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)" + +# Border lines. +#color body color33 color233 "( *[-+=#*~_]){6,}" + +#folder-hook . "color status J_black J_status " +#folder-hook gmail/inbox "color status J_black color136 " +#folder-hook gmail/important "color status J_black color136 " + diff --git a/src/zlibs/helpers b/src/zlibs/helpers @@ -151,62 +151,49 @@ ramdisk() { # CERT # downloads and/or installs certificates cert() { - if [ -z $1 ]; then - error "Certificate handler called without an argument" - return 1; - fi - - certificate="$1" - case $certificate in - gmail) - cc=Equifax_Secure_Certificate_Authority - if ! [ -r $WORKDIR/certs/${cc}.pem ]; then + act "Downloading all known certificates (needs Internet connectivity)" + +# gmail) + cc=Equifax_Secure_Certificate_Authority + if ! [ -r $WORKDIR/certs/${cc}.pem ]; then + + curl -o $WORKDIR/certs/${cc}.pem \ + "https://www.geotrust.com/resources/root_certificates/certificates/${cc}.cer" + openssl x509 -in \ + $WORKDIR/certs/${cc}.pem -fingerprint \ + -subject -issuer -serial -hash -noout + fi + notice "Google CA succesfully installed" + +# dyne|autistici|freaknet) + cc=Autistici_Certificate_Authority + if ! [ -r $WORKDIR/certs/${cc}.pem ]; then + curl -o $WORKDIR/certs/${cc}.pem \ + "http://ca.autistici.org/ca.pem" + openssl x509 -in \ + $WORKDIR/certs/${cc}.pem \ + -fingerprint -subject -issuer -serial -hash -noout + fi + notice "Aut/Inv CA succesfully installed" + +# riseup) + cc=RiseupCA + if ! [ -r $WORKDIR/certs/${cc}.pem ]; then + curl -o $WORKDIR/certs/${cc}.pem "https://help.riseup.net/assets/43052/RiseupCA.pem" + openssl x509 -in \ + $WORKDIR/certs/${cc}.pem \ + -fingerprint -subject -issuer -serial -hash -noout + fi + notice "Riseup CA succesfully installed" - curl -o $WORKDIR/certs/${cc}.pem \ - "https://www.geotrust.com/resources/root_certificates/certificates/${cc}.cer" - openssl x509 -in \ - $WORKDIR/certs/${cc}.pem -fingerprint \ - -subject -issuer -serial -hash -noout - fi - ;; - dyne|autistici|freaknet) - cc=Autistici_Certificate_Authority - if ! [ -r $WORKDIR/certs/${cc}.pem ]; then - curl -o $WORKDIR/certs/${cc}.pem \ - "http://ca.autistici.org/ca.pem" - openssl x509 -in \ - $WORKDIR/certs/${cc}.pem \ - -fingerprint -subject -issuer -serial -hash -noout - fi - ;; - riseup) - cc=RiseupCA - if ! [ -r $WORKDIR/certs/${cc}.pem ]; then - curl -o $WORKDIR/certs/${cc}.pem "https://help.riseup.net/assets/43052/RiseupCA.pem" - openssl x509 -in \ - $WORKDIR/certs/${cc}.pem \ - -fingerprint -subject -issuer -serial -hash -noout - fi - ;; - *) - cc="`basename $certificate`" - curl -o "$WORKDIR/certs/${cc}" "$certificate" - if [ $? != 0 ]; then - error "Error downloading certificate: $certificate" - return 1 - fi - openssl x509 -in \ - "$WORKDIR/certs/${cc}" \ - -fingerprint -subject -issuer -serial -hash -noout - ;; - esac act "refreshing certificates" c_rehash $WORKDIR/certs > /dev/null if [ $? != 0 ]; then error "Error refreshing certificates in $WORKDIR/certs" c_rehash $WORKDIR/certs fi + notice "Done importing most common certificates." return 0 }