Hello community, here is the log from the commit of package xmobar for openSUSE:Factory checked in at 2017-06-04 01:56:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xmobar (Old) and /work/SRC/openSUSE:Factory/.xmobar.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xmobar" Sun Jun 4 01:56:26 2017 rev:5 rq:494211 version:0.24.4 Changes: -------- --- /work/SRC/openSUSE:Factory/xmobar/xmobar.changes 2016-10-23 12:51:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xmobar.new/xmobar.changes 2017-06-04 01:56:31.124260143 +0200 @@ -1,0 +2,5 @@ +Wed May 3 08:14:00 UTC 2017 - [email protected] + +- Update to version 0.24.4 with cabal2obs. + +------------------------------------------------------------------- Old: ---- xmobar-0.24.3.tar.gz New: ---- xmobar-0.24.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xmobar.spec ++++++ --- /var/tmp/diff_new_pack.ZonAtt/_old 2017-06-04 01:56:31.664183864 +0200 +++ /var/tmp/diff_new_pack.ZonAtt/_new 2017-06-04 01:56:31.672182734 +0200 @@ -1,7 +1,7 @@ # # spec file for package xmobar # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: xmobar -Version: 0.24.3 +Version: 0.24.4 Release: 0 Summary: A Minimalistic Text Based Status Bar License: BSD-3-Clause ++++++ xmobar-0.24.3.tar.gz -> xmobar-0.24.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/news.md new/xmobar-0.24.4/news.md --- old/xmobar-0.24.3/news.md 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/news.md 2017-05-03 00:05:01.000000000 +0200 @@ -1,5 +1,25 @@ % xmobar - Release notes +## Version 0.24.4 (April, 2017) + +_Infrastructure_ + + - Whe have now an active [Travis CI setup]. + +[Travi CI setup]: https://travis-ci.org/jaor/xmobar + +_Bug fixes_ + + - Reduce wakeups rate via rtsopts V0 (with new flag with_rtsopts to + disable it) (see [issue #89]). + - Fix Net monitor for lage uptimes and bytecounts (Tomas Janoušek). + - Fix MultiCpu monitor for large uptimes (Zev Weiss). + - Fix compilation when XMP is disabled (Sergi Trofimovich). + - Better fatal error messages (Michael Bishop). + - More paths to read from in CoreTemp (see [issue #291]). + +[issue #291]: https://github.com/jaor/xmobar/issues/291 + ## Version 0.24.3 (Sep 5, 2016) _Bug fixes_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/readme.md new/xmobar-0.24.4/readme.md --- old/xmobar-0.24.3/readme.md 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/readme.md 2017-05-03 00:05:01.000000000 +0200 @@ -1,5 +1,7 @@ % xmobar - a minimalistic status bar +[](https://travis-ci.org/jaor/xmobar) + # About xmobar is a minimalistic, mostly text based, status bar. It was @@ -10,7 +12,7 @@ features, like dynamic color management, icons, output templates, and extensibility through plugins. -This page documents xmobar 0.24.3 (see [release notes]). +This page documents xmobar 0.24.4 (see [release notes]). [This screenshot] shows xmobar running under [sawfish], with antialiased fonts. And [this one] is my desktop with [xmonad] and two @@ -1550,7 +1552,7 @@ 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, Tomas Janousek, Spencer Janssen, Roman Joost, Jochen +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, @@ -1559,8 +1561,8 @@ 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, Phil Xiaojun Hu, Edward Z. Yang and -Norbert Zeh. +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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Bitmap.hs new/xmobar-0.24.4/src/Bitmap.hs --- old/xmobar-0.24.3/src/Bitmap.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Bitmap.hs 2017-05-03 00:05:01.000000000 +0200 @@ -2,7 +2,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Bitmap --- Copyright : (C) 2013, 2015 Alexander Polakov +-- Copyright : (C) 2013, 2015, 2017 Alexander Polakov -- License : BSD3 -- -- Maintainer : [email protected] @@ -86,10 +86,10 @@ exist <- doesFileExist p if exist then do - res <- runExceptT $ - tryXBM #ifdef XPM - <|> tryXPM + res <- runExceptT (tryXBM <|> tryXPM) +#else + res <- runExceptT tryXBM #endif case res of Right b -> return $ Just b @@ -121,7 +121,7 @@ y' = 1 + y - fromIntegral h `div` 2 setForeground d gc fc' setBackground d gc bc' - case (shapePixmap i) of + case shapePixmap i of Nothing -> return () Just mask -> setClipOrigin d gc x y' >> setClipMask d gc mask case bitmapType i of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Environment.hs new/xmobar-0.24.4/src/Environment.hs --- old/xmobar-0.24.3/src/Environment.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Environment.hs 2017-05-03 00:05:01.000000000 +0200 @@ -11,7 +11,7 @@ -- A function to expand environment variables in strings -- ----------------------------------------------------------------------------- -module Environment where +module Environment(expandEnv) where import Control.Applicative ((<$>)) import Data.Maybe (fromMaybe) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/IWlib.hsc new/xmobar-0.24.4/src/IWlib.hsc --- old/xmobar-0.24.3/src/IWlib.hsc 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/IWlib.hsc 2017-05-03 00:05:01.000000000 +0200 @@ -56,7 +56,7 @@ 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 + 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 @@ -70,6 +70,6 @@ return $ fromIntegral qualv / mxv else return 0 let qv = round (100 * (q :: Double)) - return $ WirelessInfo { wiEssid = essid, wiQuality = min 100 qv } + 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 -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Localize.hsc new/xmobar-0.24.4/src/Localize.hsc --- old/xmobar-0.24.3/src/Localize.hsc 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Localize.hsc 2017-05-03 00:05:01.000000000 +0200 @@ -50,7 +50,7 @@ itemStr <- nl_langinfo item #ifdef UTF8 str <- peekCString itemStr - return $ if (isUTF8Encoded str) then decodeString str else str + return $ if isUTF8Encoded str then decodeString str else str #else peekCString itemStr #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Main.hs new/xmobar-0.24.4/src/Main.hs --- old/xmobar-0.24.3/src/Main.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Main.hs 2017-05-03 00:05:01.000000000 +0200 @@ -37,7 +37,7 @@ import System.Environment import System.FilePath ((</>)) import System.Posix.Files -import Control.Monad (unless, liftM) +import Control.Monad (unless) import Text.Read (readMaybe) import Signal (setupSignalHandler) @@ -96,13 +96,13 @@ xdgConfigDir = do env <- getEnvironment case lookup "XDG_CONFIG_HOME" env of Just val -> return val - Nothing -> liftM (</> ".config") getHomeDirectory + Nothing -> fmap (</> ".config") getHomeDirectory xmobarConfigDir :: IO FilePath -xmobarConfigDir = liftM (</> "xmobar") xdgConfigDir +xmobarConfigDir = fmap (</> "xmobar") xdgConfigDir getXdgConfigFile :: IO FilePath -getXdgConfigFile = liftM (</> "xmobarrc") xmobarConfigDir +getXdgConfigFile = fmap (</> "xmobarrc") xmobarConfigDir -- | Read default configuration file or load the default config readDefaultConfig :: IO (Config,[String]) @@ -231,7 +231,7 @@ "specified with the -" ++ c:" option\n") readStr str = [x | (x,t) <- reads str, ("","") <- lex t] doOpts' opts = doOpts opts oo - readPosition string = + readPosition string = case readMaybe string of Just x -> doOpts' (conf { position = x }) Nothing -> do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/MinXft.hsc new/xmobar-0.24.4/src/MinXft.hsc --- old/xmobar-0.24.3/src/MinXft.hsc 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/MinXft.hsc 2017-05-03 00:05:01.000000000 +0200 @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- | -- Module: MinXft --- Copyright: (c) 2012, 2014, 2015 Jose Antonio Ortega Ruiz +-- Copyright: (c) 2012, 2014, 2015, 2017 Jose Antonio Ortega Ruiz -- (c) Clemens Fruhwirth <[email protected]> 2007 -- License: BSD3-style (see LICENSE) -- @@ -179,7 +179,7 @@ mapM_ (\(f, s, _, xo, yo) -> drawXftString d c f (x+xo) (y+yo) s) chunks -- Split string and determine fonts/offsets for individual parts -getChunks :: Display -> [AXftFont] -> [Char] -> +getChunks :: Display -> [AXftFont] -> String -> IO [(AXftFont, String, XGlyphInfo, Integer, Integer)] getChunks disp fts str = do chunks <- getFonts disp fts str @@ -253,7 +253,7 @@ sizeOf _ = #{size XRenderPictureAttributes} alignment _ = alignment (undefined :: CInt) peek _ = return XRenderPictureAttributes - poke p XRenderPictureAttributes = do + poke p XRenderPictureAttributes = memset p 0 #{size XRenderPictureAttributes} -- | Convenience function, gives us an XRender handle to a traditional diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Parsers.hs new/xmobar-0.24.4/src/Parsers.hs --- old/xmobar-0.24.3/src/Parsers.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Parsers.hs 2017-05-03 00:05:01.000000000 +0200 @@ -25,7 +25,7 @@ import Commands import Actions -import Control.Monad (guard, mzero, liftM) +import Control.Monad (guard, mzero) import qualified Data.Map as Map import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Perm @@ -276,7 +276,7 @@ spaces char lead s <- manyTill anyChar (rowCont <|> unescQuote) - (char '"' >> return s) <|> liftM (s ++) (scan '\\') + (char '"' >> return s) <|> fmap (s ++) (scan '\\') rowCont = try $ char '\\' >> string "\n" unescQuote = lookAhead (noneOf "\\") >> lookAhead (string "\"") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/BufferedPipeReader.hs new/xmobar-0.24.4/src/Plugins/BufferedPipeReader.hs --- old/xmobar-0.24.3/src/Plugins/BufferedPipeReader.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/BufferedPipeReader.hs 2017-05-03 00:05:01.000000000 +0200 @@ -27,6 +27,7 @@ data BufferedPipeReader = BufferedPipeReader String [(Int, Bool, String)] deriving (Read, Show) +{-# NOINLINE signal #-} signal :: MVar SignalType signal = unsafePerformIO newEmptyMVar diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Date.hs new/xmobar-0.24.4/src/Plugins/Date.hs --- old/xmobar-0.24.3/src/Plugins/Date.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Date.hs 2017-05-03 00:05:01.000000000 +0200 @@ -24,7 +24,6 @@ #if ! MIN_VERSION_time(1,5,0) import System.Locale #endif -import Control.Monad (liftM) import Data.Time data Date = Date String String Int @@ -36,4 +35,4 @@ rate (Date _ _ r) = r date :: String -> IO String -date format = liftM (formatTime defaultTimeLocale format) getZonedTime +date format = fmap (formatTime defaultTimeLocale format) getZonedTime diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/EWMH.hs new/xmobar-0.24.4/src/Plugins/EWMH.hs --- old/xmobar-0.24.3/src/Plugins/EWMH.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/EWMH.hs 2017-05-03 00:05:01.000000000 +0200 @@ -150,13 +150,13 @@ windowProperty32 :: String -> Window -> M (Maybe [CLong]) windowProperty32 s w = do - (C {display}) <- ask + C {display} <- ask a <- getAtom s liftIO $ getWindowProperty32 display a w windowProperty8 :: String -> Window -> M (Maybe [CChar]) windowProperty8 s w = do - (C {display}) <- ask + C {display} <- ask a <- getAtom s liftIO $ getWindowProperty8 display a w @@ -190,21 +190,21 @@ updateCurrentDesktop, updateDesktopNames, updateActiveWindow :: Updater updateCurrentDesktop _ = do - (C {root}) <- ask + C {root} <- ask mwp <- windowProperty32 "_NET_CURRENT_DESKTOP" root case mwp of Just [x] -> modify (\s -> s { currentDesktop = x }) _ -> return () updateActiveWindow _ = do - (C {root}) <- ask + C {root} <- ask mwp <- windowProperty32 "_NET_ACTIVE_WINDOW" root case mwp of Just [x] -> modify (\s -> s { activeWindow = fromIntegral x }) _ -> return () updateDesktopNames _ = do - (C {root}) <- ask + C {root} <- ask mwp <- windowProperty8 "_NET_DESKTOP_NAMES" root case mwp of Just xs -> modify (\s -> s { desktopNames = parse xs }) @@ -219,7 +219,7 @@ parse = split . decodeCChar updateClientList _ = do - (C {root}) <- ask + C {root} <- ask mwp <- windowProperty32 "_NET_CLIENT_LIST" root case mwp of Just xs -> do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Kbd.hsc new/xmobar-0.24.4/src/Plugins/Kbd.hsc --- old/xmobar-0.24.3/src/Plugins/Kbd.hsc 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Kbd.hsc 2017-05-03 00:05:01.000000000 +0200 @@ -380,7 +380,7 @@ dpy <- openDisplay "" -- initial set of layout - cb =<< (getKbdLay dpy opts) + cb =<< getKbdLay dpy opts -- enable listing for -- group changes @@ -391,7 +391,7 @@ allocaXEvent $ \e -> forever $ do nextEvent' dpy e _ <- getEvent e - cb =<< (getKbdLay dpy opts) + cb =<< getKbdLay dpy opts closeDisplay dpy return () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/Common.hs new/xmobar-0.24.4/src/Plugins/Monitors/Common.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/Common.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/Common.hs 2017-05-03 00:05:01.000000000 +0200 @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Plugins.Monitors.Common --- Copyright : (c) 2010, 2011, 2013, 2016 Jose Antonio Ortega Ruiz +-- Copyright : (c) 2010, 2011, 2013, 2016, 2017 Jose Antonio Ortega Ruiz -- (c) 2007-2010 Andrea Rossato -- License : BSD-style (see LICENSE) -- @@ -296,7 +296,7 @@ ; return (s, com, ss) } where - nonPlaceHolder = liftM concat . many $ + nonPlaceHolder = fmap concat . many $ many1 (noneOf "<") <|> colorSpec <|> iconSpec -- | Recognizes color specification and returns it unchanged @@ -365,7 +365,7 @@ parseIconPattern :: String -> IconPattern parseIconPattern path = let spl = splitOnPercent path - in \i -> concat $ intersperse (show i) spl + in \i -> intercalate (show i) spl where splitOnPercent [] = [[]] splitOnPercent ('%':'%':xs) = [] : splitOnPercent xs splitOnPercent (x:xs) = @@ -466,7 +466,7 @@ zipWithM (showWithColors . const) fstrs (map (*100) fs) showPercentWithColors :: Float -> Monitor String -showPercentWithColors f = liftM head $ showPercentsWithColors [f] +showPercentWithColors f = fmap head $ showPercentsWithColors [f] showPercentBar :: Float -> Float -> Monitor String showPercentBar v x = do @@ -495,37 +495,22 @@ | otherwise = chr t where t = 9600 + (round val `div` 12) -showLogBar :: Float -> Float -> Monitor String -showLogBar f v = - let intConfig c = fromIntegral `fmap` getConfigValue c - in do - h <- intConfig high - l <- intConfig low - bw <- intConfig barWidth - let [ll, hh] = sort [l, h] - choose x | x == 0.0 = 0 - | x <= ll = 1 / bw - | otherwise = f + logBase 2 (x / hh) / bw - showPercentBar v $ choose v - -showLogVBar :: Float -> Float -> Monitor String -showLogVBar f v = do +logScaling :: Float -> Float -> Monitor Float +logScaling f v = do h <- fromIntegral `fmap` getConfigValue high l <- fromIntegral `fmap` getConfigValue low bw <- fromIntegral `fmap` getConfigValue barWidth let [ll, hh] = sort [l, h] - choose x | x == 0.0 = 0 + scaled x | x == 0.0 = 0 | x <= ll = 1 / bw | otherwise = f + logBase 2 (x / hh) / bw - showVerticalBar v $ choose v + return $ scaled v + +showLogBar :: Float -> Float -> Monitor String +showLogBar f v = logScaling f v >>= showPercentBar v + +showLogVBar :: Float -> Float -> Monitor String +showLogVBar f v = logScaling f v >>= showPercentBar v showLogIconPattern :: Maybe IconPattern -> Float -> Float -> Monitor String -showLogIconPattern str f v = do - h <- fromIntegral `fmap` getConfigValue high - l <- fromIntegral `fmap` getConfigValue low - bw <- fromIntegral `fmap` getConfigValue barWidth - let [ll, hh] = sort [l, h] - choose x | x == 0.0 = 0 - | x <= ll = 1 / bw - | otherwise = f + logBase 2 (x / hh) / bw - showIconPattern str $ choose v +showLogIconPattern str f v = logScaling f v >>= showIconPattern str diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/CoreCommon.hs new/xmobar-0.24.4/src/Plugins/Monitors/CoreCommon.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/CoreCommon.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/CoreCommon.hs 2017-05-03 00:05:01.000000000 +0200 @@ -1,4 +1,4 @@ -{-# LANGUAGE PatternGuards #-} +{-# LANGUAGE CPP, PatternGuards #-} ----------------------------------------------------------------------------- -- | @@ -16,8 +16,10 @@ module Plugins.Monitors.CoreCommon where +#if __GLASGOW_HASKELL__ < 800 import Control.Applicative -import Control.Monad +#endif + import Data.Char hiding (Space) import Data.Function import Data.List @@ -29,7 +31,7 @@ => String -> [[String]] -> Maybe (String, String -> Int) -> (Double -> a) -> (a -> String) -> Monitor String checkedDataRetrieval msg paths lbl trans fmt = - liftM (fromMaybe msg . listToMaybe . catMaybes) $ + fmap (fromMaybe msg . listToMaybe . catMaybes) $ mapM (\p -> retrieveData p lbl trans fmt) paths retrieveData :: (Ord a, Num a) @@ -127,7 +129,7 @@ -- | Function to read the contents of the given file(s) readFiles :: (String, Either Int (String, String -> Int)) -> Monitor (Int, String) -readFiles (fval, flbl) = (,) <$> either return (\(f, ex) -> liftM ex +readFiles (fval, flbl) = (,) <$> either return (\(f, ex) -> fmap ex $ io $ readFile f) flbl <*> io (readFile fval) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/CoreTemp.hs new/xmobar-0.24.4/src/Plugins/Monitors/CoreTemp.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/CoreTemp.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/CoreTemp.hs 2017-05-03 00:05:01.000000000 +0200 @@ -39,7 +39,8 @@ failureMessage <- getConfigValue naString let path = ["/sys/bus/platform/devices/coretemp.", "/temp", "_input"] path' = ["/sys/bus/platform/devices/coretemp.", "/hwmon/hwmon", "/temp", "_input"] + path'' = ["/sys/class/hwmon/hwmon", "/device/hwmon/hwmon", "/temp", "_input"] lbl = Just ("_label", read . dropWhile (not . isDigit)) divisor = 1e3 :: Double show' = showDigits (max 0 dn) - checkedDataRetrieval failureMessage [path, path'] lbl (/divisor) show' + checkedDataRetrieval failureMessage [path, path', path''] lbl (/divisor) show' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/Cpu.hs new/xmobar-0.24.4/src/Plugins/Monitors/Cpu.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/Cpu.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/Cpu.hs 2017-05-03 00:05:01.000000000 +0200 @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Plugins.Monitors.Cpu --- Copyright : (c) 2011 Jose Antonio Ortega Ruiz +-- Copyright : (c) 2011, 2017 Jose Antonio Ortega Ruiz -- (c) 2007-2010 Andrea Rossato -- License : BSD-style (see LICENSE) -- @@ -20,7 +20,7 @@ import Data.IORef (IORef, newIORef, readIORef, writeIORef) import System.Console.GetOpt -data CpuOpts = CpuOpts +newtype CpuOpts = CpuOpts { loadIconPattern :: Maybe IconPattern } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/Mpris.hs new/xmobar-0.24.4/src/Plugins/Monitors/Mpris.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/Mpris.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/Mpris.hs 2017-05-03 00:05:01.000000000 +0200 @@ -78,6 +78,7 @@ , "title", "tracknumber" , "composer", "genre" ] +{-# NOINLINE dbusClient #-} dbusClient :: DC.Client dbusClient = unsafePerformIO DC.connectSession @@ -106,7 +107,7 @@ TypeVariant -> unpack $ fromVar v TypeStructure _ -> let x = structureItems (fromVar v) in - if x == [] then [] else unpack (head x) + if null x then [] else unpack (head x) _ -> [] getMetadata :: (MprisVersion a) => a -> DC.Client -> String -> IO [(String, Variant)] @@ -141,5 +142,5 @@ _ -> (show::Int64 -> String) num TypeArray TypeString -> let x = arrayItems (fromVar v) in - if x == [] then "" else fromVar (head x) + if null x then "" else fromVar (head x) _ -> "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/MultiCpu.hs new/xmobar-0.24.4/src/Plugins/Monitors/MultiCpu.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/MultiCpu.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/MultiCpu.hs 2017-05-03 00:05:01.000000000 +0200 @@ -58,15 +58,15 @@ [ k ++ n | n <- "" : map show [0 :: Int ..] , k <- variables] -type CpuDataRef = IORef [[Float]] +type CpuDataRef = IORef [[Int]] -cpuData :: IO [[Float]] +cpuData :: IO [[Int]] cpuData = parse `fmap` B.readFile "/proc/stat" where parse = map parseList . cpuLists cpuLists = takeWhile isCpu . map B.words . B.lines isCpu (w:_) = "cpu" `isPrefixOf` B.unpack w isCpu _ = False - parseList = map (parseFloat . B.unpack) . tail + parseList = map (parseInt . B.unpack) . tail parseCpuData :: CpuDataRef -> IO [[Float]] parseCpuData cref = @@ -76,9 +76,9 @@ let p0 = zipWith percent bs as return p0 -percent :: [Float] -> [Float] -> [Float] +percent :: [Int] -> [Int] -> [Float] percent b a = if tot > 0 then map (/ tot) $ take 4 dif else [0, 0, 0, 0] - where dif = zipWith (-) b a + where dif = map fromIntegral $ zipWith (-) b a tot = sum dif formatMultiCpus :: MultiCpuOpts -> [[Float]] -> Monitor [String] @@ -96,10 +96,10 @@ return (b:h:d:ps) where tryString | i == 0 = loadIconPattern opts - | i <= length (loadIconPatterns opts) = Just $ (loadIconPatterns opts) !! (i - 1) + | i <= length (loadIconPatterns opts) = Just $ loadIconPatterns opts !! (i - 1) | otherwise = Nothing -splitEvery :: (Eq a) => Int -> [a] -> [[a]] +splitEvery :: Int -> [a] -> [[a]] splitEvery n = unfoldr (\x -> if null x then Nothing else Just $ splitAt n x) groupData :: [String] -> [[String]] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/Net.hs new/xmobar-0.24.4/src/Plugins/Monitors/Net.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/Net.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/Net.hs 2017-05-03 00:05:01.000000000 +0200 @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Plugins.Monitors.Net --- Copyright : (c) 2011, 2012, 2013, 2014 Jose Antonio Ortega Ruiz +-- Copyright : (c) 2011, 2012, 2013, 2014, 2017 Jose Antonio Ortega Ruiz -- (c) 2007-2010 Andrea Rossato -- License : BSD-style (see LICENSE) -- @@ -20,9 +20,10 @@ import Plugins.Monitors.Common +import Data.Word (Word64) import Data.IORef (IORef, newIORef, readIORef, writeIORef) import Data.Time.Clock (UTCTime, getCurrentTime, diffUTCTime) -import Control.Monad (forM, filterM, liftM) +import Control.Monad (forM, filterM) import System.Directory (getDirectoryContents, doesFileExist) import System.FilePath ((</>)) import System.Console.GetOpt @@ -63,22 +64,26 @@ show MBs = "MB/s" show GBs = "GB/s" -data NetDev = NA - | NI String - | ND String Float Float deriving (Eq,Show,Read) +data NetDev num + = NA + | NI String + | ND String num num deriving (Eq,Show,Read) -type NetDevRef = IORef (NetDev, UTCTime) +type NetDevRawTotal = NetDev Word64 +type NetDevRate = NetDev Float + +type NetDevRef = IORef (NetDevRawTotal, UTCTime) -- The more information available, the better. -- Note that names don't matter. Therefore, if only the names differ, -- a compare evaluates to EQ while (==) evaluates to False. -instance Ord NetDev where +instance Ord num => Ord (NetDev num) where compare NA NA = EQ compare NA _ = LT compare _ NA = GT compare (NI _) (NI _) = EQ - compare (NI _) (ND {}) = LT - compare (ND {}) (NI _) = GT + compare (NI _) ND {} = LT + compare ND {} (NI _) = GT compare (ND _ x1 y1) (ND _ x2 y2) = if downcmp /= EQ then downcmp @@ -104,7 +109,7 @@ operstate <- B.readFile (operstateDir d) return $ (B.unpack . head . B.lines) operstate `elem` ["up", "unknown"] -readNetDev :: [String] -> IO NetDev +readNetDev :: [String] -> IO NetDevRawTotal readNetDev (d:x:y:_) = do up <- isUp d return (if up then ND d (r x) (r y) else NI d) @@ -113,7 +118,7 @@ readNetDev _ = return NA -netParser :: B.ByteString -> IO [NetDev] +netParser :: B.ByteString -> IO [NetDevRawTotal] netParser = mapM (readNetDev . splitDevLine) . readDevLines where readDevLines = drop 2 . B.lines splitDevLine = selectCols . wordsBy (`elem` " :") . B.unpack @@ -122,7 +127,7 @@ [] -> [] s' -> w : wordsBy f s'' where (w, s'') = break f s' -findNetDev :: String -> IO NetDev +findNetDev :: String -> IO NetDevRawTotal findNetDev dev = do nds <- B.readFile "/proc/net/dev" >>= netParser case filter isDev nds of @@ -145,7 +150,7 @@ x <- showWithColors (str s) d return (x, b, vb, ipat) -printNet :: NetOpts -> NetDev -> Monitor String +printNet :: NetOpts -> NetDevRate -> Monitor String printNet opts nd = case nd of ND d r t -> do @@ -155,7 +160,7 @@ NI _ -> return "" NA -> getConfigValue naString -parseNet :: NetDevRef -> String -> IO NetDev +parseNet :: NetDevRef -> String -> IO NetDevRate parseNet nref nd = do (n0, t0) <- readIORef nref n1 <- findNetDev nd @@ -163,7 +168,7 @@ writeIORef nref (n1, t1) let scx = realToFrac (diffUTCTime t1 t0) scx' = if scx > 0 then scx else 1 - rate da db = takeDigits 2 $ (db - da) / scx' + rate da db = takeDigits 2 $ fromIntegral (db - da) / scx' diffRate (ND d ra ta) (ND _ rb tb) = ND d (rate ra rb) (rate ta tb) diffRate (NI d) _ = NI d diffRate _ (NI d) = NI d @@ -176,7 +181,7 @@ opts <- io $ parseOpts argv printNet opts dev -parseNets :: [(NetDevRef, String)] -> IO [NetDev] +parseNets :: [(NetDevRef, String)] -> IO [NetDevRate] parseNets = mapM $ uncurry parseNet runNets :: [(NetDevRef, String)] -> [String] -> Monitor String @@ -184,7 +189,7 @@ dev <- io $ parseActive refs opts <- io $ parseOpts argv printNet opts dev - where parseActive refs' = liftM selectActive (parseNets refs') + where parseActive refs' = fmap selectActive (parseNets refs') selectActive = maximum startNet :: String -> [String] -> Int -> (String -> IO ()) -> IO () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/Thermal.hs new/xmobar-0.24.4/src/Plugins/Monitors/Thermal.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/Thermal.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/Thermal.hs 2017-05-03 00:05:01.000000000 +0200 @@ -14,7 +14,6 @@ module Plugins.Monitors.Thermal where -import Control.Monad (liftM) import qualified Data.ByteString.Lazy.Char8 as B import Plugins.Monitors.Common import System.Posix.Files (fileExist) @@ -34,8 +33,7 @@ file = "/proc/acpi/thermal_zone/" ++ zone ++ "/temperature" exists <- io $ fileExist file if exists - then do number <- io $ liftM ((read :: String -> Int) . stringParser (1, 0)) (B.readFile file) + then do number <- io $ fmap ((read :: String -> Int) . stringParser (1, 0)) (B.readFile file) thermal <- showWithColors show number parseTemplate [ thermal ] else return $ "Thermal (" ++ zone ++ "): N/A" - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/UVMeter.hs new/xmobar-0.24.4/src/Plugins/Monitors/UVMeter.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/UVMeter.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/UVMeter.hs 2017-05-03 00:05:01.000000000 +0200 @@ -31,7 +31,7 @@ ["station" -- available replacements ] -data UvInfo = UV { index :: String } +newtype UvInfo = UV { index :: String } deriving (Show) uvURL :: String @@ -86,7 +86,7 @@ type AttrName = String type AttrValue = String -data Attribute = Attribute (AttrName, AttrValue) +newtype Attribute = Attribute (AttrName, AttrValue) deriving (Show) data XML = Element String [Attribute] [XML] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors/Wireless.hs new/xmobar-0.24.4/src/Plugins/Monitors/Wireless.hs --- old/xmobar-0.24.3/src/Plugins/Monitors/Wireless.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors/Wireless.hs 2017-05-03 00:05:01.000000000 +0200 @@ -19,7 +19,7 @@ import Plugins.Monitors.Common import IWlib -data WirelessOpts = WirelessOpts +newtype WirelessOpts = WirelessOpts { qualityIconPattern :: Maybe IconPattern } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Plugins/Monitors.hs new/xmobar-0.24.4/src/Plugins/Monitors.hs --- old/xmobar-0.24.3/src/Plugins/Monitors.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Plugins/Monitors.hs 2017-05-03 00:05:01.000000000 +0200 @@ -3,7 +3,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Xmobar.Plugins.Monitors --- Copyright : (c) 2010, 2011, 2012, 2013 Jose Antonio Ortega Ruiz +-- Copyright : (c) 2010, 2011, 2012, 2013, 2017 Jose Antonio Ortega Ruiz -- (c) 2007-10 Andrea Rossato -- License : BSD-style (see LICENSE) -- @@ -114,15 +114,15 @@ alias (Cpu _ _) = "cpu" alias (MultiCpu _ _) = "multicpu" alias (Battery _ _) = "battery" - alias (BatteryP {})= "battery" + alias BatteryP {} = "battery" alias (BatteryN _ _ _ a)= a alias (Brightness _ _) = "bright" alias (CpuFreq _ _) = "cpufreq" alias (TopProc _ _) = "top" alias (TopMem _ _) = "topmem" alias (CoreTemp _ _) = "coretemp" - alias (DiskU {}) = "disku" - alias (DiskIO {}) = "diskio" + alias DiskU {} = "disku" + alias DiskIO {} = "diskio" alias (Uptime _ _) = "uptime" alias (CatInt n _ _ _) = "cat" ++ show n #ifdef UVMETER diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Runnable.hs new/xmobar-0.24.4/src/Runnable.hs --- old/xmobar-0.24.3/src/Runnable.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Runnable.hs 2017-05-03 00:05:01.000000000 +0200 @@ -46,7 +46,7 @@ instance ReadAsAnyOf () ex where readAsAnyOf ~() = mzero -instance (Show t, Read t, Exec t, ReadAsAnyOf ts Runnable) => ReadAsAnyOf (t,ts) Runnable where +instance (Read t, Exec t, ReadAsAnyOf ts Runnable) => ReadAsAnyOf (t,ts) Runnable where readAsAnyOf ~(t,ts) = r t `mplus` readAsAnyOf ts where r ty = do { m <- readPrec; return (Run (m `asTypeOf` ty)) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Window.hs new/xmobar-0.24.4/src/Window.hs --- old/xmobar-0.24.3/src/Window.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Window.hs 2017-05-03 00:05:01.000000000 +0200 @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Window --- Copyright : (c) 2011-15 Jose A. Ortega Ruiz +-- Copyright : (c) 2011-17 Jose A. Ortega Ruiz -- : (c) 2012 Jochen Keil -- License : BSD-style (see LICENSE) -- @@ -178,7 +178,7 @@ FullBM m -> let mp = fi m pad = 2 * fi mp + fi lw in sf >> sla >> - drawRectangle d p gc mp mp (wi - pad + 1) (ht - pad) + drawRectangle d p gc mp mp (wi - pad) (ht - pad) where sf = setForeground d gc c sla = setLineAttributes d gc (fi lw) lineSolid capNotLast joinMiter boff = borderOffset b lw @@ -197,7 +197,7 @@ isMapped :: Display -> Window -> IO Bool isMapped d w = ism <$> getWindowAttributes d w - where ism (WindowAttributes { wa_map_state = wms }) = wms /= waIsUnmapped + where ism WindowAttributes { wa_map_state = wms } = wms /= waIsUnmapped borderOffset :: (Integral a) => Border -> Int -> a borderOffset b lw = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/XUtil.hsc new/xmobar-0.24.4/src/XUtil.hsc --- old/xmobar-0.24.3/src/XUtil.hsc 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/XUtil.hsc 2017-05-03 00:05:01.000000000 +0200 @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : XUtil --- Copyright : (C) 2011, 2012, 2013, 2014, 2015 Jose Antonio Ortega Ruiz +-- Copyright : (C) 2011, 2012, 2013, 2014, 2015, 2017 Jose Antonio Ortega Ruiz -- (C) 2007 Andrea Rossato -- License : BSD3 -- @@ -11,8 +11,6 @@ -- ----------------------------------------------------------------------------- -{-# LANGUAGE ForeignFunctionInterface, EmptyDataDecls #-} - module XUtil ( XFont , initFont @@ -130,8 +128,7 @@ initXftFont d s = do setupLocale let fontNames = wordsBy (== ',') (drop 4 s) - fonts <- mapM openFont fontNames - return fonts + mapM openFont fontNames where openFont fontName = do f <- openAXftFont d (defaultScreenOfDisplay d) fontName @@ -160,7 +157,7 @@ textExtents (Utf8 fs) s = do let (_,rl) = wcTextExtents fs s ascent = fi $ - (rect_y rl) - descent = fi $ rect_height rl + (fi $ rect_y rl) + descent = fi $ rect_height rl + fi (rect_y rl) return (ascent, descent) #ifdef XFT textExtents (Xft xftfonts) _ = do @@ -185,8 +182,8 @@ io $ wcDrawImageString d p fs gc x y s #ifdef XFT -printString dpy drw fs@(Xft fonts) _ fc bc x y s al = do - withDrawingColors dpy drw fc bc $ \draw -> \fc' -> \bc' -> do +printString dpy drw fs@(Xft fonts) _ fc bc x y s al = + withDrawingColors dpy drw fc bc $ \draw fc' bc' -> do when (al == 255) $ do (a,d) <- textExtents fs s gi <- xftTxtExtents' dpy fonts s diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/src/Xmobar.hs new/xmobar-0.24.4/src/Xmobar.hs --- old/xmobar-0.24.3/src/Xmobar.hs 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/src/Xmobar.hs 2017-05-03 00:05:01.000000000 +0200 @@ -2,7 +2,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Xmobar --- Copyright : (c) 2011, 2012, 2013, 2014, 2015 Jose Antonio Ortega Ruiz +-- Copyright : (c) 2011, 2012, 2013, 2014, 2015, 2017 Jose Antonio Ortega Ruiz -- (c) 2007 Andrea Rossato -- License : BSD-style (see LICENSE) -- @@ -106,8 +106,8 @@ #endif eventLoop tv xcfg [] sig where - handler thing (SomeException _) = - void $ putStrLn ("Thread " ++ thing ++ " failed") + handler thing (SomeException e) = + void $ putStrLn ("Thread " ++ thing ++ " failed: " ++ show e) -- Reacts on events from X eventer signal = allocaXEvent $ \e -> do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xmobar-0.24.3/xmobar.cabal new/xmobar-0.24.4/xmobar.cabal --- old/xmobar-0.24.3/xmobar.cabal 2016-09-05 17:49:18.000000000 +0200 +++ new/xmobar-0.24.4/xmobar.cabal 2017-05-03 00:05:01.000000000 +0200 @@ -1,5 +1,5 @@ name: xmobar -version: 0.24.3 +version: 0.24.4 homepage: http://xmobar.org synopsis: A Minimalistic Text Based Status Bar description: Xmobar is a minimalistic text based status bar. @@ -74,6 +74,10 @@ description: Use threaded runtime. default: False +flag with_rtsopts + description: Use -with-rtsopts=-V0 to reduce wakeups + default: True + flag with_uvmeter description: UVMeter only useful to australians. default: False @@ -87,7 +91,7 @@ main-is: Main.hs other-modules: Xmobar, Actions, Bitmap, Config, Parsers, Commands, Localize, - XUtil, XPMFile, StatFS, Runnable, ColorCache, Window, Signal, + XUtil, StatFS, Runnable, ColorCache, Window, Signal, Environment, Plugins, Plugins.BufferedPipeReader, Plugins.CommandReader, Plugins.Date, Plugins.EWMH, @@ -138,8 +142,8 @@ ghc-options: -threaded cpp-options: -DTHREADED_RUNTIME - if impl (ghc < 7) - cpp-options: -DGHC6 + if flag(with_rtsopts) + ghc-options: -with-rtsopts=-V0 if flag(with_xft) || flag(all_extensions) build-depends: utf8-string >= 0.3 && < 1.1, X11-xft >= 0.2 && < 0.4 @@ -161,7 +165,7 @@ cpp-options: -DIWLIB if flag(with_mpd) || flag(all_extensions) - build-depends: libmpd == 0.9.* + build-depends: libmpd >= 0.9.0.6 other-modules: Plugins.Monitors.MPD cpp-options: -DLIBMPD
