From ef85e9bad7f649bb5d08c46acdb3b5bb3d1a2603 Mon Sep 17 00:00:00 2001 From: David Roundy Date: Mon, 24 Sep 2007 00:14:56 +0200 Subject: update WorkspaceDir. darcs-hash:20070923221456-72aca-0e285119fa755256d088f3cb1f0876a6df0b2ca7.gz --- WorkspaceDir.hs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/WorkspaceDir.hs b/WorkspaceDir.hs index f21cdf5..1570c46 100644 --- a/WorkspaceDir.hs +++ b/WorkspaceDir.hs @@ -32,7 +32,7 @@ import Operations ( sendMessage ) import XMonadContrib.Dmenu ( runProcessWithInput ) import XMonadContrib.XPrompt ( XPConfig ) import XMonadContrib.DirectoryPrompt ( directoryPrompt ) -import XMonadContrib.LayoutHelpers ( layoutModify ) +import XMonadContrib.LayoutModifier -- $usage -- You can use this module with the following in your Config.hs file: @@ -55,11 +55,16 @@ import XMonadContrib.LayoutHelpers ( layoutModify ) data Chdir = Chdir String deriving ( Typeable ) instance Message Chdir -workspaceDir :: String -> Layout a -> Layout a -workspaceDir wd = layoutModify dowd modwd - where dowd _ _ rws = scd wd >> return (rws, Nothing) - modwd m = return $ do Chdir wd' <- fromMessage m - Just $ workspaceDir wd' +data WorkspaceDir a = WorkspaceDir String deriving ( Read, Show ) + +instance LayoutModifier WorkspaceDir a where + hook (WorkspaceDir s) = scd s + modifyModify (WorkspaceDir _) m = return $ do Chdir wd <- fromMessage m + Just (WorkspaceDir wd) + +workspaceDir :: Layout l a => String -> l a + -> ModifiedLayout WorkspaceDir l a +workspaceDir s = ModifiedLayout (WorkspaceDir s) scd :: String -> X () scd x = do x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` \_ -> return x) -- cgit v1.2.3