aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--XMonad/Config/Arossato.hs2
-rw-r--r--XMonad/Config/Sjanssen.hs2
-rw-r--r--XMonad/Hooks/DynamicLog.hs39
3 files changed, 36 insertions, 7 deletions
diff --git a/XMonad/Config/Arossato.hs b/XMonad/Config/Arossato.hs
index a30bb09..f705a23 100644
--- a/XMonad/Config/Arossato.hs
+++ b/XMonad/Config/Arossato.hs
@@ -25,7 +25,7 @@ import XMonad hiding ( (|||) )
import qualified XMonad.StackSet as W
import XMonad.Actions.CycleWS
-import XMonad.Hooks.DynamicLog
+import XMonad.Hooks.DynamicLog hiding (xmobar)
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ServerMode
import XMonad.Layout.Accordion
diff --git a/XMonad/Config/Sjanssen.hs b/XMonad/Config/Sjanssen.hs
index e9f20f9..2b528fe 100644
--- a/XMonad/Config/Sjanssen.hs
+++ b/XMonad/Config/Sjanssen.hs
@@ -8,7 +8,7 @@ import XMonad.Layout.Tabbed
import XMonad.Layout.HintedTile
import XMonad.Config (defaultConfig)
import XMonad.Layout.NoBorders
-import XMonad.Hooks.DynamicLog
+import XMonad.Hooks.DynamicLog hiding (xmobar)
import XMonad.Hooks.ManageDocks
import XMonad.Prompt
import XMonad.Prompt.Shell
diff --git a/XMonad/Hooks/DynamicLog.hs b/XMonad/Hooks/DynamicLog.hs
index a7fcd83..621651d 100644
--- a/XMonad/Hooks/DynamicLog.hs
+++ b/XMonad/Hooks/DynamicLog.hs
@@ -22,6 +22,7 @@ module XMonad.Hooks.DynamicLog (
-- * Drop-in loggers
dzen,
+ xmobar,
dynamicLog,
dynamicLogDzen,
dynamicLogXmobar,
@@ -80,6 +81,9 @@ import XMonad.Hooks.ManageDocks
--
-- > main = dzen $ \conf -> xmonad $ conf { <your customizations> }
--
+-- Also you can use 'xmobar' function instead of 'dzen' in the examples above,
+-- if you have xmobar installed.
+--
-- Alternatively, you can choose among several default status bar
-- formats ('dynamicLog', 'dynamicLogDzen', 'dynamicLogXmobar', or
-- 'dynamicLogXinerama') by simply setting your logHook to the
@@ -150,7 +154,7 @@ import XMonad.Hooks.ManageDocks
-- use something like 'dynamicLogWithPP' instead.
--
-- The binding uses the XMonad.Hooks.ManageDocks module to automatically
--- handle screen placement for dzen, and enables 'mod-b' for toggling
+-- handle screen placement for dzen, and enables 'mod-b' for toggling
-- the menu bar.
--
dzen ::
@@ -163,17 +167,42 @@ dzen f = do
{ logHook = dynamicLogWithPP dzenPP
{ ppOutput = hPutStrLn h }
,layoutHook = avoidStrutsOn [U] (layoutHook defaultConfig)
- ,keys = \c -> mykeys c `M.union` keys defaultConfig c
+ ,keys = \c -> toggleStrutsKey c `M.union` keys defaultConfig c
,manageHook = manageHook defaultConfig <+> manageDocks
}
where
- mykeys (XConfig{modMask=modm}) = M.fromList
- [((modm, xK_b ), sendMessage ToggleStruts)
- ]
fg = "'#a8a3f7'" -- n.b quoting
bg = "'#3f3c6d'"
flags = "-e 'onstart=lower' -w 400 -ta l -fg " ++ fg ++ " -bg " ++ bg
+
+-- | Run xmonad with a xmobar status bar set to some nice defaults. Output
+-- is taken from the dynamicLogWithPP hook.
+--
+-- > main = xmobar xmonad
+--
+-- This works pretty much the same as 'dzen' function above
+--
+xmobar ::
+ (XConfig
+ (ModifiedLayout AvoidStruts
+ (Choose Tall (Choose (Mirror Tall) Full))) -> IO t) -> IO t
+xmobar f = do
+ h <- spawnPipe "xmobar"
+ f $ defaultConfig
+ { logHook = dynamicLogWithPP xmobarPP { ppOutput = hPutStrLn h }
+ , layoutHook = avoidStruts $ layoutHook defaultConfig
+ , keys = \c -> toggleStrutsKey c `M.union` keys defaultConfig c
+ , manageHook = manageHook defaultConfig <+> manageDocks
+ }
+
+-- |
+-- Helper function which provides ToggleStruts keybinding
+--
+toggleStrutsKey :: XConfig t -> M.Map (KeyMask, KeySym) (X ())
+toggleStrutsKey XConfig{modMask = modm} = M.fromList
+ [ ((modm, xK_b ), sendMessage ToggleStruts) ]
+
------------------------------------------------------------------------
-- | An example log hook, which prints status information to stdout in