From 59b7d6df4ecc006ffb19fe4dd6eb7523875617ce Mon Sep 17 00:00:00 2001 From: Brent Yorgey Date: Mon, 4 Feb 2008 20:24:45 +0100 Subject: Add a startupHook. The only thing I am not sure about here is at what exact point the startupHook should get run. I picked a place that seems to make sense: as late as possible, right before entering the main loop. That way all the layouts/workspaces/other state are set up and the startupHook can manipulate them. darcs-hash:20080204192445-bd4d7-218d69dcf3cd5c5f2962859cf847595527399807.gz --- XMonad/Config.hs | 9 +++++++-- XMonad/Core.hs | 1 + XMonad/Main.hs | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) (limited to 'XMonad') diff --git a/XMonad/Config.hs b/XMonad/Config.hs index 677248d..98ec02a 100644 --- a/XMonad/Config.hs +++ b/XMonad/Config.hs @@ -25,11 +25,11 @@ module XMonad.Config (defaultConfig) where -- Useful imports -- import XMonad.Core as XMonad hiding - (workspaces,manageHook,numlockMask,keys,logHook,borderWidth,mouseBindings + (workspaces,manageHook,numlockMask,keys,logHook,startupHook,borderWidth,mouseBindings ,defaultGaps,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor ,focusFollowsMouse) import qualified XMonad.Core as XMonad - (workspaces,manageHook,numlockMask,keys,logHook,borderWidth,mouseBindings + (workspaces,manageHook,numlockMask,keys,logHook,startupHook,borderWidth,mouseBindings ,defaultGaps,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor ,focusFollowsMouse) @@ -134,6 +134,10 @@ manageHook = composeAll logHook :: X () logHook = return () +-- | Perform an arbitrary action at xmonad startup. +startupHook :: X () +startupHook = return () + ------------------------------------------------------------------------ -- Extensible layouts -- @@ -256,6 +260,7 @@ defaultConfig = XConfig , XMonad.modMask = defaultModMask , XMonad.keys = keys , XMonad.logHook = logHook + , XMonad.startupHook = startupHook , XMonad.mouseBindings = mouseBindings , XMonad.manageHook = manageHook , XMonad.focusFollowsMouse = focusFollowsMouse } diff --git a/XMonad/Core.hs b/XMonad/Core.hs index ea84bd6..89e6ab2 100644 --- a/XMonad/Core.hs +++ b/XMonad/Core.hs @@ -88,6 +88,7 @@ data XConfig l = XConfig -- ^ The mouse bindings , borderWidth :: !Dimension -- ^ The border width , logHook :: !(X ()) -- ^ The action to perform when the windows set is changed + , startupHook :: !(X ()) -- ^ The action to perform on startup , focusFollowsMouse :: !Bool -- ^ Whether window entry events can change focus } diff --git a/XMonad/Main.hs b/XMonad/Main.hs index 7557ad6..405caec 100644 --- a/XMonad/Main.hs +++ b/XMonad/Main.hs @@ -116,6 +116,8 @@ xmonad initxmc = do -- manage the as-yet-unmanaged windows mapM_ manage (ws \\ W.allWindows winset) + startupHook initxmc + -- main loop, for all you HOF/recursion fans out there. forever_ $ handle =<< io (nextEvent dpy e >> getEvent e) -- cgit v1.2.3