diff options
| -rw-r--r-- | src/Config.hs | 3 | ||||
| -rw-r--r-- | src/Parsers.hs | 11 | ||||
| -rw-r--r-- | src/Xmobar.hs | 16 | 
3 files changed, 21 insertions, 9 deletions
| diff --git a/src/Config.hs b/src/Config.hs index 712687d..47358b0 100644 --- a/src/Config.hs +++ b/src/Config.hs @@ -57,6 +57,8 @@ data Config =             , borderColor    :: String     -- ^ Border color             , lowerOnStart   :: Bool       -- ^ Lower to the bottom of the                                            --   window stack on initialization +           , persistent     :: Bool       -- ^ Whether automatic hiding should +                                          --   be enabled or disabled             , 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 @@ -96,6 +98,7 @@ defaultConfig =             , border = NoBorder             , borderColor  = "#BFBFBF"             , lowerOnStart = True +           , persistent   = False             , commands = [ Run $ Date "%a %b %_d %Y * %H:%M:%S" "theDate" 10                          , Run StdinReader]             , sepChar  = "%" diff --git a/src/Parsers.hs b/src/Parsers.hs index f5f00a9..c92480e 100644 --- a/src/Parsers.hs +++ b/src/Parsers.hs @@ -131,13 +131,15 @@ parseConfig = runParser parseConf fields "Config" . stripComments                <$?> pFont         <|?> pBgColor                <|?> pFgColor      <|?> pPosition                <|?> pBorder       <|?> pBdColor -              <|?> pLowerOnStart <|?> pCommands -              <|?> pSepChar      <|?> pAlignSep -              <|?> pTemplate +              <|?> pLowerOnStart <|?> pPersistent +              <|?> pCommands     <|?> pSepChar +              <|?> pAlignSep     <|?> pTemplate        fields    = [ "font", "bgColor", "fgColor", "sepChar", "alignSep"                    , "border", "borderColor" ,"template", "position" -                  , "lowerOnStart", "commands"] +                  , "lowerOnStart", "persistent", "commands" +                  ] +        pFont     = strField font     "font"        pBgColor  = strField bgColor  "bgColor"        pFgColor  = strField fgColor  "fgColor" @@ -148,6 +150,7 @@ parseConfig = runParser parseConf fields "Config" . stripComments        pPosition     = field position     "position"     $ tillFieldEnd >>= read' "position"        pLowerOnStart = field lowerOnStart "lowerOnStart" $ tillFieldEnd >>= read' "lowerOnStart" +      pPersistent   = field persistent   "persistent"   $ tillFieldEnd >>= read' "persistent"        pBorder       = field border       "border"       $ tillFieldEnd >>= read' "border"        pCommands     = field commands     "commands"     $ readCommands diff --git a/src/Xmobar.hs b/src/Xmobar.hs index a65a236..1ae55bb 100644 --- a/src/Xmobar.hs +++ b/src/Xmobar.hs @@ -145,11 +145,17 @@ eventLoop tv xc@(XConf d _ w fs cfg) signal = do           Toggle -> toggle      where -        hide   = hideWindow d w >> eventLoop tv xc signal -        reveal = do -            r' <- repositionWin d w fs cfg -            showWindow d w -            eventLoop tv (XConf d r' w fs cfg) signal +        isPersistent = not $ persistent cfg + +        hide   = when isPersistent (hideWindow d w) >> eventLoop tv xc signal + +        reveal = if isPersistent +            then do +                r' <- repositionWin d w fs cfg +                showWindow d w +                eventLoop tv (XConf d r' w fs cfg) signal +            else eventLoop tv xc signal +          toggle = isMapped d w >>= \b -> if b then hide else reveal          reposWindow rcfg = do | 
