diff --git a/news.md b/news.md
--- a/news.md
+++ b/news.md
@@ -1,5 +1,22 @@
 % xmobar - Release notes
 
+## Version 0.25 (February, 2018)
+
+_New features_
+
+  - The X11 properties `WM_NAME` and `WM_CLASS` for xmobar windows can
+    be setup in either the configuration file (`wmName` and `wmClass`)
+    or using the new flags `-n` adn `-w` (see [issue #323]).
+  - New flag `with_weather`, to build sans `Weather` monitor.
+
+_Bug fixes_
+
+   - Honouring -x in MPris monitor ([issue #325])
+
+
+[issue #323]: https://github.com/jaor/xmobar/issues/323
+[issue #325]: https://github.com/jaor/xmobar/issues/325
+
 ## Version 0.24.5 (May, 2017)
 
 _Bug fixes_
diff --git a/readme.md b/readme.md
--- a/readme.md
+++ b/readme.md
@@ -1,3 +1,4 @@
+[![Hackage](https://img.shields.io/hackage/v/xmobar.svg)](http://hackage.haskell.org/package/xmobar)
 [![Build Status](https://travis-ci.org/jaor/xmobar.svg?branch=master)](https://travis-ci.org/jaor/xmobar)
 
 # About
@@ -10,7 +11,7 @@
 features, like dynamic color management, icons, output templates, and
 extensibility through plugins.
 
-This page documents xmobar 0.24.5 (see [release notes]).
+This page documents xmobar 0.25 (see [release notes]).
 
 [This screenshot] shows xmobar running under [sawfish], with
 antialiased fonts. And [this one] is my desktop with [xmonad] and two
@@ -141,7 +142,7 @@
 :    Support for wireless cards. Enables the Wireless plugin. No Haskell
      library is required, but you will need the [iwlib] C library and
      headers in your system (e.g., install `libiw-dev` in Debian-based
-     systems).
+     systems or `wireless_tools` on Arch Linux).
 
 `with_alsa`
 :    Support for ALSA sound cards. Enables the Volume plugin. Requires the
@@ -158,11 +159,16 @@
      Requires the [libXpm] C library.
 
 `with_uvmeter`
-:    Enables UVMeter plugin. The plugin shows UV data for Australia.
+:    Enables UVMeter plugin. The plugin shows UV data for Australia. Requires
+     `with_conduit` to connect to HTTPS URLs.
 
+`with_weather`
+:    Support to display weather information. Enables Weather plugin.
+
 `with_conduit`
 :    Use http-conduit for getting weather data enabling support for http proxies.
      Requires [http-conduit] and [http-types].
+     Note that this flag has only an effect if `with_weather` is also set.
 
 `all_extensions`
 :    Enables all the extensions above.
@@ -362,6 +368,13 @@
 `template`
 :    The output template.
 
+
+`wmClass`
+:    The value for the window's X11 WM_CLASS property.  Defaults to "xmobar".
+
+`wmName`
+:    The value for the window's X11 WM_NAME property.  Defaults to "xmobar".
+
 ### Running xmobar with i3status
 
 xmobar can be used to display information generated by [i3status], a
@@ -389,6 +402,8 @@
       -h, -?        --help                 This help
       -V            --version              Show version information
       -f font name  --font=font name       The font name
+      -w class      --wmclass=class        X11 WM_CLASS property
+      -n name       --wmname=name          X11 WM_NAME property
       -B bg color   --bgcolor=bg color     The background color. Default black
       -F fg color   --fgcolor=fg color     The foreground color. Default grey
       -A alpha      --alpha=alpha          The transparency: 0 is transparent, 255 (the default) is opaque
@@ -1115,7 +1130,9 @@
 - Aliases to `mpris1`
 - Requires [dbus] and [text] packages.
   To activate, pass `--flags="with_mpris"` during compilation.
-- PlayerName: player supporting MPRIS v1 protocol, in lowercase.
+- PlayerName: player supporting MPRIS v1 protocol.  Some players need
+  this to be an all lowercase name (e.g. "spotify"), but some others
+  don't.
 - Args: default monitor arguments.
 - Variables that can be used with the `-t`/`--template` argument:
             `album`, `artist`, `arturl`, `length`, `title`, `tracknumber`
@@ -1129,7 +1146,9 @@
 - Aliases to `mpris2`
 - Requires [dbus] and [text] packages.
   To activate, pass `--flags="with_mpris"` during compilation.
-- PlayerName: player supporting MPRIS v2 protocol, in lowercase.
+- PlayerName: player supporting MPRIS v2 protocol.  Some players need
+  this to be an all lowercase name (e.g. "spotify"), but some others
+  don't.
 - Args: default monitor arguments.
 - Variables that can be used with the `-t`/`--template` argument:
             `album`, `artist`, `arturl`, `length`, `title`,
@@ -1161,6 +1180,7 @@
   the mail count (use an empty string for the default).
 - Opts is a possibly empty list of options, as flags. Possible values:
    -a  --all (no arg)  Show all mailboxes, even if empty.
+   -u (no arg) Show only the mailboxes' names, sans counts.
    -d dir  --dir dir a string giving the base directory where mbox files with
                      a relative path live.
    -p prefix --prefix prefix  a string giving a prefix for the list
@@ -1547,20 +1567,20 @@
 version 0.11.1. Since then, it is maintained and developed by [jao],
 with the help of the greater xmobar and Haskell communities.
 
-In particular, xmobar [incorporates patches] by Axel Angel, Dragos
-Boca, Ben Boeckel, Duncan Burke, Roman Cheplyaka, Patrick Chilton,
-Antoine Eiche, Nathaniel Wesley Filardo, John Goerzen, Reto Hablützel,
-Juraj Hercek, Tomáš Janoušek, Spencer Janssen, Roman Joost, Jochen
-Keil, Lennart Kolmodin, Krzysztof Kosciuszkiewicz, Dmitry Kurochkin,
-Todd Lunter, Robert J. Macomber, Dmitry Malikov, David McLean, Marcin
-Mikołajczyk, Dino Morelli, Tony Morris, Eric Mrak, Thiago Negri,
-Edward O'Callaghan, Svein Ove, Martin Perner, Jens Petersen, Alexander
-Polakov, Petr Rockai, Andrew Sackville-West, Markus Scherer, Alexander
-Shabalin, Valentin Shirokov, Peter Simons, Alexander Solovyov, Will
-Song, John Soros, Travis Staton, Artem Tarasov, Samuli Thomasson,
-Edward Tjörnhammar, Sergei Trofimovich, Thomas Tuegel, Jan Vornberger,
-Anton Vorontsov, Daniel Wagner, Zev Weiss, Phil Xiaojun Hu, Edward
-Z. Yang and Norbert Zeh.
+In particular, xmobar [incorporates patches] by Mohammed Alshiekh,
+Axel Angel, Dragos Boca, Ben Boeckel, Duncan Burke, Roman Cheplyaka,
+Patrick Chilton, Antoine Eiche, Nathaniel Wesley Filardo, John
+Goerzen, Reto Hablützel, Juraj Hercek, Tomáš Janoušek, Spencer
+Janssen, Roman Joost, Jochen Keil, Lennart Kolmodin, Krzysztof
+Kosciuszkiewicz, Dmitry Kurochkin, Todd Lunter, Robert J. Macomber,
+Dmitry Malikov, David McLean, Marcin Mikołajczyk, Dino Morelli, Tony
+Morris, Eric Mrak, Thiago Negri, Edward O'Callaghan, Svein Ove, Martin
+Perner, Jens Petersen, Alexander Polakov, Petr Rockai, Andrew
+Sackville-West, Markus Scherer, Alexander Shabalin, Valentin Shirokov,
+Peter Simons, Alexander Solovyov, Will Song, John Soros, Travis
+Staton, Artem Tarasov, Samuli Thomasson, Edward Tjörnhammar, Sergei
+Trofimovich, Thomas Tuegel, Jan Vornberger, Anton Vorontsov, Daniel
+Wagner, Zev Weiss, Phil Xiaojun Hu, Edward Z. Yang and Norbert Zeh.
 
 [jao]: http://jao.io
 [incorporates patches]: http://www.ohloh.net/p/xmobar/contributors
diff --git a/src/Bitmap.hs b/src/Bitmap.hs
--- a/src/Bitmap.hs
+++ b/src/Bitmap.hs
@@ -2,7 +2,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Bitmap
--- Copyright   :  (C) 2013, 2015, 2017 Alexander Polakov
+-- Copyright   :  (C) 2013, 2015, 2017, 2018 Alexander Polakov
 -- License     :  BSD3
 --
 -- Maintainer  :  jao@gnu.org
@@ -18,7 +18,7 @@
 
 import Control.Monad
 import Control.Monad.Trans(MonadIO(..))
-import Data.Map hiding (foldr, map, filter)
+import Data.Map hiding (map, filter)
 import Graphics.X11.Xlib
 import System.Directory (doesFileExist)
 import System.FilePath ((</>))
diff --git a/src/Config.hs b/src/Config.hs
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -50,6 +50,8 @@
 data Config =
     Config { font :: String         -- ^ Font
            , additionalFonts :: [String] -- ^ List of alternative fonts
+           , wmClass :: String      -- ^ X11 WM_CLASS property value
+           , wmName :: String       -- ^ X11 WM_NAME property value
            , bgColor :: String      -- ^ Backgroud color
            , fgColor :: String      -- ^ Default font color
            , position :: XPosition  -- ^ Top Bottom or Static
@@ -112,6 +114,8 @@
 defaultConfig =
     Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
            , additionalFonts = []
+           , wmClass = "xmobar"
+           , wmName = "xmobar"
            , bgColor = "#000000"
            , fgColor = "#BFBFBF"
            , alpha   = 255
diff --git a/src/IWlib.hsc b/src/IWlib.hsc
deleted file mode 100644
--- a/src/IWlib.hsc
+++ /dev/null
@@ -1,75 +0,0 @@
------------------------------------------------------------------------------
--- |
--- Module      :  IWlib
--- Copyright   :  (c) Jose A Ortega Ruiz
--- License     :  BSD-style (see LICENSE)
---
--- Maintainer  :  Jose A Ortega Ruiz <jao@gnu.org>
--- Stability   :  unstable
--- Portability :  unportable
---
---  A partial binding to iwlib
---
------------------------------------------------------------------------------
-
-{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-}
-
-
-module IWlib (WirelessInfo(..), getWirelessInfo) where
-
-import Foreign
-import Foreign.C.Types
-import Foreign.C.String
-
-data WirelessInfo = WirelessInfo { wiEssid :: String,  wiQuality :: Int }
-                  deriving Show
-
-#include <iwlib.h>
-
-data WCfg
-data WStats
-data WRange
-
-foreign import ccall "iwlib.h iw_sockets_open"
-  c_iw_open :: IO CInt
-
-foreign import ccall "unistd.h close"
-  c_iw_close :: CInt -> IO ()
-
-foreign import ccall "iwlib.h iw_get_basic_config"
-  c_iw_basic_config :: CInt -> CString -> Ptr WCfg -> IO CInt
-
-foreign import ccall "iwlib.h iw_get_stats"
-  c_iw_stats :: CInt -> CString -> Ptr WStats -> Ptr WRange -> CInt -> IO CInt
-
-foreign import ccall "iwlib.h iw_get_range_info"
-  c_iw_range :: CInt -> CString -> Ptr WRange -> IO CInt
-
-getWirelessInfo :: String -> IO WirelessInfo
-getWirelessInfo iface =
-  allocaBytes (#size struct wireless_config) $ \wc ->
-  allocaBytes (#size struct iw_statistics) $ \stats ->
-  allocaBytes (#size struct iw_range) $ \rng ->
-  withCString iface $ \istr -> do
-    i <- c_iw_open
-    bcr <- c_iw_basic_config i istr wc
-    str <- c_iw_stats i istr stats rng 1
-    rgr <- c_iw_range i istr rng
-    c_iw_close i
-    if bcr < 0 then return WirelessInfo { wiEssid = "", wiQuality = 0 } else
-      do hase <- (#peek struct wireless_config, has_essid) wc :: IO CInt
-         eon <- (#peek struct wireless_config, essid_on) wc :: IO CInt
-         essid <- if hase /= 0 && eon /= 0 then
-                    do let e = (#ptr struct wireless_config, essid) wc
-                       peekCString e
-                  else return ""
-         q <- if str >= 0 && rgr >=0 then
-                do qualv <- xqual $ (#ptr struct iw_statistics, qual) stats
-                   mv <- xqual $ (#ptr struct iw_range, max_qual) rng
-                   let mxv = if mv /= 0 then fromIntegral mv else 1
-                   return $ fromIntegral qualv / mxv
-              else return 0
-         let qv = round (100 * (q :: Double))
-         return WirelessInfo { wiEssid = essid, wiQuality = min 100 qv }
-    where xqual p = let qp = (#ptr struct iw_param, value) p in
-            (#peek struct iw_quality, qual) qp :: IO CChar
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -135,6 +135,8 @@
           | OnScr      String
           | IconRoot   String
           | Position   String
+          | WmClass    String
+          | WmName     String
        deriving Show
 
 options :: [OptDescr Opts]
@@ -142,6 +144,8 @@
     [ Option "h?" ["help"] (NoArg Help) "This help"
     , Option "V" ["version"] (NoArg Version) "Show version information"
     , Option "f" ["font"] (ReqArg Font "font name") "The font name"
+    , Option "w" ["wmclass"] (ReqArg WmClass "class") "X11 WM_CLASS property"
+    , Option "n" ["wmname"] (ReqArg WmName "name") "X11 WM_NAME property"
     , Option "B" ["bgcolor"] (ReqArg BgColor "bg color" )
       "The background color. Default black"
     , Option "F" ["fgcolor"] (ReqArg FgColor "fg color")
@@ -206,6 +210,8 @@
     Help -> putStr   usage >> exitSuccess
     Version -> putStrLn info  >> exitSuccess
     Font s -> doOpts' (conf {font = s})
+    WmClass s -> doOpts' (conf {wmClass = s})
+    WmName s -> doOpts' (conf {wmName = s})
     BgColor s -> doOpts' (conf {bgColor = s})
     FgColor s -> doOpts' (conf {fgColor = s})
     Alpha n -> doOpts' (conf {alpha = read n})
diff --git a/src/Parsers.hs b/src/Parsers.hs
--- a/src/Parsers.hs
+++ b/src/Parsers.hs
@@ -212,7 +212,8 @@
         return (x,s)
 
       perms = permute $ Config
-              <$?> pFont <|?> pFontList <|?> pBgColor <|?> pFgColor
+              <$?> pFont <|?> pFontList <|?> pWmClass <|?> pWmName
+              <|?> pBgColor <|?> pFgColor
               <|?> pPosition <|?> pTextOffset <|?> pIconOffset <|?> pBorder
               <|?> pBdColor <|?> pBdWidth <|?> pAlpha <|?> pHideOnStart
               <|?> pAllDesktops <|?> pOverrideRedirect <|?> pPickBroadest
@@ -220,7 +221,8 @@
               <|?> pCommands <|?> pSepChar <|?> pAlignSep <|?> pTemplate
 
 
-      fields    = [ "font", "additionalFonts","bgColor", "fgColor", "sepChar"
+      fields    = [ "font", "additionalFonts","bgColor", "fgColor"
+                  , "wmClass", "wmName", "sepChar"
                   , "alignSep" , "border", "borderColor" ,"template"
                   , "position" , "textOffset", "iconOffset"
                   , "allDesktops", "overrideRedirect", "pickBroadest"
@@ -230,6 +232,8 @@
 
       pFont = strField font "font"
       pFontList = strListField additionalFonts "additionalFonts"
+      pWmClass = strField wmClass "wmclass"
+      pWmName = strField wmName "windowName"
       pBgColor = strField bgColor "bgColor"
       pFgColor = strField fgColor "fgColor"
       pBdColor = strField borderColor "borderColor"
diff --git a/src/Plugins/Kbd.hsc b/src/Plugins/Kbd.hsc
--- a/src/Plugins/Kbd.hsc
+++ b/src/Plugins/Kbd.hsc
@@ -54,6 +54,7 @@
 instance Storable XkbStateRec where
     sizeOf _ = (#size XkbStateRec)
     alignment _ = alignment (undefined :: CUShort)
+    poke _ _ = undefined
     peek ptr = do
         r_group <- (#peek XkbStateRec, group) ptr
         r_locked_group <- (#peek XkbStateRec, locked_group) ptr
@@ -155,6 +156,7 @@
 instance Storable XkbKeyNameRec where
     sizeOf _ = (#size XkbKeyNameRec)
     alignment _ = alignment (undefined :: CUShort)
+    poke _ _ = undefined
     peek ptr = do
         r_name <- (#peek XkbKeyNameRec, name) ptr
 
@@ -165,6 +167,7 @@
 instance Storable XkbKeyAliasRec where
     sizeOf _ = (#size XkbKeyAliasRec)
     alignment _ = alignment (undefined :: CUShort)
+    poke _ _ = undefined
     peek ptr = do
         r_real <- (#peek XkbKeyAliasRec, real) ptr
         r_alias <- (#peek XkbKeyAliasRec, alias) ptr
@@ -177,6 +180,7 @@
 instance Storable XkbNamesRec where
     sizeOf _ = (#size XkbNamesRec)
     alignment _ = alignment (undefined :: CUShort)
+    poke _ _ = undefined
     peek ptr = do
         r_keycodes <- (#peek XkbNamesRec, keycodes) ptr
         r_geometry <- (#peek XkbNamesRec, geometry) ptr
@@ -215,6 +219,7 @@
 instance Storable XkbDescRec where
     sizeOf _ = (#size XkbDescRec)
     alignment _ = alignment (undefined :: CUShort)
+    poke _ _ = undefined
     peek ptr = do
         r_dpy <- (#peek XkbDescRec, dpy) ptr
         r_flags <- (#peek XkbDescRec, flags) ptr
diff --git a/src/Plugins/Monitors.hs b/src/Plugins/Monitors.hs
--- a/src/Plugins/Monitors.hs
+++ b/src/Plugins/Monitors.hs
@@ -20,7 +20,9 @@
 import Plugins
 
 import Plugins.Monitors.Common (runM, runMD)
+#ifdef WEATHER
 import Plugins.Monitors.Weather
+#endif
 import Plugins.Monitors.Net
 import Plugins.Monitors.Mem
 import Plugins.Monitors.Swap
@@ -53,8 +55,7 @@
 import Plugins.Monitors.Mpris
 #endif
 
-data Monitors = Weather      Station     Args Rate
-              | Network      Interface   Args Rate
+data Monitors = Network      Interface   Args Rate
               | DynNetwork               Args Rate
               | BatteryP     Args        Args Rate
               | BatteryN     Args        Args Rate Alias
@@ -74,6 +75,9 @@
               | TopMem       Args        Rate
               | Uptime       Args        Rate
               | CatInt       Int FilePath Args Rate
+#ifdef WEATHER
+              | Weather      Station     Args Rate
+#endif
 #ifdef UVMETER
               | UVMeter      Station     Args Rate
 #endif
@@ -104,7 +108,9 @@
 type DiskSpec  = [(String, String)]
 
 instance Exec Monitors where
+#ifdef WEATHER
     alias (Weather s _ _) = s
+#endif
     alias (Network i _ _) = i
     alias (DynNetwork _ _) = "dynnetwork"
     alias (Thermal z _ _) = z
@@ -148,7 +154,9 @@
     start (MultiCpu a r) = startMultiCpu a r
     start (TopProc a r) = startTop a r
     start (TopMem a r) = runM a topMemConfig runTopMem r
+#ifdef WEATHER
     start (Weather s a r) = runMD (a ++ [s]) weatherConfig runWeather r weatherReady
+#endif
     start (Thermal z a r) = runM (a ++ [z]) thermalConfig runThermal r
     start (ThermalZone z a r) =
       runM (a ++ [show z]) thermalZoneConfig runThermalZone r
diff --git a/src/Plugins/Monitors/Mpris.hs b/src/Plugins/Monitors/Mpris.hs
--- a/src/Plugins/Monitors/Mpris.hs
+++ b/src/Plugins/Monitors/Mpris.hs
@@ -85,7 +85,9 @@
 runMPRIS :: (MprisVersion a) => a -> String -> [String] -> Monitor String
 runMPRIS version playerName _ = do
     metadata <- io $ getMetadata version dbusClient playerName
-    mapM showWithPadding (makeList version metadata) >>= parseTemplate
+    if [] == metadata then
+      getConfigValue naString
+      else mapM showWithPadding (makeList version metadata) >>= parseTemplate
 
 runMPRIS1 :: String -> [String] -> Monitor String
 runMPRIS1 = runMPRIS MprisVersion1
diff --git a/src/Plugins/Monitors/UVMeter.hs b/src/Plugins/Monitors/UVMeter.hs
--- a/src/Plugins/Monitors/UVMeter.hs
+++ b/src/Plugins/Monitors/UVMeter.hs
@@ -18,11 +18,14 @@
 import Plugins.Monitors.Common
 
 import qualified Control.Exception as CE
-import Control.Applicative hiding ((<|>),many)
-import Network.HTTP
+import Network.HTTP.Conduit
+       (parseRequest, newManager, tlsManagerSettings, httpLbs,
+        responseBody)
+import Data.ByteString.Lazy.Char8 as B
 import Text.Read (readMaybe)
 import Text.Parsec
 import Text.Parsec.String
+import Control.Monad (void)
 
 
 uvConfig :: IO MConfig
@@ -35,14 +38,18 @@
     deriving (Show)
 
 uvURL :: String
-uvURL = "http://www.arpansa.gov.au/uvindex/realtime/xml/uvvalues.xml"
+uvURL = "https://uvdata.arpansa.gov.au/xml/uvvalues.xml"
 
 getData :: IO String
-getData = do
-    let request = getRequest uvURL
-    CE.catch (simpleHTTP request >>= getResponseBody) errHandler
-    where errHandler :: CE.IOException -> IO String
-          errHandler _ = return "<Could not retrieve data>"
+getData =
+  CE.catch (do request <- parseRequest uvURL
+               manager <- newManager tlsManagerSettings
+               res <- httpLbs request manager
+               return $ B.unpack $ responseBody res)
+           errHandler
+  where errHandler
+          :: CE.SomeException -> IO String
+        errHandler _ = return "<Could not retrieve data>"
 
 textToXMLDocument :: String -> Either ParseError [XML]
 textToXMLDocument = parse document ""
@@ -123,7 +130,7 @@
 
 xmlDecl :: Parser XML
 xmlDecl = do
-    string "<?xml"
+    void $ manyTill anyToken (string "<?xml") -- ignore the byte order mark
     decl <- many (noneOf "?>")
     string "?>"
     return (Decl decl)
diff --git a/src/Plugins/Monitors/Wireless.hs b/src/Plugins/Monitors/Wireless.hs
--- a/src/Plugins/Monitors/Wireless.hs
+++ b/src/Plugins/Monitors/Wireless.hs
@@ -17,7 +17,7 @@
 import System.Console.GetOpt
 
 import Plugins.Monitors.Common
-import IWlib
+import Network.IWlib
 
 newtype WirelessOpts = WirelessOpts
   { qualityIconPattern :: Maybe IconPattern
diff --git a/src/Signal.hs b/src/Signal.hs
--- a/src/Signal.hs
+++ b/src/Signal.hs
@@ -20,7 +20,7 @@
 
 import Data.Typeable (Typeable)
 import Control.Concurrent.STM
-import Control.Exception hiding (handle)
+import Control.Exception
 import System.Posix.Signals
 import Graphics.X11.Types (Button)
 import Graphics.X11.Xlib.Types (Position)
diff --git a/src/Window.hs b/src/Window.hs
--- a/src/Window.hs
+++ b/src/Window.hs
@@ -1,7 +1,7 @@
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Window
--- Copyright   :  (c) 2011-17 Jose A. Ortega Ruiz
+-- Copyright   :  (c) 2011-18 Jose A. Ortega Ruiz
 --             :  (c) 2012 Jochen Keil
 -- License     :  BSD-style (see LICENSE)
 --
@@ -18,7 +18,7 @@
 import Prelude
 import Control.Applicative ((<$>))
 import Control.Monad (when, unless)
-import Graphics.X11.Xlib hiding (textExtents, textWidth)
+import Graphics.X11.Xlib hiding (textExtents)
 import Graphics.X11.Xlib.Extras
 import Graphics.X11.Xinerama
 import Foreign.C.Types (CLong)
@@ -100,8 +100,8 @@
   card <- mkatom "CARDINAL"
   atom <- mkatom "ATOM"
 
-  setTextProperty d w "xmobar" wM_CLASS
-  setTextProperty d w "xmobar" wM_NAME
+  setTextProperty d w (wmClass c) wM_CLASS
+  setTextProperty d w (wmName c) wM_NAME
 
   wtype <- mkatom "_NET_WM_WINDOW_TYPE"
   dock <- mkatom "_NET_WM_WINDOW_TYPE_DOCK"
diff --git a/xmobar.cabal b/xmobar.cabal
--- a/xmobar.cabal
+++ b/xmobar.cabal
@@ -1,5 +1,5 @@
 name:               xmobar
-version:            0.24.5
+version:            0.25
 homepage:           http://xmobar.org
 synopsis:           A Minimalistic Text Based Status Bar
 description: 	    Xmobar is a minimalistic text based status bar.
@@ -82,8 +82,12 @@
   description: UVMeter only useful to australians.
   default: False
 
+flag with_weather
+  description: Enable weather plugin
+  default: True
+
 flag with_conduit
-  description: Use http-conduits for getting weather data
+  description: Use http-conduits for getting weather data, only has an effect if with_weather is set.
   default: False
 
 executable xmobar
@@ -105,9 +109,8 @@
       Plugins.Monitors.MultiCpu, Plugins.Monitors.Net,
       Plugins.Monitors.Swap, Plugins.Monitors.Thermal,
       Plugins.Monitors.ThermalZone, Plugins.Monitors.Top,
-      Plugins.Monitors.Uptime, Plugins.Monitors.Weather,
-      Plugins.Monitors.Bright, Plugins.Monitors.CatInt,
-      Plugins.Monitors.UVMeter
+      Plugins.Monitors.Uptime,
+      Plugins.Monitors.Bright, Plugins.Monitors.CatInt
 
     ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind
     extra-libraries: Xrandr Xrender
@@ -127,14 +130,8 @@
       X11 >= 1.6.1,
       mtl >= 2.1 && < 2.3,
       parsec == 3.1.*,
-      HTTP >= 4000.2.4,
       stm >= 2.3 && < 2.5
 
-    if flag(with_conduit)
-       -- use http-conduit  instead of simple-http
-       build-depends: http-conduit, http-types
-       cpp-options: -DHTTP_CONDUIT
-
     if flag(with_threaded)
        -- -threaded is a workaround for 100% CPU busy loop
        -- (http://hackage.haskell.org/trac/ghc/ticket/4934).
@@ -161,7 +158,8 @@
 
     if flag(with_iwlib) || flag(all_extensions)
        extra-libraries: iw
-       other-modules: IWlib, Plugins.Monitors.Wireless
+       build-depends: iwlib >= 0.1.0 && < 0.2
+       other-modules: Plugins.Monitors.Wireless
        cpp-options: -DIWLIB
 
     if flag(with_mpd) || flag(all_extensions)
@@ -195,5 +193,16 @@
        other-modules: XPMFile
        cpp-options: -DXPM
 
-    if flag(with_uvmeter)
+    if flag(with_weather) || flag(all_extensions)
+       build-depends: HTTP >= 4000.2.4
+       other-modules: Plugins.Monitors.Weather
+       cpp-options: -DWEATHER
+       if flag(with_conduit)
+          -- use http-conduit  instead of simple-http
+          build-depends: http-conduit, http-types
+          cpp-options: -DHTTP_CONDUIT
+
+    if flag(with_uvmeter) && flag(with_conduit)
+       other-modules: Plugins.Monitors.UVMeter
+       build-depends: http-conduit, http-types
        cpp-options: -DUVMETER
