diff options
author | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-05-21 21:46:53 +0200 |
---|---|---|
committer | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-05-21 21:46:53 +0200 |
commit | 9ddc52b817d366782f2c431053648fade67d6bf4 (patch) | |
tree | 5dcfae33fb27543031f66a2643b1aa9e9930dd19 /XMonad.hs | |
parent | 880d404ad9c01312a56d2646b05871e64249bd26 (diff) | |
download | xmonad-9ddc52b817d366782f2c431053648fade67d6bf4.tar.gz xmonad-9ddc52b817d366782f2c431053648fade67d6bf4.tar.xz xmonad-9ddc52b817d366782f2c431053648fade67d6bf4.zip |
Experimental support for a beefier restart.
darcs-hash:20070521194653-a5988-b6725cc0d73fc6b726dc41284eef9303a7e59a1e.gz
Diffstat (limited to 'XMonad.hs')
-rw-r--r-- | XMonad.hs | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -140,13 +140,21 @@ spawn x = io $ do getProcessStatus True False pid return () --- | Restart xmonad by exec()'ing self. This doesn't save state and xmonad has --- to be in PATH for this to work. -restart :: X () -restart = io $ do - prog <- getProgName - args <- getArgs - catch (executeFile prog True args Nothing) (const $ return ()) +-- | Restart xmonad via exec(). +-- +-- If the first parameter is 'Just name', restart will attempt to execute the +-- program corresponding to 'name'. Otherwise, xmonad will attempt to execute +-- the name of the current program. +-- +-- When the second parameter is 'True', xmonad will attempt to resume with the +-- current window state. +restart :: Maybe String -> Bool -> X () +restart mprog resume = do + prog <- maybe (io $ getProgName) return mprog + args <- io $ getArgs + args' <- if resume then gets (("--resume":) . return . show . windowset) else return [] + io $ catch (executeFile prog True (args ++ args') Nothing) + (const $ return ()) -- ignore executable not found exception -- | Run a side effecting action with the current workspace. Like 'when' but whenJust :: Maybe a -> (a -> X ()) -> X () |