mirror of
https://github.com/xmonad/xmonad.git
synced 2025-05-19 08:30:21 -07:00
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.
This commit is contained in:
parent
cc2754d82a
commit
9d9acba45f
@ -25,11 +25,11 @@ module XMonad.Config (defaultConfig) where
|
|||||||
-- Useful imports
|
-- Useful imports
|
||||||
--
|
--
|
||||||
import XMonad.Core as XMonad hiding
|
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
|
,defaultGaps,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor
|
||||||
,focusFollowsMouse)
|
,focusFollowsMouse)
|
||||||
import qualified XMonad.Core as XMonad
|
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
|
,defaultGaps,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor
|
||||||
,focusFollowsMouse)
|
,focusFollowsMouse)
|
||||||
|
|
||||||
@ -134,6 +134,10 @@ manageHook = composeAll
|
|||||||
logHook :: X ()
|
logHook :: X ()
|
||||||
logHook = return ()
|
logHook = return ()
|
||||||
|
|
||||||
|
-- | Perform an arbitrary action at xmonad startup.
|
||||||
|
startupHook :: X ()
|
||||||
|
startupHook = return ()
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- Extensible layouts
|
-- Extensible layouts
|
||||||
--
|
--
|
||||||
@ -256,6 +260,7 @@ defaultConfig = XConfig
|
|||||||
, XMonad.modMask = defaultModMask
|
, XMonad.modMask = defaultModMask
|
||||||
, XMonad.keys = keys
|
, XMonad.keys = keys
|
||||||
, XMonad.logHook = logHook
|
, XMonad.logHook = logHook
|
||||||
|
, XMonad.startupHook = startupHook
|
||||||
, XMonad.mouseBindings = mouseBindings
|
, XMonad.mouseBindings = mouseBindings
|
||||||
, XMonad.manageHook = manageHook
|
, XMonad.manageHook = manageHook
|
||||||
, XMonad.focusFollowsMouse = focusFollowsMouse }
|
, XMonad.focusFollowsMouse = focusFollowsMouse }
|
||||||
|
@ -88,6 +88,7 @@ data XConfig l = XConfig
|
|||||||
-- ^ The mouse bindings
|
-- ^ The mouse bindings
|
||||||
, borderWidth :: !Dimension -- ^ The border width
|
, borderWidth :: !Dimension -- ^ The border width
|
||||||
, logHook :: !(X ()) -- ^ The action to perform when the windows set is changed
|
, 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
|
, focusFollowsMouse :: !Bool -- ^ Whether window entry events can change focus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +116,8 @@ xmonad initxmc = do
|
|||||||
-- manage the as-yet-unmanaged windows
|
-- manage the as-yet-unmanaged windows
|
||||||
mapM_ manage (ws \\ W.allWindows winset)
|
mapM_ manage (ws \\ W.allWindows winset)
|
||||||
|
|
||||||
|
startupHook initxmc
|
||||||
|
|
||||||
-- main loop, for all you HOF/recursion fans out there.
|
-- main loop, for all you HOF/recursion fans out there.
|
||||||
forever_ $ handle =<< io (nextEvent dpy e >> getEvent e)
|
forever_ $ handle =<< io (nextEvent dpy e >> getEvent e)
|
||||||
|
|
||||||
|
@ -247,6 +247,16 @@ myFocusFollowsMouse = True
|
|||||||
--
|
--
|
||||||
myLogHook = return ()
|
myLogHook = return ()
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
-- Startup hook
|
||||||
|
|
||||||
|
-- Perform an arbitrary action each time xmonad starts or is restarted
|
||||||
|
-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
|
||||||
|
-- per-workspace layout choices.
|
||||||
|
--
|
||||||
|
-- By default, do nothing.
|
||||||
|
myStartupHook = return ()
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- Now run xmonad with all the defaults we set up.
|
-- Now run xmonad with all the defaults we set up.
|
||||||
|
|
||||||
@ -279,5 +289,6 @@ defaults = defaultConfig {
|
|||||||
-- hooks, layouts
|
-- hooks, layouts
|
||||||
layoutHook = myLayout,
|
layoutHook = myLayout,
|
||||||
manageHook = myManageHook,
|
manageHook = myManageHook,
|
||||||
logHook = myLogHook
|
logHook = myLogHook,
|
||||||
|
startupHook = myStartupHook
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user