summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--news.md10
-rw-r--r--readme.md8
-rw-r--r--samples/xmobar.config1
-rw-r--r--src/Config.hs6
-rw-r--r--src/Main.hs5
-rw-r--r--src/Parsers.hs7
-rw-r--r--src/Window.hs20
-rw-r--r--src/Xmobar.hs3
-rw-r--r--xmobar.cabal2
9 files changed, 44 insertions, 18 deletions
diff --git a/news.md b/news.md
index b191951..8d0b933 100644
--- a/news.md
+++ b/news.md
@@ -1,5 +1,15 @@
% xmobar - Release notes
+## Version 0.20.1 (March 13, 2014)
+
+_New features_
+
+ - Back to picking by default the first available screen, with a new
+ configuration option, `pickBroadest`, for choosing the broadest
+ (see [issue #158]).
+
+[issue #158]: https://github.com/jaor/xmobar/issues/76
+
## Version 0.20 (March 10, 2014)
_New features_
diff --git a/readme.md b/readme.md
index 6df15a4..84c3946 100644
--- a/readme.md
+++ b/readme.md
@@ -11,7 +11,7 @@ xmobar was inspired by the [Ion3] status bar, and supports similar
features, like dynamic color management, icons, output templates, and
extensibility through plugins.
-This page documents xmobar 0.20 (see [release notes]).
+This page documents xmobar 0.21 (see [release notes]).
[This screenshot] shows xmobar running under [sawfish], with
antialiased fonts. And [this one] is my desktop with [xmonad] and two
@@ -267,6 +267,12 @@ Other configuration options:
to set this option to `False` so that it behaves as a docked
application. Defaults to `True`.
+`pickBroadest`
+: When multiple displays are available, xmobar will choose by default
+ the first one to place itself. With this flag set to `True`
+ (the default is `False`) it will choose the broadest one
+ instead.
+
`persistent`
: When True the window status is fixed i.e. hiding or revealing is not
possible. This option can be toggled at runtime. Defaults to False.
diff --git a/samples/xmobar.config b/samples/xmobar.config
index 8508741..9c359e3 100644
--- a/samples/xmobar.config
+++ b/samples/xmobar.config
@@ -5,6 +5,7 @@ Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
, fgColor = "grey"
, position = Top
, lowerOnStart = True
+ , pickBroadest = False
, persistent = False
, hideOnStart = False
, commands = [ Run Weather "EGPF" ["-t","<station>: <tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
diff --git a/src/Config.hs b/src/Config.hs
index eaf044a..ed3e51a 100644
--- a/src/Config.hs
+++ b/src/Config.hs
@@ -58,6 +58,9 @@ data Config =
, allDesktops :: Bool -- ^ Tell the WM to map to all desktops
, overrideRedirect :: Bool -- ^ Needed for dock behaviour in some
-- non-tiling WMs
+ , pickBroadest :: Bool -- ^ Use the broadest display
+ -- instead of the first one by
+ -- default
, lowerOnStart :: Bool -- ^ lower to the bottom of the
-- window stack on initialization
, persistent :: Bool -- ^ Whether automatic hiding should
@@ -70,7 +73,7 @@ data Config =
-- commands in the output template
-- (default '%')
, alignSep :: String -- ^ Separators for left, center and
- -- right text alignment
+ -- right text alignment
, template :: String -- ^ The output template
} deriving (Read)
@@ -111,6 +114,7 @@ defaultConfig =
, persistent = False
, allDesktops = True
, overrideRedirect = True
+ , pickBroadest = False
, commands = [ Run $ Date "%a %b %_d %Y * %H:%M:%S" "theDate" 10
, Run StdinReader]
, sepChar = "%"
diff --git a/src/Main.hs b/src/Main.hs
index a3c60c3..92573b9 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -175,7 +175,7 @@ usage = usageInfo header options ++ footer
info :: String
info = "xmobar " ++ showVersion version
++ "\n (C) 2007 - 2010 Andrea Rossato "
- ++ "\n (C) 2010 - 2013 Jose A Ortega Ruiz\n "
+ ++ "\n (C) 2010 - 2014 Jose A Ortega Ruiz\n "
++ mail ++ "\n" ++ license
mail :: String
@@ -188,7 +188,7 @@ license = "\nThis program is distributed in the hope that it will be useful," ++
"\nSee the License for more details."
doOpts :: Config -> [Opts] -> IO Config
-doOpts conf [] =
+doOpts conf [] =
return (conf {lowerOnStart = lowerOnStart conf && overrideRedirect conf})
doOpts conf (o:oo) =
case o of
@@ -217,4 +217,3 @@ doOpts conf (o:oo) =
"specified with the -" ++ c:" option\n")
readStr str = [x | (x,t) <- reads str, ("","") <- lex t]
doOpts' opts = doOpts opts oo
-
diff --git a/src/Parsers.hs b/src/Parsers.hs
index a1d60d8..f25fd4d 100644
--- a/src/Parsers.hs
+++ b/src/Parsers.hs
@@ -175,12 +175,14 @@ parseConfig = runParser parseConf fields "Config" . stripComments
perms = permute $ Config
<$?> pFont <|?> pBgColor <|?> pFgColor <|?> pPosition
<|?> pBorder <|?> pBdColor <|?> pHideOnStart <|?> pAllDesktops
- <|?> pOverrideRedirect <|?> pLowerOnStart <|?> pPersistent
+ <|?> pOverrideRedirect <|?> pPickBroadest
+ <|?> pLowerOnStart <|?> pPersistent
<|?> pCommands <|?> pSepChar <|?> pAlignSep <|?> pTemplate
+
fields = [ "font", "bgColor", "fgColor", "sepChar", "alignSep"
, "border", "borderColor" ,"template", "position"
- , "allDesktops", "overrideRedirect"
+ , "allDesktops", "overrideRedirect", "pickBroadest"
, "hideOnStart", "lowerOnStart", "persistent", "commands"
]
@@ -199,6 +201,7 @@ parseConfig = runParser parseConf fields "Config" . stripComments
pBorder = readField border "border"
pAllDesktops = readField allDesktops "allDesktops"
pOverrideRedirect = readField overrideRedirect "overrideRedirect"
+ pPickBroadest = readField pickBroadest "pickBroadest"
pCommands = field commands "commands" readCommands
diff --git a/src/Window.hs b/src/Window.hs
index 3fdb923..876b7a2 100644
--- a/src/Window.hs
+++ b/src/Window.hs
@@ -1,7 +1,7 @@
-----------------------------------------------------------------------------
-- |
-- Module : Window
--- Copyright : (c) 2011-13 Jose A. Ortega Ruiz
+-- Copyright : (c) 2011-14 Jose A. Ortega Ruiz
-- : (c) 2012 Jochen Keil
-- License : BSD-style (see LICENSE)
--
@@ -40,7 +40,7 @@ createWin d fs c = do
rootw <- rootWindow d dflt
(as,ds) <- textExtents fs "0"
let ht = as + ds + 4
- r = setPosition (position c) srs (fi ht)
+ r = setPosition c (position c) srs (fi ht)
win <- newWindow d (defaultScreenOfDisplay d) rootw r (overrideRedirect c)
setProperties c d win
setStruts r c d win srs
@@ -54,13 +54,13 @@ repositionWin d win fs c = do
srs <- getScreenInfo d
(as,ds) <- textExtents fs "0"
let ht = as + ds + 4
- r = setPosition (position c) srs (fi ht)
+ r = setPosition c (position c) srs (fi ht)
moveResizeWindow d win (rect_x r) (rect_y r) (rect_width r) (rect_height r)
setStruts r c d win srs
return r
-setPosition :: XPosition -> [Rectangle] -> Dimension -> Rectangle
-setPosition p rs ht =
+setPosition :: Config -> XPosition -> [Rectangle] -> Dimension -> Rectangle
+setPosition c p rs ht =
case p' of
Top -> Rectangle rx ry rw h
TopP l r -> Rectangle (rx + fi l) ry (rw - fi l - fi r) h
@@ -71,11 +71,11 @@ setPosition p rs ht =
BottomP l r -> Rectangle (rx + fi l) ny (rw - fi l - fi r) h
BottomSize a i ch -> Rectangle (ax a i) (ny' ch) (nw i) (mh ch)
Static cx cy cw ch -> Rectangle (fi cx) (fi cy) (fi cw) (fi ch)
- OnScreen _ p'' -> setPosition p'' [scr] ht
+ OnScreen _ p'' -> setPosition c p'' [scr] ht
where
(scr@(Rectangle rx ry rw rh), p') =
- case p of OnScreen i x -> (fromMaybe (broadest rs) $ safeIndex i rs, x)
- _ -> (broadest rs, p)
+ case p of OnScreen i x -> (fromMaybe (picker rs) $ safeIndex i rs, x)
+ _ -> (picker rs, p)
ny = ry + fi (rh - ht)
center i = rx + fi (div (remwid i) 2)
right i = rx + fi (remwid i)
@@ -89,7 +89,9 @@ setPosition p rs ht =
mh h' = max (fi h') h
ny' h' = ry + fi (rh - mh h')
safeIndex i = lookup i . zip [0..]
- broadest = maximumBy (compare `on` rect_width)
+ picker = if pickBroadest c
+ then maximumBy (compare `on` rect_width)
+ else head
setProperties :: Config -> Display -> Window -> IO ()
setProperties c d w = do
diff --git a/src/Xmobar.hs b/src/Xmobar.hs
index ce32a0a..c126b7c 100644
--- a/src/Xmobar.hs
+++ b/src/Xmobar.hs
@@ -237,7 +237,8 @@ startCommand sig (com,s,ss)
return (Just h,var)
where is = s ++ "Updating..." ++ ss
-updateString :: Config -> TVar [String] -> IO [[(Widget, String, Maybe [Action])]]
+updateString :: Config -> TVar [String] ->
+ IO [[(Widget, String, Maybe [Action])]]
updateString conf v = do
s <- atomically $ readTVar v
let l:c:r:_ = s ++ repeat ""
diff --git a/xmobar.cabal b/xmobar.cabal
index 9ae14a2..ba5c0ee 100644
--- a/xmobar.cabal
+++ b/xmobar.cabal
@@ -1,5 +1,5 @@
name: xmobar
-version: 0.20
+version: 0.20.1
homepage: http://projects.haskell.org/xmobar/
bug-reports: http://code.google.com/p/xmobar/issues
synopsis: A Minimalistic Text Based Status Bar