Move EWMH support initialization to a startupHook

Set EWMH support atoms and the window manager name in a startup hook,
rather than in the log hook: the log hook occurs far too frequently
for it to make sense to set constants with it.
This commit is contained in:
Justin Bogner
2009-10-11 05:35:38 +00:00
parent 6e91396fa5
commit fc1da0d701
4 changed files with 19 additions and 28 deletions

View File

@@ -170,9 +170,8 @@ desktopConfig = defaultConfig
{ logHook = ewmhDesktopsLogHook { logHook = ewmhDesktopsLogHook
, layoutHook = desktopLayoutModifiers $ layoutHook defaultConfig , layoutHook = desktopLayoutModifiers $ layoutHook defaultConfig
, manageHook = manageHook defaultConfig <+> manageDocks , manageHook = manageHook defaultConfig <+> manageDocks
, startupHook = setDefaultCursor xC_left_ptr
, handleEventHook = ewmhDesktopsEventHook , handleEventHook = ewmhDesktopsEventHook
, keys = \c -> desktopKeys c `M.union` keys defaultConfig c } , keys = \c -> desktopKeys c `M.union` keys defaultConfig c }
desktopKeys (XConfig {modMask = modm}) = M.fromList $ desktopKeys (XConfig {modMask = modm}) = M.fromList $
[ ((modm, xK_b), sendMessage ToggleStruts) ] [ ((modm, xK_b), sendMessage ToggleStruts) ]

View File

@@ -43,7 +43,7 @@ import XMonad.Actions.CycleWS ( moveTo, WSType( HiddenNonEmptyWS ),
Direction1D( Prev, Next) ) Direction1D( Prev, Next) )
import XMonad.Hooks.ManageDocks ( avoidStruts, manageDocks ) import XMonad.Hooks.ManageDocks ( avoidStruts, manageDocks )
import XMonad.Hooks.EwmhDesktops ( ewmhDesktopsLogHook, import XMonad.Hooks.EwmhDesktops ( ewmhDesktopsStartup, ewmhDesktopsLogHook,
ewmhDesktopsEventHook ) ewmhDesktopsEventHook )
myXPConfig :: XPConfig myXPConfig :: XPConfig
@@ -132,6 +132,7 @@ config = defaultConfig
--mosaic 0.25 0.5 --mosaic 0.25 0.5
, manageHook = manageHook defaultConfig <+> manageDocks -- add panel-handling , manageHook = manageHook defaultConfig <+> manageDocks -- add panel-handling
, logHook = ewmhDesktopsLogHook -- actually, no logging here, just other stuff , logHook = ewmhDesktopsLogHook -- actually, no logging here, just other stuff
, startupHook = ewmhDesktopsStartup
, terminal = "xterm" -- The preferred terminal program. , terminal = "xterm" -- The preferred terminal program.
, normalBorderColor = "#222222" -- Border color for unfocused windows. , normalBorderColor = "#222222" -- Border color for unfocused windows.
, focusedBorderColor = "#00ff00" -- Border color for focused windows. , focusedBorderColor = "#00ff00" -- Border color for focused windows.

View File

@@ -34,14 +34,15 @@ sjanssenConfig = do
, ((modm, button2), (\w -> focus w >> windows W.swapMaster)) , ((modm, button2), (\w -> focus w >> windows W.swapMaster))
, ((modm.|. shiftMask, button1), (\w -> focus w >> mouseResizeWindow w)) ] , ((modm.|. shiftMask, button1), (\w -> focus w >> mouseResizeWindow w)) ]
, keys = \c -> mykeys sp c `M.union` keys defaultConfig c , keys = \c -> mykeys sp c `M.union` keys defaultConfig c
, layoutHook = modifiers layouts , layoutHook = modifiers layouts
, logHook = ewmhDesktopsLogHook , logHook = ewmhDesktopsLogHook
, manageHook = composeAll [className =? x --> doShift w , startupHook = ewmhDesktopsStartup
, manageHook = composeAll [className =? x --> doShift w
| (x, w) <- [ ("Firefox", "web") | (x, w) <- [ ("Firefox", "web")
, ("Ktorrent", "7") , ("Ktorrent", "7")
, ("Amarokapp", "7")]] , ("Amarokapp", "7")]]
<+> manageHook defaultConfig <+> manageDocks <+> manageSpawn sp <+> manageHook defaultConfig <+> manageDocks <+> manageSpawn sp
<+> (isFullscreen --> doFullFloat) <+> (isFullscreen --> doFullFloat)
} }
where where
tiled = HintedTile 1 0.03 0.5 TopLeft tiled = HintedTile 1 0.03 0.5 TopLeft

View File

@@ -15,6 +15,7 @@
module XMonad.Hooks.EwmhDesktops ( module XMonad.Hooks.EwmhDesktops (
-- * Usage -- * Usage
-- $usage -- $usage
ewmhDesktopsStartup,
ewmhDesktopsLogHook, ewmhDesktopsLogHook,
ewmhDesktopsLogHookCustom, ewmhDesktopsLogHookCustom,
ewmhDesktopsEventHook ewmhDesktopsEventHook
@@ -38,26 +39,18 @@ import XMonad.Util.WorkspaceCompare
-- > import XMonad -- > import XMonad
-- > import XMonad.Hooks.EwmhDesktops -- > import XMonad.Hooks.EwmhDesktops
-- > -- >
-- > myLogHook :: X () -- > main = xmonad defaultConfig { startupHook = ewmhDesktopsStartup
-- > myLogHook = ewmhDesktopsLogHook -- > , handleEventHook = ewmhDesktopsEventHook
-- > -- > , logHook = ewmhDesktopsLogHook }
-- > myHandleEventHook = ewmhDesktopsEventHook
-- >
-- > main = xmonad defaultConfig { handleEventHook = myHandleEventHook, logHook = myLogHook }
-- --
-- 'avoidStruts' is used to automatically leave space for dock programs, and -- You may also be interested in 'avoidStruts' from XMonad.Hooks.ManageDocks.
-- can be found in 'XMonad.Hooks.ManageDocks'.
--
-- For more detailed instructions on editing the layoutHook see:
--
-- "XMonad.Doc.Extending#The_log_hook_and_external_status_bars"
--
-- For more detailed instructions on editing the layoutHook see:
--
-- "XMonad.Doc.Extending#Editing_the_layout_hook"
-- |
-- Initializes EwmhDesktops and advertises EWMH support to the X
-- server
ewmhDesktopsStartup :: X ()
ewmhDesktopsStartup = setSupported
-- | -- |
-- Notifies pagers and window lists, such as those in the gnome-panel -- Notifies pagers and window lists, such as those in the gnome-panel
@@ -65,7 +58,6 @@ import XMonad.Util.WorkspaceCompare
ewmhDesktopsLogHook :: X () ewmhDesktopsLogHook :: X ()
ewmhDesktopsLogHook = ewmhDesktopsLogHookCustom id ewmhDesktopsLogHook = ewmhDesktopsLogHookCustom id
-- | -- |
-- Generalized version of ewmhDesktopsLogHook that allows an arbitrary -- Generalized version of ewmhDesktopsLogHook that allows an arbitrary
-- user-specified function to transform the workspace list (post-sorting) -- user-specified function to transform the workspace list (post-sorting)
@@ -74,8 +66,6 @@ ewmhDesktopsLogHookCustom f = withWindowSet $ \s -> do
sort' <- getSortByIndex sort' <- getSortByIndex
let ws = f $ sort' $ W.workspaces s let ws = f $ sort' $ W.workspaces s
setSupported
-- Number of Workspaces -- Number of Workspaces
setNumberOfDesktops (length ws) setNumberOfDesktops (length ws)