summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Config.hs3
-rw-r--r--src/Parsers.hs11
-rw-r--r--src/Xmobar.hs16
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