aboutsummaryrefslogtreecommitdiffstats
path: root/WorkspaceDir.hs
diff options
context:
space:
mode:
authorDavid Roundy <droundy@darcs.net>2007-09-24 00:14:56 +0200
committerDavid Roundy <droundy@darcs.net>2007-09-24 00:14:56 +0200
commitef85e9bad7f649bb5d08c46acdb3b5bb3d1a2603 (patch)
treed37c2667da7fde07201df959059f85702c2bbb71 /WorkspaceDir.hs
parentc97e1e27f90b2c05bf4fdffe877a7f29fd227da3 (diff)
downloadXMonadContrib-ef85e9bad7f649bb5d08c46acdb3b5bb3d1a2603.tar.gz
XMonadContrib-ef85e9bad7f649bb5d08c46acdb3b5bb3d1a2603.tar.xz
XMonadContrib-ef85e9bad7f649bb5d08c46acdb3b5bb3d1a2603.zip
update WorkspaceDir.
darcs-hash:20070923221456-72aca-0e285119fa755256d088f3cb1f0876a6df0b2ca7.gz
Diffstat (limited to 'WorkspaceDir.hs')
-rw-r--r--WorkspaceDir.hs17
1 files 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)