diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
--- a/ChangeLog
+++ /dev/null
@@ -1,1018 +0,0 @@
-Thu May  1 10:26:29 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  tagged 0.9 release
-
-Tue Apr 29 14:59:53 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * style, pointfree and trailing spaces
-
-Tue Apr 29 14:36:03 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Parsers: code and comment cleanup
-
-Tue Apr 29 14:27:29 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal update
-
-Tue Apr 29 12:33:12 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: updated to latest changes
-
-Tue Apr 29 12:32:42 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * email address, copyright date and more
-
-Tue Apr 29 12:32:15 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * bump cabal version to 0.9
-
-Tue Apr 29 12:29:44 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Weather: close handles when successfully retrieving the data
-
-Tue Apr 29 12:28:48 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * style
-
-Tue Apr 29 11:43:41 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Parser: '<' and '>' are not reserved characters anymore and can be used in the template
-  
-  Consider this the first 0.9 release candidate.
-  
-
-Sat Apr 19 11:00:32 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * config-sample: use Top for positioning
-  With Static xmobar does not set _NET_WM_STRUT_PARTIAL, which causes
-  troubles to novice xmonad users. 
-
-Fri Apr 18 20:53:36 CEST 2008  Spencer Janssen <sjanssen@cse.unl.edu>
-  * Remove -threaded from ghc-options.
-  GHC's -threaded scheduler seems to wake up more frequently even when all
-  threads are idle.  These frequent wakeups are detrimental to laptop battery
-  life.
-
-Sun Mar 30 22:37:22 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * move "use_xft" to "with_xft"
-
-Sun Mar 30 22:01:15 CEST 2008  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
-  * XUtil: fix UTF-8 check.
-
-Sun Mar 30 11:15:37 CEST 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Fix _NET_WM_STRUT_PARTIAL implementation
-
-Sat Mar 29 11:38:34 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Set _NET_WM_STRUT_PARTIAL instead of _NET_WM_STRUT and change mkUnmanageWindow to newWindow
-
-Tue Mar 18 11:18:58 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Automate version generation
-
-Mon Mar 17 13:23:27 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: typos
-
-Sun Mar 16 17:46:42 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: updated to latest changes
-
-Sun Mar 16 17:01:15 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Add BatteryP a monitor for batteries
-  
-  With this monitor is possible to set specific location where to
-  retrieve battery information.
-  
-  For example:
-  Run BatteryP ["BAT0","BAT1","BAT2"] [] 10
-  
-  this will read the following files:
-  /proc/acpi/battery/BAT0/info and /proc/acpi/battery/BAT0/state
-  /proc/acpi/battery/BAT1/info and /proc/acpi/battery/BAT1/state
-  /proc/acpi/battery/BAT1/info and /proc/acpi/battery/BAT2/state
-
-Sun Mar 16 13:28:05 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Config: use more xmonad friendly defaults
-
-Sun Mar 16 13:11:00 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * add XFT support and make UTF-8 support configurable
-  This patch includes many changes:
-  - moved font and printing functions to XUtil.hs and created an
-    abstraction layer to font management;
-  - ported the core, StdinReader and PipeReader to the new font
-    management system.
-  
-  To enable UTF-8 support configure with the "with_utf8" flag (requires
-  utf8-string):
-  runhaskell Setup.lhs configure --flags="with_utf8"
-  
-  To enable XFT (which will turn on UTF-8 support too) configure with the
-  "with_utf8" flag (requires utf8-string and X11-xft):
-  runhaskell Setup.lhs configure --flags="use_xft"
-
-Wed Feb 27 20:00:51 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Date: haddock fixes
-
-Wed Feb 27 14:38:29 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * remove xmobar.css from repository
-
-Tue Feb 26 16:19:18 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Add reference to curl dependency of the Weather plugin in the README
-  and remove README.html from the repository
-
-Tue Feb 19 02:19:09 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Xmobar: vertical align after wc string
-
-Sat Feb 16 17:06:50 CET 2008  Juraj Hercek <juhe_haskell@hck.sk>
-  * Adjusted filter used for digging out information from /sys directory
-    - As of 2.4.24 kernel you might experience same frequency for all cores,
-      because cpufreq directory is a link for cores 1 and higher
-
-Sat Feb 16 09:14:58 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: remove unneeded -liconv linker flag
-
-Sat Feb 16 09:04:21 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * PipeReader: add utf8 support
-
-Sat Feb 16 09:03:06 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * StdinReader: add utf8 support
-
-Sat Feb 16 09:01:51 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * add utf8 support to the core system
-
-Sat Feb 16 09:01:04 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: add HsLocale and dependency on utf8-string
-
-Sat Feb 16 09:00:26 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Add HsLocale to support utf8
-
-Sat Feb 16 08:58:42 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * trailing spaces
-
-Wed Jan  9 10:43:54 CET 2008  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Set strut value for BottomW and TopW too
-
-Sun Dec 23 00:14:19 CET 2007  Juraj Hercek <juhe_haskell@hck.sk>
-  * Added documentation.
-    - added Thermal, CoreTemp, CpuFreq documentation to README file
-    - added haddock documentation
-
-Sun Dec 23 00:10:39 CET 2007  Juraj Hercek <juhe_haskell@hck.sk>
-  * Adjusted thermal monitor.
-    - Thermal monitor can handle more thermal zones now
-
-Sun Dec 16 01:13:26 CET 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * Remove -O2 -fasm from ghc-options, allow Cabal to determine the best flags
-
-Tue Dec  4 15:54:49 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: directory needed only with small_base
-
-Fri Nov 30 21:54:30 CET 2007  Juraj Hercek <juhe_haskell@hck.sk>
-  * Added thermal, cpufreq and coretemp monitors.
-  Prerequisities:
-  thermal
-  - thermal module should be loaded/compiled in kernel
-  - available in (at least) intel centrino processors
-  cpufreq
-  - acpi_cpufreq module should be loaded/compiled in kernel
-  - available in modern processors
-  coretemp
-  - coretemp module should be loaded/compiled in kernel
-  - available (at least) in core 2 duo processors
-
-Sun Nov 18 13:07:23 CET 2007  Alexander Solovyov <piranha@piranha.org.ua>
-  * Typo fixes
-
-Thu Nov 15 14:49:05 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Now that a cold winter is approaching I added a new feature to Weather: the capacity of reading negative temperature.
-  This feature is generally not needed in Summertime. 
-
-Wed Nov 14 08:47:08 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: typo
-
-Sun Nov 11 17:31:12 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  tagged 0_8_release
-
-Sun Nov 11 10:59:56 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: updated cabal file to work with 1.2 and both ghc-6.6 and 6.8
-
-Sun Nov 11 10:59:19 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: added reference to a source tree that works with Cabal-1.1.x
-
-Thu Nov  8 00:10:28 CET 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * StdinReader: exit when stdin has been closed
-
-Mon Nov  5 11:23:54 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Plugins/Monitors/Common.hs: fix a bug in stringParser
-
-Sun Nov  4 18:58:56 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README:updated to latest changes
-
-Sun Nov  4 18:45:51 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * A new implementation of the position configuration option
-  WARNING: this patch breaks previous configuration files.
-  A new implementation of the position configuration option:
-  - Top and Bottom have non arguments
-  - TopW and BottomW have now 2 arguments: Align (L, C or R) and Int
-  - setting a width % greater than 100 means a 100% width
-
-Sun Nov  4 16:32:44 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * helloworld.config updated to recent changes
-
-Sun Nov  4 16:26:26 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Preserve backward compatibility
-  WARNING: this patch changes the configuration file
-  This patch reintroduces backward compatibility with recent changes in
-  the configuration option. Now Top and Bottom do not take any argument.
-  To set the width and alignment used TopW (Align Int) and BottomW
-  (Align Int) instead, where Align is either C, L or R.
-
-Sun Nov  4 12:21:06 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * helloworld.config: updated to latest configuration changes
-
-Sun Nov  4 12:17:31 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added an argument to Top and Bottom type contructors
-
-Sun Nov  4 12:16:55 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added an argument to Top and Bottom type contructors
-
-Sun Nov  4 12:12:21 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added possibility to set the main window's width
-  WARNING: this patch breaks previous configuration files!
-  
-  Changed the position configuration option: now Top and Bottom require
-  one argument, the width of the main window. 4 possibilities are given:
-  - A means all the screen width
-  - C Int means centered, with the Int percentage of screen width
-  - L Int means left aligned, with the Int percentage of screen width
-  - R Int means right aligned, with the Int percentage of screen width
-  
-  Examples:
-  position = Top A
-  or
-  position = Bottom (C 50)
-
-Sun Nov  4 12:12:00 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Window is mapped after properties have been set
-
-Sun Nov  4 12:11:11 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Fixed a compilation issue on non 32bit machines
-
-Sat Nov  3 14:03:06 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Removed X11-extras-0.4 and bump X11 to 1.3.0
-
-Thu Nov  1 10:11:09 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: added reference to a screenshot
-
-Wed Oct 31 12:37:14 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: added link to xmonad home page
-
-Wed Oct 31 12:28:10 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README updated darcs repository link
-
-Wed Oct 31 12:25:07 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README added position examples
-
-Wed Oct 31 11:58:34 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * css: fixed a validation error
-
-Wed Oct 31 11:49:33 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README add link to Ion
-
-Wed Oct 31 11:42:47 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added README.html and xmobar.css
-
-Wed Oct 31 11:39:00 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README now uses pandoc: this way we can also generate a nice home page
-
-Wed Oct 31 11:38:31 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Bump version to 0.8 and updated homepage
-
-Mon Oct 29 08:38:26 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Code formatting only
-
-Sun Oct 28 23:38:37 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Avoid irrefutable pattern in handling text alignment
-
-Sun Oct 28 23:03:05 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: latest updates
-
-Sun Oct 28 22:56:51 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added support for alignment commands in the output template
-
-Sun Oct 28 22:55:15 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Main: removed align and added alignSep configuration option
-
-Sun Oct 28 22:47:20 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added support for text alignment commands in the output template
-  WARNING: this patch breaks old configuration files.
-  - removed align configuration option
-  - added alignSep configuration option, a 2 character string: the text
-    before the first character will be align to left, the text in
-    between the 2 characters will be centered, and the text after the
-    second character will be align to the right. For instance:
-    with alignSep="][" the following output template
-    "left text ] %date% [ right text"
-    will display "left text" aligned to the left, a centered date, and
-    "right text" aligned to the right
-  See xmobar.config-sample or /Plugins/helloworld.config for examples
-
-Sun Oct 28 16:49:23 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: added credits to Lennart Kolmodin
-
-Sun Oct 28 14:44:51 CET 2007  Lennart Kolmodin <kolmodin@gentoo.org>
-  * Bump version requirement of X11-extras to 0.4
-  The constructor ExposeEvent appered in X11-extras-0.4
-
-Sun Oct 28 14:28:04 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: updated to latest changes
-
-Sun Oct 28 14:19:56 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Now we use information returned by getScreenInfo to draw the main window and more
-  - we now cache the FontStruct
-  - position is automatically calculated and updated in reposn to XRandR events
-
-Sun Oct 28 14:19:10 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Main: removed old options and added the new ones
-
-Sun Oct 28 13:40:34 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated config-sample to latest changes
-
-Sun Oct 28 13:40:10 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated config-sample to latest changes
-
-Sun Oct 28 13:36:38 CET 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Removed xPos yPos width and height configuration option and added position
-  WARNING: this patch breaks old configuration files:
-  - removed xPos, yPos, width and height
-  - a "position" configuration option has been added: this can be set to:
-    Top
-    Bottom
-    Static {xpos = Int, ypos = Int, width = Int, height = Int}
-  See xmobar.config-sample for an example
-
-Sun Oct 28 00:05:50 CEST 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * We must listen for ConfigureNotify events on the root window for xrandr
-
-Sun Oct 28 00:01:35 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added credits to Dmitry Kurochkin
-
-Sat Oct 27 13:44:37 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README screenshot url
-
-Sat Oct 27 13:33:25 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README some updates
-
-Sat Oct 27 13:11:27 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added XRandR support
-  - Added support for XRandR: if the screen configuration changes,
-    Xmobar will use the configured width only if smaller than the screen
-    width, otherwise the later will be used instead.
-  - Now Xmonad will set _NET_WM_STRUT and will present itself as a DOCK
-    application
-
-Sat Oct 27 13:10:32 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Bump version to 0.8
-
-Sat Oct 27 13:09:32 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Main will now open the connection with the X server
-
-Sat Oct 27 13:08:34 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added X11-extras dependeny
-
-Tue Oct 23 18:54:30 CEST 2007  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
-  * Fix text vertical alignment.
-
-Fri Oct 12 21:39:44 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Allow setting the foreground color
-  Now it is possible dynamically set the foreground color of strings to
-  be displayed with the <fc=foreground,background>string</fc> tag.
-
-Fri Oct 12 21:39:20 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Parser: semplify color parsing
-
-Thu Oct 11 22:30:29 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * The MVar is needed to avoid a race condition
-  As Spencer noted the checker thread may be throwing an exception
-  immediately, thus producing a race condition.
-
-Sat Oct  6 12:54:47 CEST 2007  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
-  * Remove MVar from eventLoop.
-
-Wed Oct  3 10:58:06 CEST 2007  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
-  * Use dynamic exceptions.
-
-Fri Oct  5 00:39:21 CEST 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * Fix race conditions in Xmobar.eventLoop
-
-Thu Oct  4 02:03:48 CEST 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * Weather plugin: accept temperatures with decimal points
-
-Wed Oct  3 16:27:58 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README updated to recent API changes (the last hopefully)
-
-Wed Oct  3 16:27:00 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Date: now implemented using rate and run
-
-Wed Oct  3 16:25:49 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Reintroduced rate with a default implementation (1 second) to be used in the default implementation of start
-
-Wed Oct  3 13:08:14 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: updated to recent API change
-
-Wed Oct  3 13:07:43 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * HelloWorld defines only run
-
-Wed Oct  3 13:06:09 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * reintroduced run as an Exec method: this way it is possible to write plugins by defining either run or start
-
-Tue Oct  2 20:45:00 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * more code formatting
-
-Tue Oct  2 20:40:57 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * coding style consistency
-
-Tue Oct  2 20:11:34 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated README
-
-Tue Oct  2 17:04:04 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Removed unneeded stuff
-  Removed StateT: now we only use a ReaderT
-  Some more code and comments cleanup
-
-Tue Oct  2 13:53:19 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated helloworld.config-sample to latest changes
-
-Tue Oct  2 13:52:44 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated config-sample to latest changes
-
-Tue Oct  2 13:50:49 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: added stm to the dependency list
-
-Tue Oct  2 13:50:14 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Updated Parsers to latest changes
-
-Tue Oct  2 13:49:37 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated Main to lates changes
-
-Tue Oct  2 13:48:13 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Config: removed the refresh configuration option
-  WARNING: this patch breaks previous configuration files. To update
-  just get rid of the refresh configuration option ;)
-
-Tue Oct  2 13:45:38 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Now Xmobar uses STM concurrency
-  Now every time a TVar is updated the output window is redrawn. 
-
-Fri Sep 28 14:04:32 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added a plugin to read from stdin
-  Try it with: xmobar -t "%StdinReader%" -c '[Run StdinReader]'
-  then start writing ;)
-
-Fri Sep 28 14:04:13 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Removed unused rate method
-
-Fri Sep 28 14:03:44 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * code formatting
-
-Fri Sep 28 14:02:55 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Removed unused rate method
-
-Fri Sep 28 14:02:18 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Removed unused rate method
-
-Thu Sep 27 21:40:26 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * more cleanup
-
-Thu Sep 27 19:51:44 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * PipeReader: added a configurable alias
-
-Thu Sep 27 19:37:11 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Monitors: updated to recent API changes - code formatting
-
-Thu Sep 27 19:36:51 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * HelloWorld: updated to recent API changes
-
-Thu Sep 27 19:35:57 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Date: updated to recent API changes
-
-Thu Sep 27 19:35:29 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added a plugin to read named pipes (such as an XMonad logger)
-
-Thu Sep 27 19:34:49 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Confg.hs: added PipeReader to the default configuration
-
-Thu Sep 27 19:31:51 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Setup: waiting for Cabal-1.2 :)
-
-Thu Sep 27 19:31:09 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Main.hs: updated to reflect the API change - code formatting and cleanup
-
-Thu Sep 27 19:29:51 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Xmobas.hs: updated to reflect the API change - code formatting and cleanup
-
-Thu Sep 27 19:29:24 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added Show instance to Runnable
-
-Thu Sep 27 19:28:48 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Plugins: added tenthSeconds to the exported API
-
-Thu Sep 27 19:27:51 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Updated Runnable to the new API - added Show instance
-
-Thu Sep 27 19:25:06 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * API change in the Exec class
-  Changed run :: a ->  IO String to
-  start :: a -> (String -> IO ()) -> IO ()
-  Suggested by Spencer Janssen.
-
-Sat Sep 15 18:38:46 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * code formatting
-
-Sat Sep 15 18:36:33 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added Date to default config
-
-Sat Sep 15 16:01:43 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added a date plugin
-
-Fri Sep 14 18:30:19 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added creadits to Jens
-
-Wed Sep 12 09:09:49 CEST 2007  Jens Petersen <petersen@haskell.org>
-  * Parse the temperature separately in Celcius and Fahrenheit.
-  Parse the pressure in hPa.
-  Generalize showWithColors to (Num a, Ord a) so it works for both Int's and Float's.
-  Use an Int for temperature, pressure, and relative humidity.
-
-Wed Sep 12 08:58:03 CEST 2007  Jens Petersen <petersen@haskell.org>
-  * only use 1 decimal place for showing floating numbers
-
-Wed Sep 12 08:54:20 CEST 2007  Jens Petersen <petersen@haskell.org>
-  * include BAT0 acpi battery status too
-
-Mon Sep 10 00:20:51 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: fixed some types
-
-Mon Aug 27 12:59:02 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Plugins.Swap: check for SwapFree and SwapTotal
-  In some system SwapFree and SwapTotal are in different position, so we
-  need to check for the string.
-  Reported by Stan Behrens
-
-Tue Jul 24 22:35:54 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Monitors.Common: parseString must use ByteStrings
-
-Tue Jul 24 19:30:47 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * loadQueryFont must be protected by catch
-  Expecially now that fonts can be easily choose with a command line options.
-
-Tue Jul 24 19:06:43 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Batt: we check if the file exists instead of catching an exception
-
-Tue Jul 24 16:22:05 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Monitors.Commons: more code cleanup
-
-Tue Jul 24 15:32:44 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Config.hs: removed %memory%" from default template
-
-Tue Jul 24 15:16:58 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: some more editing
-
-Tue Jul 24 14:51:20 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * if an invalid color name or value is given the black pixel will used instead
-
-Tue Jul 24 14:01:31 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: added an example of command line options usage
-
-Tue Jul 24 14:01:06 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * better error handling in Main.hs
-
-Tue Jul 24 13:40:47 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Batt: better error handling
-
-Tue Jul 24 13:10:19 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * ./Plugins/Monitors.hs: corrected module information
-
-Tue Jul 24 13:05:41 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: added download information
-
-Tue Jul 24 12:22:26 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * changed home page to http://gorgias.mine.nu/xmobar/
-
-Tue Jul 24 12:13:22 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: updated to latest changes
-
-Tue Jul 24 12:00:29 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * The help output must be visible in a terminal 80 characters wide
-
-Tue Jul 24 11:44:35 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * code and output cleanup
-
-Tue Jul 24 11:44:02 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Batt.hs: refactor to reduce resource usage
-
-Tue Jul 24 11:27:01 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Monitors.Common: parseString will not produce exceptions anymore
-  An empty string will be returned instead.
-
-Tue Jul 24 11:25:51 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Main.hs: removed exception
-  Check for default configuration file existence instead.
-
-Mon Jul 23 22:08:52 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added support for command line options
-  Configuration options will override configuration files, or default
-  configuration.
-
-Mon Jul 23 13:49:36 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * the normal color is set when normal > low
-
-Thu Jul 19 12:15:05 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Moved battery line parsing into the Maybe monad.
-
-Thu Jul 19 03:55:30 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Safer parsing without parsec in battery monitor
-
-Mon Jul 16 02:34:48 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Fix parsing and processing data in Batt monitor.
-  Sometimes the monitor would crash due to bad index given to (!!). Now it
-  should be safe, as parsing is done differently.
-
-Fri Jul 20 13:39:17 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * X code cleanup
-
-Thu Jul 19 07:40:59 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * oops, I forgot to add Monitors.hs (it's not possible to build xmobar without it!)
-
-Thu Jul 12 03:36:26 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Get rid of floats in scientific notation.
-  Use 'showDigits n' instead of 'show . takeDigits n'. As this example shows
-  explicit precision specifications would be appreciated ;)
-
-Thu Jul 12 03:09:11 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Allow reverse "high" and "low" thresholds
-
-Wed Jul 18 17:12:11 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Monitors are now a Plugin that can be removed from Config.hs
-
-Wed Jul 18 00:51:31 CEST 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * Use asynchronous exceptions to obviate the need for forkOS and threaded
-
-Tue Jul 17 23:11:38 CEST 2007  Spencer Janssen <sjanssen@cse.unl.edu>
-  * execCommands is a mapM
-
-Tue Jul 17 19:13:07 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * threads are now started with forkOS
-  This is required by the fact that calling nextEvent will block all other
-  running threads. So we need forkOS, which requires the -threaded ghc flag 
-
-Tue Jul 17 18:12:00 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: corrected x11-extras version number
-
-Tue Jul 17 18:07:56 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * XEvents code cleanup
-
-Tue Jul 17 15:14:11 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * XExposeEvent handling: that requires X11-extras
-  XExposeEvent is now properly (sort of) handled, with an hackish approch:
-  before nextEvent, that will block Xmobar since an Expose event is captured,
-  we create a background thread that will send an Expose event after the
-  configured refresh interval. So, either a real of a fake Expose event will
-  reach our window within the configured interval. Quite cool, after all.
-  
-
-Tue Jul 17 11:14:38 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * changed runXmobar to runXbar
-
-Sat Jul 14 12:39:13 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README and Cabal edits
-  Added some more credits, corrected typos, updated darcs version to 0.7,
-  changed name to Xmonbar and removed references to XMonad. Xmobar is now just
-  a minimalistic text based status bar for any kind of WM (the XMonad
-  community adopted the more advanced and stable dzen, after all ;-)
-
-Fri Jul 13 14:37:07 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * haddock tuning
-
-Fri Jul 13 13:13:02 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal: added Plugins to the list of modules
-
-Fri Jul 13 13:12:29 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Plugins.hs: some haddock corrections
-
-Fri Jul 13 13:11:48 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README: updated to the latest changes
-
-Fri Jul 13 12:13:29 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Config.hs: more code cleanup
-
-Fri Jul 13 11:36:47 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Runnable: cleanup and some comments
-
-Fri Jul 13 11:36:13 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added Plugins.hs for exporting the needed plugin API
-
-Fri Jul 13 11:35:16 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Plugins now import Plugins.hs
-
-Fri Jul 13 11:34:02 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Commands.hs: more code cleanup
-
-Thu Jul 12 23:56:15 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * removed the Show instance requirement for plugins
-
-Thu Jul 12 20:05:16 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal updates
-
-Thu Jul 12 20:04:34 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a plugin example with the needed runtime configuration file
-
-Thu Jul 12 20:04:05 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * credits to Claus Reinke and removed debugging code
-
-Thu Jul 12 19:50:34 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * use of existential types for plugin support
-  This patch, which *changes the configuration format*, adds easy plugin support
-  by using an existential type for storing the list of commands to be
-  executed. Adding a plugin is just a matter of writing the appropriate
-  instance of the Exec class, after importing Commands.hs.
-  I must thank Claus Reinke for the help in understanding the mysteries of
-  reading existential types. The Read instance of Runnable must be credited to
-  him. See here:
-  http://www.haskell.org/pipermail/haskell-cafe/2007-July/028227.html
-
-Wed Jul 11 20:31:31 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Commands.hs: monitors take only one action now
-
-Wed Jul 11 20:22:21 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Weather.hs: code clean up
-
-Wed Jul 11 20:06:30 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * config-sample: eyes candy
-
-Wed Jul 11 20:04:37 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * more unused stuff removed
-
-Wed Jul 11 18:54:26 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated README to latest changes
-
-Wed Jul 11 18:52:47 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Net.hs: removed parserc. Now using list function to parse
-  Profiling shows that Net.hs and getNumbers specifically takes a huge ammount
-  of resources. Hope to reduce them with this patch.
-
-Wed Jul 11 18:50:35 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * removed from monitors code not used anymore
-
-Wed Jul 11 18:48:19 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Net.hs: removed old code
-
-Wed Jul 11 17:02:21 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * some colors please!
-  Krzysztof says that we cannot set default colors without embedding a
-  Turing-complete language in the templates, so that we can take account of
-  different unit of measurement. May I set some colors in the configuration
-  example??
-
-Wed Jul 11 17:02:01 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * gettin' rid of Krzysztof's object-oriented attitude...;-)
-
-Tue Jul 10 16:15:50 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Formatting usedratio in Monitors.Swap
-
-Tue Jul 10 16:14:06 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Fix takeDigits so it doesn't use read.
-
-Tue Jul 10 16:13:29 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Typos in Monitors.Common
-
-Tue Jul 10 16:08:45 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Clean up default options for monitors.
-   * Moved default configuration to Monitors.Common
-   * Colors are optional and are off by default
-
-Thu Jul  5 18:03:20 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Read default configuration from ~/.xmobarrc
-  I am not sure if handling of other exceptions is acceptable, the assumption is
-  that failure to read ~/.xmobarrc because of other errors than parsing should
-  not blow up the whole program. Otherwise explicit test for file existence
-  would be required etc.
-
-Mon Jul  9 02:29:47 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * new working version and named colors in config-sample
-
-Mon Jul  9 02:12:03 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * comments only
-
-Mon Jul  9 01:43:04 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * fixes a bug in the copyArea function
-
-Mon Jul  9 01:23:38 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a short-hand for fromintegral (much used here)
-
-Mon Jul  9 00:48:54 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * This should fix the flickering problem on window's updates
-
-Sun Jul  8 20:37:42 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * typo
-
-Sun Jul  8 19:13:30 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * editing to README
-
-Sun Jul  8 19:13:09 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added info to Commands.hs
-
-Sun Jul  8 12:28:41 CEST 2007  Andrea Rossato <andrea.rossatoo@unibz.it>
-  tagged 0.5
-
-Sun Jul  8 12:24:59 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated to version 0.5
-
-Sun Jul  8 12:24:18 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated (I actually wrote some) documentation about configuring XMobar
-
-Sun Jul  8 12:17:02 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * hope this fixes the "flickering text" problem reported by Krzysztof
-
-Sun Jul  8 12:16:28 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * some monitors are now run internally
-
-Sun Jul  8 12:14:30 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated configurations to reflect code changes
-
-Sun Jul  8 12:12:08 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * the output template is now parsed with the help of a finite map
-  This way we can quickly implement program name aliasing.
-
-Sun Jul  8 12:10:33 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * monitors are now run internally
-
-Sun Jul  8 12:03:20 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * better error handling when parsing weather information
-
-Sun Jul  8 12:01:48 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * better error handling when parsing weather information
-
-Sun Jul  8 12:01:20 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added runM to run monitors internally
-
-Sun Jul  8 11:55:21 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added Commands
-  Command is the data type for configuring command execution in XMobar. The
-  idea came in a discussion with Spencer Janssen. At first XMobar was intended
-  to be used only to display the output of external commands, but it came
-  clear that the main performance bottle neck was running external programs.
-  Now, some monitors are run internally, even if in separated threads. 
-
-Fri Jul  6 03:01:24 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Add support for named colors.
-  If bad color name is specified then exception is thrown by Xlib.
-  This should be probably handled in a more elegant way.
-
-Fri Jul  6 04:48:14 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Fix centered text align.
-
-Thu Jul  5 22:47:21 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Swap: usedratio reported free ratio
-
-Thu Jul  5 17:28:15 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Fix few config name typos
-
-Thu Jul  5 17:04:07 CEST 2007  Krzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>
-  * Add dependency on filepath
-
-Thu Jul  5 15:28:14 CEST 2007  Andrea Rossato <andrea.rossatoo@unibz.it>
-  tagged 0.4
-
-Thu Jul  5 15:24:27 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated sample configuration
-
-Thu Jul  5 15:22:21 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated to version 0.4 and added new monitors
-
-Thu Jul  5 15:21:45 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated to use the new Common.hs
-
-Thu Jul  5 15:21:15 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated to use the new Common.hs
-
-Thu Jul  5 15:20:22 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a swap monitor
-
-Thu Jul  5 15:19:49 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated to use the new Common.hs and split the swap part in a new monitor
-
-Thu Jul  5 15:19:15 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated Cpu.hs to work with the new Common.hs
-
-Thu Jul  5 15:18:35 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a small library for writing monitors
-
-Thu Jul  5 15:17:49 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a battery monitor
-
-Thu Jul  5 15:16:11 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * minor
-
-Thu Jun 28 00:13:46 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Cpu.hs more code clean up
-
-Wed Jun 27 23:49:57 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Cpu.hs now requires -threaded
-
-Wed Jun 27 23:49:13 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * typos
-
-Wed Jun 27 23:45:31 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Cpu.hs: removed Parsec and switched to ByteString
-
-Wed Jun 27 11:44:46 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * possibility to delay a thread for more than (maxBound :: Int) microseconds
-
-Wed Jun 27 00:55:38 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * version 0.3.1
-
-Wed Jun 27 00:52:34 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * default is Glasgow ;-)
-
-Wed Jun 27 00:51:56 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * fixed an out of bount bug that could cause a flood to http://weather.noaa.gov/
-
-Tue Jun 26 20:45:42 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * removed debug output
-
-Tue Jun 26 20:07:14 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added cabal and config reference to the weather monitor
-
-Tue Jun 26 20:06:27 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * corrected the threadDelay arguments
-
-Tue Jun 26 20:05:37 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a weather monitor to retrieve weather information from http://weather.noaa.gov/
-
-Tue Jun 26 13:39:48 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * splitted files
-
-Tue Jun 26 13:01:04 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * now the Xbar monad is similar to the one of XMonad
-
-Tue Jun 26 11:44:52 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cosmetics
-
-Tue Jun 26 11:43:57 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * Added -threaded option for ghc
-
-Tue Jun 26 10:06:19 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added refresh rate config option for each command to be run
-
-Tue Jun 26 09:42:39 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * now each command is run in a separate thread and MVars are used for interprocess communication
-
-Tue Jun 26 07:17:47 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * better error handling
-
-Tue Jun 26 07:16:22 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * createWin will now return Xbar (Display, Window)
-
-Mon Jun 25 18:44:19 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated the README
-
-Mon Jun 25 14:21:59 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * * fixes some memory leak problems
-  After calling loadQueryFont the FontStruct returned must be freed after using it.
-  runInteractiveProcess leaks memory. runInteractiveCommand does not.
-
-Fri Jun 22 15:07:09 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * README and description
-
-Fri Jun 22 14:53:03 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * updated example config
-
-Fri Jun 22 14:52:29 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * cabal updates
-
-Fri Jun 22 14:51:52 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added some monitors with output formatted for xmobar
-
-Fri Jun 22 14:51:33 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * comments
-
-Fri Jun 22 12:51:28 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * removed monitor.hs (useless now)
-
-Fri Jun 22 12:48:52 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * big update: this is a status bar now
-  Added a lot of features.
-
-Tue Jun 19 19:40:06 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a refresh rate configuration option
-
-Tue Jun 19 12:52:35 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * haddock and other minor editing
-
-Tue Jun 19 12:51:50 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added cabal support
-
-Tue Jun 19 12:51:32 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added license (bsd3)
-
-Tue Jun 19 11:12:16 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added a sample config file
-
-Tue Jun 19 11:00:18 CEST 2007  Andrea Rossato <andrea.rossato@ing.unitn.it>
-  * added license and some info
-
-Tue Jun 19 10:07:45 CEST 2007  Andrea Rossato <andrea.rossatoo@unibz.it>
-  * some changes to monitor.hs to test xmobar
-
-Tue Jun 19 10:06:25 CEST 2007  Andrea Rossato <andrea.rossatoo@unibz.it>
-  * added a monitoring script found here http://blog.csdn.net/danranx/archive/2007/06/10/1646608.aspx
-
-Tue Jun 19 10:03:55 CEST 2007  Andrea Rossato <andrea.rossatoo@unibz.it>
-  * init
diff --git a/Commands.hs b/Commands.hs
--- a/Commands.hs
+++ b/Commands.hs
@@ -23,11 +23,14 @@
     , tenthSeconds
     ) where
 
+import Prelude hiding (catch)
 import Control.Concurrent
+import Control.Exception
 import Data.Char
 import System.Process
 import System.Exit
-import System.IO (hClose, hGetLine)
+import System.IO (hClose)
+import XUtil
 
 class Show e => Exec e where
     alias :: e -> String
@@ -64,7 +67,7 @@
                         hClose e
                 case exit of
                   ExitSuccess -> do
-                            str <- hGetLine o
+                            str <- catch (hGetLineSafe o) (\_ -> return "")
                             closeHandles
                             cb str
                   _ -> do closeHandles
diff --git a/Config.hs b/Config.hs
--- a/Config.hs
+++ b/Config.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP, TypeOperators #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Xmobar.Config
@@ -26,8 +28,13 @@
 import Plugins.Monitors
 import Plugins.Date
 import Plugins.PipeReader
+import Plugins.CommandReader
 import Plugins.StdinReader
 
+#ifdef INOTIFY
+import Plugins.Mail
+#endif
+
 -- $config
 -- Configuration data type and default configuration
 
@@ -37,7 +44,9 @@
            , bgColor        :: String     -- ^ Backgroud color
            , fgColor        :: String     -- ^ Default font color
            , position       :: XPosition  -- ^ Top Bottom or Static
-           , commands       :: [Runnable] -- ^ For setting the command, the command argujments
+           , lowerOnStart   :: Bool       -- ^ Lower to the bottom of the
+                                          --   window stack on initialization
+           , commands       :: [Runnable] -- ^ For setting the command, the command arguments
                                           --   and refresh rate for the programs to run (optional)
            , sepChar        :: String     -- ^ The character to be used for indicating
                                           --   commands in the output template (default '%')
@@ -50,6 +59,7 @@
                | Bottom
                | BottomW Align Int
                | Static {xpos, ypos, width, height :: Int}
+               | OnScreen Int XPosition
                  deriving ( Read, Eq )
 
 data Align = L | R | C deriving ( Read, Eq )
@@ -61,6 +71,7 @@
            , bgColor  = "#000000"
            , fgColor  = "#BFBFBF"
            , position = Top
+           , lowerOnStart = True
            , commands = [ Run $ Date "%a %b %_d %Y * %H:%M:%S" "theDate" 10
                         , Run StdinReader]
            , sepChar  = "%"
@@ -68,11 +79,20 @@
            , template = "%StdinReader% }{ <fc=#00FF00>%uname%</fc> * <fc=#FF0000>%theDate%</fc>"
            }
 
+
+-- | An alias for tuple types that is more convenient for long lists.
+type a :*: b = (a, b)
+infixr :*:
+
 -- | This is the list of types that can be hidden inside
 -- 'Runnable.Runnable', the existential type that stores all commands
 -- to be executed by Xmobar. It is used by 'Runnable.readRunnable' in
 -- the 'Runnable.Runnable' Read instance. To install a plugin just add
--- the plugin's type to the list of types appearing in this function's type
--- signature.
-runnableTypes :: (Command,(Monitors,(Date,(PipeReader,(StdinReader,())))))
+-- the plugin's type to the list of types (separated by ':*:') appearing in
+-- this function's type signature.
+runnableTypes :: Command :*: Monitors :*: Date :*: PipeReader :*: CommandReader :*: StdinReader :*:
+#ifdef INOTIFY
+                 Mail :*:
+#endif
+                 ()
 runnableTypes = undefined
diff --git a/Plugins/CommandReader.hs b/Plugins/CommandReader.hs
new file mode 100644
--- /dev/null
+++ b/Plugins/CommandReader.hs
@@ -0,0 +1,39 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Plugins.CommandReader
+-- Copyright   :  (c) John Goerzen
+-- License     :  BSD-style (see LICENSE)
+--
+-- Maintainer  :  Andrea Rossato <andrea.rossato@unibz.it>
+-- Stability   :  unstable
+-- Portability :  unportable
+--
+-- A plugin for reading from external commands
+-- note: stderr is lost here
+--
+-----------------------------------------------------------------------------
+
+module Plugins.CommandReader where
+
+import System.IO
+import Plugins
+import System.Process(runInteractiveCommand, getProcessExitCode)
+
+data CommandReader = CommandReader String String
+    deriving (Read, Show)
+
+instance Exec CommandReader where
+    alias (CommandReader _ a)    = a
+    start (CommandReader p _) cb = do
+        (hstdin, hstdout, hstderr, ph) <- runInteractiveCommand p
+        hClose hstdin
+        hClose hstderr
+        hSetBinaryMode hstdout False
+        hSetBuffering hstdout LineBuffering
+        forever ph (hGetLineSafe hstdout >>= cb)
+        where forever ph a = 
+                  do a
+                     ec <- getProcessExitCode ph
+                     case ec of
+                       Nothing -> forever ph a
+                       Just _ -> cb "EXITED"
diff --git a/Plugins/Mail.hs b/Plugins/Mail.hs
new file mode 100644
--- /dev/null
+++ b/Plugins/Mail.hs
@@ -0,0 +1,79 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Plugins.Mail
+-- Copyright   :  (c) Spencer Janssen
+-- License     :  BSD-style (see LICENSE)
+--
+-- Maintainer  :  Spencer Janssen <sjanssen@cse.unl.edu>
+-- Stability   :  unstable
+-- Portability :  unportable
+--
+-- A plugin for checking mail.
+--
+-----------------------------------------------------------------------------
+
+module Plugins.Mail where
+
+import Prelude hiding (catch)
+import System.IO
+import Plugins
+
+import Control.Monad
+import Control.Concurrent.STM
+
+import System.Directory
+import System.FilePath
+import System.INotify
+
+import Data.List (isPrefixOf)
+import Data.Set (Set)
+import qualified Data.Set as S
+
+-- | A list of mail box names and paths to maildirs.
+data Mail = Mail [(String, FilePath)]
+    deriving (Read, Show)
+
+instance Exec Mail where
+    start (Mail ms) cb = do
+        vs <- mapM (const $ newTVarIO S.empty) ms
+
+        let ts = map fst ms
+            ds = map ((</> "new") . snd) ms
+            ev = [Move, MoveIn, MoveOut, Create, Delete]
+
+        i <- initINotify
+        zipWithM_ (\d v -> addWatch i ev d (handle v)) ds vs
+
+        forM (zip ds vs) $ \(d, v) -> do
+            s <- fmap (S.fromList . filter (not . isPrefixOf "."))
+                    $ getDirectoryContents d
+            atomically $ modifyTVar v (S.union s)
+
+        changeLoop (mapM (fmap S.size . readTVar) vs) $ \ns -> do
+            cb . unwords $ [m ++ ":" ++  show n
+                                    | (m, n) <- zip ts ns
+                                    , n /= 0 ]
+
+modifyTVar :: TVar a -> (a -> a) -> STM ()
+modifyTVar v f = readTVar v >>= writeTVar v . f
+
+handle :: TVar (Set String) -> Event -> IO ()
+handle v e = atomically $ modifyTVar v $ case e of
+    Created  {} -> create
+    MovedIn  {} -> create
+    Deleted  {} -> delete
+    MovedOut {} -> delete
+    _           -> id
+ where
+    delete = S.delete (filePath e)
+    create = S.insert (filePath e)
+
+changeLoop :: Eq a => STM a -> (a -> IO ()) -> IO ()
+changeLoop s f = atomically s >>= go
+ where
+    go old = do
+        f old
+        go =<< atomically (do
+            new <- s
+            guard (new /= old)
+            return new)
diff --git a/Plugins/Monitors/Common.hs b/Plugins/Monitors/Common.hs
--- a/Plugins/Monitors/Common.hs
+++ b/Plugins/Monitors/Common.hs
@@ -55,6 +55,7 @@
 import Numeric
 import Text.ParserCombinators.Parsec
 import System.Console.GetOpt
+import Control.Exception (handle)
 
 import Plugins
 -- $monitor
@@ -148,7 +149,7 @@
     where go = do
             c <- conf
             let ac = doArgs args action
-            s <- runReaderT ac c
+            s <- handle (const $ return "error") $ runReaderT ac c
             cb s
             tenthSeconds r
             go
diff --git a/Plugins/Monitors/CoreCommon.hs b/Plugins/Monitors/CoreCommon.hs
--- a/Plugins/Monitors/CoreCommon.hs
+++ b/Plugins/Monitors/CoreCommon.hs
@@ -16,6 +16,7 @@
 
 import Plugins.Monitors.Common
 import System.Posix.Files (fileExist)
+import System.IO (withFile, IOMode(ReadMode), hGetLine)
 import System.Directory
 import Data.Char (isDigit)
 import Data.List (isPrefixOf)
@@ -26,7 +27,7 @@
 -- is performed.
 checkedDataRetrieval :: String -> String -> String -> String -> Double -> Monitor String
 checkedDataRetrieval failureMessage dir file pattern divisor = do
-    exists <- io $ fileExist $ foldl (++) dir ["/", pattern, "0/", file]
+    exists <- io $ fileExist $ concat [dir, "/", pattern, "0/", file]
     case exists of
          False  -> return failureMessage
          True   -> retrieveData dir file pattern divisor
@@ -38,15 +39,16 @@
 retrieveData :: String -> String -> String -> Double -> Monitor String
 retrieveData dir file pattern divisor = do
     count <- io $ dirCount dir pattern
-    contents <- io $ mapM readFile $ files count
+    contents <- io $ mapM getGuts $ files count
     values <- mapM (showWithColors show) $ map conversion contents
     parseTemplate values
     where
+        getGuts f = withFile f ReadMode hGetLine
         dirCount path str = getDirectoryContents path
                             >>= return . length
                                        . filter (\s -> str `isPrefixOf` s
                                                        && isDigit (last s))
-        files count = [ foldl (++) dir [ "/", pattern, show i, "/", file ]
-                      | i <- [0 .. count - 1] ]
-        conversion = flip (/) divisor . (read :: String -> Double)
+        files count = map (\i -> concat [dir, "/", pattern, show i, "/", file])
+                          [0 .. count - 1]
+        conversion = (/divisor) . (read :: String -> Double)
 
diff --git a/Plugins/Monitors/CpuFreq.hs b/Plugins/Monitors/CpuFreq.hs
--- a/Plugins/Monitors/CpuFreq.hs
+++ b/Plugins/Monitors/CpuFreq.hs
@@ -25,7 +25,7 @@
 cpuFreqConfig = mkMConfig
        "Freq: <cpu0>GHz" -- template
        (zipWith (++) (repeat "cpu") (map show [0 :: Int ..])) -- available
-                                                               -- replacements
+                                                              -- replacements
 
 -- |
 -- Function retrieves monitor string holding the cpu frequency (or frequencies)
diff --git a/README b/README
--- a/README
+++ b/README
@@ -29,11 +29,11 @@
 
 The latest binary can be found here:
 
-        http://code.haskell.org/~arossato/xmobar/xmobar-0.9.bin
+<http://code.haskell.org/~arossato/xmobar/xmobar-0.9.bin>
 
 A recent screen shot can be found here:
 
-        http://code.haskell.org/~arossato/xmobar/xmobar-0.9.png
+<http://code.haskell.org/~arossato/xmobar/xmobar-0.9.png>
 
 Version 0.9 requires Cabal-1.2.x, but should work both with ghc-6.6.1
 and ghc-6.8.1.
@@ -228,7 +228,7 @@
 a standard input reader, an Unix named pipe reader, and a configurable
 date plugin. These plugins install the following internal commands:
 `Weather`, `Network`, `Memory`, `Swap`, `Cpu`, `Battery`, `Thermal`,
-`CpuFreq`, `CoreTemp`, `Date`, `StdinReader` and `PipeReader`.
+`CpuFreq`, `CoreTemp`, `Date`, `StdinReader`, `CommandReader`, and `PipeReader`.
 
 To remove them see below Installing/Removing a Plugin
 
@@ -298,7 +298,7 @@
 `BatteryP Dirs Args RefreshRate`
 
 - aliases to `battery`
-- Files: list of directories in /proc/acpi/battery/ direcotry where to
+- Files: list of directories in /proc/acpi/battery/ directory where to
   look for the `state` and `info` files. Example:
   `["BAT0","BAT1","BAT2"]`. Only the first 3 directories will be
   searched.
@@ -338,6 +338,13 @@
 - This monitor requires coretemp module to be loaded in kernel
 - Example: `Run CoreTemp ["-t","Temp:\<core0\>|\<core1\>C","-L","40","-H","60","-l","lightblue","-n","gray90","-h","red"] 50`
 
+`Mail Args`
+
+- aliases to `Mail`
+- Args: list of maildirs in form [("name1","path1"),("name2","path2")]
+- This plugin requires INOTIFY support in Linux kernel and hinotify library.
+  To activate, pass --flags="with_inotify" to "runhaskell Setup configure".
+
 ### Monitor Plugins Commands Arguments
 
 These are the arguments that can be used for internal commands in the
@@ -391,6 +398,8 @@
 
 `StdinReader`
 
+`CommandReader "/path/to/program" Alias`
+
 `PipeReader "/path/to/pipe" Alias`
 
 Plugins
@@ -470,7 +479,7 @@
    signature of `runnableTypes` in `Config.hs`. For instance, for the
    HelloWorld plugin, change `runnableTypes` into:
 
-        runnableTypes :: (Command,(Monitors,(HelloWorld,())))
+        runnableTypes :: Command :*: Monitors :*: HelloWorld :*: ()
         runnableTypes = undefined
 
 3. Rebuild and reinstall [xmobar]. Now test it with:
@@ -499,12 +508,12 @@
 
 2. in `Config.hs` change
 
-         runnableTypes :: (Command,(Monitors,()))
+         runnableTypes :: Command :*: Monitors :*: ()
          runnableTypes = undefined
 
     to
 
-         runnableTypes :: (Command,())
+         runnableTypes :: Command :*: ()
          runnableTypes = undefined
 
 3. rebuild [xmobar].
diff --git a/Runnable.hs b/Runnable.hs
--- a/Runnable.hs
+++ b/Runnable.hs
@@ -1,4 +1,4 @@
-{-# OPTIONS -fglasgow-exts #-}
+{-# LANGUAGE ExistentialQuantification, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Xmobar.Runnable
diff --git a/Runnable.hs-boot b/Runnable.hs-boot
--- a/Runnable.hs-boot
+++ b/Runnable.hs-boot
@@ -1,4 +1,4 @@
-{-# OPTIONS -fglasgow-exts #-}
+{-# LANGUAGE ExistentialQuantification  #-}
 module Runnable where
 import Commands
 
diff --git a/Xmobar.hs b/Xmobar.hs
--- a/Xmobar.hs
+++ b/Xmobar.hs
@@ -1,4 +1,3 @@
-{-# OPTIONS -fglasgow-exts #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Xmobar
@@ -128,20 +127,21 @@
 createWin :: Display -> XFont -> Config -> IO (Rectangle,Window)
 createWin d fs c = do
   let dflt = defaultScreen d
-  sr:_    <- getScreenInfo d
+  srs     <- getScreenInfo d
   rootw   <- rootWindow d dflt
   (as,ds) <- textExtents fs "0"
-  let ht       = as + ds + 4
-      (r,o) = setPosition (position c) sr (fi ht)
+  let ht    = as + ds + 4
+      (r,o) = setPosition (position c) srs (fi ht)
   win <- newWindow  d (defaultScreenOfDisplay d) rootw r o
   selectInput       d win (exposureMask .|. structureNotifyMask)
-  setProperties r c d win
+  setProperties r c d win srs
+  when (lowerOnStart c) (lowerWindow d win)
   mapWindow         d win
   return (r,win)
 
-setPosition :: XPosition -> Rectangle -> Dimension -> (Rectangle,Bool)
-setPosition p (Rectangle rx ry rw rh) ht =
-    case p of
+setPosition :: XPosition -> [Rectangle] -> Dimension -> (Rectangle,Bool)
+setPosition p rs ht =
+    case p' of
     Top                -> (Rectangle rx          ry      rw      h     , True)
     TopW L i           -> (Rectangle rx          ry     (nw i)   h     , True)
     TopW R i           -> (Rectangle (right  i)  ry     (nw i)   h     , True)
@@ -151,7 +151,11 @@
     BottomW R i        -> (Rectangle (right  i)  ny     (nw i)   h     , True)
     BottomW C i        -> (Rectangle (center i)  ny     (nw i)   h     , True)
     Static cx cy cw ch -> (Rectangle (fi cx   ) (fi cy) (fi cw) (fi ch), True)
+    OnScreen _ _       -> error "Nested OnScreen positions are not allowed"
     where
+      (Rectangle rx ry rw rh, p') = case p of
+                                        OnScreen i x -> (rs !! i, x)
+                                        _            -> (head rs, p)
       ny       = ry + fi (rh - ht)
       center i = rx + (fi $ div (remwid i) 2)
       right  i = rx + (fi $ remwid i)
@@ -160,28 +164,49 @@
       nw       = fi . pw . fi
       h        = fi ht
 
-setProperties :: Rectangle -> Config -> Display -> Window -> IO ()
-setProperties r c d w = do
+setProperties :: Rectangle -> Config -> Display -> Window -> [Rectangle] -> IO ()
+setProperties r c d w srs = do
   a1 <- internAtom d "_NET_WM_STRUT_PARTIAL"    False
   c1 <- internAtom d "CARDINAL"                 False
   a2 <- internAtom d "_NET_WM_WINDOW_TYPE"      False
   c2 <- internAtom d "ATOM"                     False
   v  <- internAtom d "_NET_WM_WINDOW_TYPE_DOCK" False
-  changeProperty32 d w a1 c1 propModeReplace $ map fi $ getStrutValues r c
+  changeProperty32 d w a1 c1 propModeReplace $ map fi $
+    getStrutValues r (position c) (getRootWindowHeight srs)
   changeProperty32 d w a2 c2 propModeReplace [fromIntegral v]
 
-getStrutValues :: Rectangle -> Config -> [Int]
-getStrutValues (Rectangle x _ w h) c =
-    case position c of
-    Top         -> [0, 0, nh,  0, 0, 0, 0, 0, nx, nw,  0,  0]
-    TopW    _ _ -> [0, 0, nh,  0, 0, 0, 0, 0, nx, nw,  0,  0]
-    Bottom      -> [0, 0,  0, nh, 0, 0, 0, 0,  0,  0, nx, nw]
-    BottomW _ _ -> [0, 0,  0, nh, 0, 0, 0, 0,  0,  0, nx, nw]
-    _           -> [0, 0,  0,  0, 0, 0, 0, 0,  0,  0,  0,  0]
-    where nh = fi h
+getRootWindowHeight :: [Rectangle] -> Int
+getRootWindowHeight srs = foldr1 max (map getMaxScreenYCoord srs)
+  where
+    getMaxScreenYCoord sr = fi (rect_y sr) + fi (rect_height sr)
+
+getStrutValues :: Rectangle -> XPosition -> Int -> [Int]
+getStrutValues r@(Rectangle x y w h) p rwh =
+    case p of
+    OnScreen _ p'   -> getStrutValues r p' rwh
+    Top             -> [0, 0, st,  0, 0, 0, 0, 0, nx, nw,  0,  0]
+    TopW    _ _     -> [0, 0, st,  0, 0, 0, 0, 0, nx, nw,  0,  0]
+    Bottom          -> [0, 0,  0, sb, 0, 0, 0, 0,  0,  0, nx, nw]
+    BottomW _ _     -> [0, 0,  0, sb, 0, 0, 0, 0,  0,  0, nx, nw]
+    Static _ _ _ _  -> getStaticStrutValues p rwh
+    where st = fi y + fi h
+          sb = rwh - fi y
           nx = fi x
           nw = fi (x + fi w - 1)
 
+-- get some reaonable strut values for static placement. 
+getStaticStrutValues :: XPosition -> Int -> [Int]
+getStaticStrutValues (Static cx cy cw ch) rwh
+    -- if the yPos is in the top half of the screen, then assume a Top
+    -- placement, otherwise, it's a Bottom placement
+    | cy < (rwh `div` 2) = [0, 0, st,  0, 0, 0, 0, 0, xs, xe,  0,  0]
+    | otherwise          = [0, 0,  0, sb, 0, 0, 0, 0,  0,  0, xs, xe]
+    where st = cy + ch 
+          sb = rwh - cy
+          xs = cx -- a simple calculation for horizontal (x) placement
+          xe = xs + cw
+getStaticStrutValues _ _ = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+       
 updateWin :: TVar String -> X ()
 updateWin v = do
   xc <- ask
diff --git a/xmobar.cabal b/xmobar.cabal
--- a/xmobar.cabal
+++ b/xmobar.cabal
@@ -1,5 +1,5 @@
 name:               xmobar
-version:            0.9
+version:            0.9.1
 homepage:           http://code.haskell.org/~arossato/xmobar
 synopsis:           A Minimalistic Text Based Status Bar
 description: 	    Xmobar is a minimalistic text based status bar.
@@ -24,13 +24,20 @@
 flag with_utf8
   description: With UTF-8 support.
 
+flag with_inotify
+  description: inotify support (modern Linux only).  Required for the Mail plugin.
+
 executable xmobar
     main-is:            Main.hs
     other-Modules:      Xmobar, Config, Parsers, Commands, XUtil, Runnable, Plugins
     ghc-options:        -funbox-strict-fields -Wall
     ghc-prof-options:   -prof -auto-all
+
+    if impl (ghc == 6.10.1) && arch (x86_64)
+            ghc-options:    -O0
+
     if flag(small_base)
-       build-depends:   base >= 3, containers, process, old-time, old-locale, bytestring, directory
+       build-depends:   base >= 3, base < 4, containers, process, old-time, old-locale, bytestring, directory
 
     else
        build-depends:   base < 3
@@ -42,5 +49,9 @@
     if flag(with_utf8)
         build-depends: utf8-string
         cpp-options: -DUTF8
+
+    if flag(with_inotify)
+        build-depends: hinotify
+        cpp-options: -DINOTIFY
 
     build-depends:      X11>=1.3.0, mtl, unix, parsec, filepath, stm
diff --git a/xmobar.config-sample b/xmobar.config-sample
--- a/xmobar.config-sample
+++ b/xmobar.config-sample
@@ -2,6 +2,7 @@
        , bgColor = "black"
        , fgColor = "grey"
        , position = Top
+       , lowerOnStart = True
        , commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
                     , Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
                     , Run Network "eth1" ["-L","0","-H","32","--normal","green","--high","red"] 10
