fix WorkspaceDir (which was broken) using LayoutHelpers.

This commit is contained in:
David Roundy
2007-07-26 13:35:20 +00:00
parent 628244f06d
commit 1847aa7982

View File

@@ -31,6 +31,7 @@ import Data.List ( nub )
import XMonad import XMonad
import Operations ( sendMessage ) import Operations ( sendMessage )
import XMonadContrib.Dmenu ( dmenu, runProcessWithInput ) import XMonadContrib.Dmenu ( dmenu, runProcessWithInput )
import XMonadContrib.LayoutHelpers ( layoutModify )
-- $usage -- $usage
-- You can use this module with the following in your Config.hs file: -- You can use this module with the following in your Config.hs file:
@@ -48,10 +49,10 @@ data Chdir = Chdir String deriving ( Typeable )
instance Message Chdir instance Message Chdir
workspaceDir :: String -> Layout a -> Layout a workspaceDir :: String -> Layout a -> Layout a
workspaceDir wd l = l { doLayout = \r x -> scd wd >> doLayout l r x workspaceDir wd = layoutModify dowd modwd
, modifyLayout = ml } where dowd _ _ rws = scd wd >> return (rws, Nothing)
where ml m | Just (Chdir wd') <- fromMessage m = return $ Just (workspaceDir wd' l) modwd m = return $ do Chdir wd' <- fromMessage m
| otherwise = fmap (workspaceDir wd) `fmap` modifyLayout l m Just $ workspaceDir wd'
scd :: String -> X () scd :: String -> X ()
scd x = do x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` \_ -> return x) scd x = do x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` \_ -> return x)