summaryrefslogtreecommitdiffstats
path: root/src/XMonad/Layout/TopicDir.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/XMonad/Layout/TopicDir.hs')
-rw-r--r--src/XMonad/Layout/TopicDir.hs43
1 files changed, 24 insertions, 19 deletions
diff --git a/src/XMonad/Layout/TopicDir.hs b/src/XMonad/Layout/TopicDir.hs
index fa2eb62..47e732e 100644
--- a/src/XMonad/Layout/TopicDir.hs
+++ b/src/XMonad/Layout/TopicDir.hs
@@ -1,4 +1,9 @@
-{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, PatternGuards #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PatternGuards #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+{-# LANGUAGE UnicodeSyntax #-}
module XMonad.Layout.TopicDir (
-- * Usage
@@ -8,24 +13,25 @@ module XMonad.Layout.TopicDir (
TopicDir,
) where
-import qualified Data.Map as M
-import Control.Exception
-import System.Directory (setCurrentDirectory, getCurrentDirectory)
+import Control.Exception
+import qualified Data.Map as M
+import System.Directory (getCurrentDirectory,
+ setCurrentDirectory)
-import XMonad hiding (focus)
-import XMonad.Util.Run (runProcessWithInput)
-import XMonad.Prompt (XPConfig)
-import XMonad.Prompt.Directory (directoryPrompt)
-import XMonad.Layout.LayoutModifier
-import XMonad.StackSet (tag, currentTag)
+import XMonad hiding (focus)
+import XMonad.Layout.LayoutModifier
+import XMonad.Prompt (XPConfig)
+import XMonad.Prompt.Directory (directoryPrompt)
+import XMonad.StackSet (currentTag, tag)
+import XMonad.Util.Run (runProcessWithInput)
-econst :: Monad m => a -> IOException -> m a
+econst ∷ Monad m ⇒ a → IOException → m a
econst = const . return
-data Chdir = Chdir String deriving ( Typeable )
+newtype Chdir = Chdir String deriving ( Typeable )
instance Message Chdir
-data TopicDir a = TopicDir (M.Map WorkspaceId String, String)
+newtype TopicDir a = TopicDir (M.Map WorkspaceId String, String)
deriving (Read, Show)
instance LayoutModifier TopicDir Window where
@@ -36,7 +42,7 @@ instance LayoutModifier TopicDir Window where
Nothing -> return ()
runLayout w r
where
- mdir :: WorkspaceId -> Maybe String
+ mdir ∷ WorkspaceId → Maybe String
mdir tc | tc == tag w && d == "" = M.lookup tc tds
| tc == tag w = Just d
| otherwise = Nothing
@@ -48,17 +54,16 @@ instance LayoutModifier TopicDir Window where
return $ Just $ TopicDir (dds, wd')
| otherwise = return Nothing
-topicDir :: M.Map WorkspaceId String -> l a -> ModifiedLayout TopicDir l a
+topicDir ∷ M.Map WorkspaceId String → l a → ModifiedLayout TopicDir l a
topicDir m = ModifiedLayout (TopicDir (m, ""))
-cleanDir :: String -> X String
+cleanDir ∷ String → X String
cleanDir x = scd x >> io getCurrentDirectory
-scd :: String -> X ()
+scd ∷ String → X ()
scd x = do
x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` econst x)
catchIO $ setCurrentDirectory x'
-changeDir :: XPConfig -> X ()
+changeDir ∷ XPConfig → X ()
changeDir c = directoryPrompt c "Set working directory: " (sendMessage . Chdir)
-