summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJochen Keil <jochen.keil@gmail.com>2012-08-10 08:36:03 +0200
committerJochen Keil <jochen.keil@gmail.com>2012-08-10 08:40:43 +0200
commit5074fdf2d6aa85ce17ad98112ec5019eb05a39c4 (patch)
tree2ce5fdf3abcb61db4d70b75e0341c33c4b0c6833
parent6c456e9e1f881fd70e9c1b357edfc5d63f7a3204 (diff)
downloadxmobar-5074fdf2d6aa85ce17ad98112ec5019eb05a39c4.tar.gz
xmobar-5074fdf2d6aa85ce17ad98112ec5019eb05a39c4.tar.bz2
New configuration option "persistent"
When persistent is set to True then xmobar will always be mapped (revealed) and never be hidden. The flag is checked in eventLoop and operation to map/unmap windows is not carried out if persistence is desired.
-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