diff options
author | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-11-01 21:10:59 +0100 |
---|---|---|
committer | Spencer Janssen <sjanssen@cse.unl.edu> | 2007-11-01 21:10:59 +0100 |
commit | 4866f2e367dfcf22a9591231ba40948826a1b438 (patch) | |
tree | 7a245caee3f146826b267d773b7eaa80386a818e /WorkspaceDir.hs | |
parent | 47589e1913fb9530481caedb543978a30d4323ea (diff) | |
download | XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.tar.gz XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.tar.xz XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.zip |
Hierarchify
darcs-hash:20071101201059-a5988-fc1f1262bec1b69e13ba18ae7cefeafc8c4471d4.gz
Diffstat (limited to 'WorkspaceDir.hs')
-rw-r--r-- | WorkspaceDir.hs | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/WorkspaceDir.hs b/WorkspaceDir.hs deleted file mode 100644 index a967741..0000000 --- a/WorkspaceDir.hs +++ /dev/null @@ -1,78 +0,0 @@ -{-# OPTIONS_GHC -fglasgow-exts #-} -- For deriving Data/Typeable -{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-} - ------------------------------------------------------------------------------ --- | --- Module : XMonadContrib.WorkspaceDir --- Copyright : (c) 2007 David Roundy <droundy@darcs.net> --- License : BSD3-style (see LICENSE) --- --- Maintainer : David Roundy <droundy@darcs.net> --- Stability : unstable --- Portability : unportable --- --- WorkspaceDir is an extension to set the current directory in a workspace. --- --- Actually, it sets the current directory in a layout, since there's no way I --- know of to attach a behavior to a workspace. This means that any terminals --- (or other programs) pulled up in that workspace (with that layout) will --- execute in that working directory. Sort of handy, I think. --- --- Requires the 'directory' package --- ------------------------------------------------------------------------------ - -module XMonadContrib.WorkspaceDir ( - -- * Usage - -- $usage - workspaceDir, - changeDir - ) where - -import System.Directory ( setCurrentDirectory ) - -import XMonad -import XMonad.Operations ( sendMessage ) -import XMonadContrib.Run ( runProcessWithInput ) -import XMonadContrib.XPrompt ( XPConfig ) -import XMonadContrib.DirectoryPrompt ( directoryPrompt ) -import XMonadContrib.LayoutModifier - --- $usage --- You can use this module with the following in your Config.hs file: --- --- > import XMonadContrib.WorkspaceDir --- > --- > layouts = map (workspaceDir "~") [ tiled, ... ] --- --- In keybindings: --- --- > , ((modMask .|. shiftMask, xK_x ), changeDir defaultXPConfig) - --- %import XMonadContrib.WorkspaceDir --- %keybind , ((modMask .|. shiftMask, xK_x ), changeDir defaultXPConfig) --- %layout -- prepend 'map (workspaceDir "~")' to layouts definition above, --- %layout -- just before the list, like the following (don't uncomment next line): --- %layout -- layouts = map (workspaceDir "~") [ tiled, ... ] - - -data Chdir = Chdir String deriving ( Typeable ) -instance Message Chdir - -data WorkspaceDir a = WorkspaceDir String deriving ( Read, Show ) - -instance LayoutModifier WorkspaceDir a where - hook (WorkspaceDir s) = scd s - handleMess (WorkspaceDir _) m = return $ do Chdir wd <- fromMessage m - Just (WorkspaceDir wd) - -workspaceDir :: LayoutClass 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) - catchIO $ setCurrentDirectory x' - -changeDir :: XPConfig -> X () -changeDir c = directoryPrompt c "Set working directory: " (sendMessage . Chdir) |