diff options
| -rw-r--r-- | src/Actions.hs | 7 | ||||
| -rw-r--r-- | src/Plugins/StdinReader.hs | 19 | ||||
| -rw-r--r-- | src/Plugins/XMonadLog.hs | 8 | ||||
| -rw-r--r-- | xmobar.cabal | 1 | 
4 files changed, 22 insertions, 13 deletions
| diff --git a/src/Actions.hs b/src/Actions.hs index cba027b..f3dc55a 100644 --- a/src/Actions.hs +++ b/src/Actions.hs @@ -10,13 +10,18 @@  --  ----------------------------------------------------------------------------- -module Actions where +module Actions (Action(..), runAction, stripActions) where  import System.Process (system)  import Control.Monad (void) +import Text.Regex (subRegex, mkRegex)  data Action = Spawn String                  deriving (Eq)  runAction :: Action -> IO ()  runAction (Spawn s) = void $ system (s ++ "&") + +stripActions :: String -> String +stripActions s = subRegex actionRegex s "[action=\1]\2[action]" +  where actionRegex = mkRegex "<action=([^>])*>(.+?)</action>" diff --git a/src/Plugins/StdinReader.hs b/src/Plugins/StdinReader.hs index fddd0bc..f242f93 100644 --- a/src/Plugins/StdinReader.hs +++ b/src/Plugins/StdinReader.hs @@ -20,15 +20,16 @@ import System.Exit  import System.IO  import Control.Exception (SomeException(..), handle)  import Plugins +import Actions (stripActions) -data StdinReader = StdinReader -    deriving (Read, Show) +data StdinReader = StdinReader deriving (Read, Show)  instance Exec StdinReader where -    start StdinReader cb = do -        cb =<< handle (\(SomeException e) -> do hPrint stderr e; return "") -                      (hGetLineSafe stdin) -        eof <- hIsEOF stdin -        if eof -            then exitImmediately ExitSuccess -            else start StdinReader cb +  start StdinReader cb = do +    s <- handle (\(SomeException e) -> do hPrint stderr e; return "") +                (hGetLineSafe stdin) +    cb (stripActions s) +    eof <- hIsEOF stdin +    if eof +      then exitImmediately ExitSuccess +      else start StdinReader cb diff --git a/src/Plugins/XMonadLog.hs b/src/Plugins/XMonadLog.hs index 1403800..8f63dc9 100644 --- a/src/Plugins/XMonadLog.hs +++ b/src/Plugins/XMonadLog.hs @@ -28,9 +28,11 @@ import Codec.Binary.UTF8.String as UTF8  #endif  import Foreign.C (CChar)  import XUtil (nextEvent') +import Actions (stripActions) - -data XMonadLog = XMonadLog | XPropertyLog String | NamedXPropertyLog String String +data XMonadLog = XMonadLog +               | XPropertyLog String +               | NamedXPropertyLog String String      deriving (Read, Show)  instance Exec XMonadLog where @@ -51,7 +53,7 @@ instance Exec XMonadLog where          let update = do                          mwp <- getWindowProperty8 d xlog root -                        maybe (return ()) (cb . decodeCChar) mwp +                        maybe (return ()) (cb . stripActions. decodeCChar) mwp          update diff --git a/xmobar.cabal b/xmobar.cabal index bc0028a..b88301f 100644 --- a/xmobar.cabal +++ b/xmobar.cabal @@ -97,6 +97,7 @@ executable xmobar      build-depends:        base == 4.*,        containers, +      regex-compat,        process,        old-locale,        bytestring, | 
