aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Actions
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--XMonad/Actions/TopicSpace.hs225
1 files changed, 102 insertions, 123 deletions
diff --git a/XMonad/Actions/TopicSpace.hs b/XMonad/Actions/TopicSpace.hs
index 5632b85..78b4e73 100644
--- a/XMonad/Actions/TopicSpace.hs
+++ b/XMonad/Actions/TopicSpace.hs
@@ -77,129 +77,108 @@ import XMonad.Util.ExtensibleState
-- $usage
-- Here is an example of configuration using TopicSpace:
--
--- @
--- -- The list of all topics/workspaces of your xmonad configuration.
--- -- The order is important, new topics must be inserted
--- -- at the end of the list if you want hot-restarting
--- -- to work.
--- myTopics :: [Topic]
--- myTopics =
--- [ \"dashboard\" -- the first one
--- , \"admin\", \"build\", \"cleaning\", \"conf\", \"darcs\", \"haskell\", \"irc\"
--- , \"mail\", \"movie\", \"music\", \"talk\", \"text\", \"tools\", \"web\", \"xmonad\"
--- , \"yi\", \"documents\", \"twitter\", \"pdf\"
--- ]
--- @
---
--- @
--- myTopicConfig :: TopicConfig
--- myTopicConfig = TopicConfig
--- { topicDirs = M.fromList $
--- [ (\"conf\", \"w\/conf\")
--- , (\"dashboard\", \"Desktop\")
--- , (\"yi\", \"w\/dev-haskell\/yi\")
--- , (\"darcs\", \"w\/dev-haskell\/darcs\")
--- , (\"haskell\", \"w\/dev-haskell\")
--- , (\"xmonad\", \"w\/dev-haskell\/xmonad\")
--- , (\"tools\", \"w\/tools\")
--- , (\"movie\", \"Movies\")
--- , (\"talk\", \"w\/talks\")
--- , (\"music\", \"Music\")
--- , (\"documents\", \"w\/documents\")
--- , (\"pdf\", \"w\/documents\")
--- ]
--- , defaultTopicAction = const $ spawnShell >*> 3
--- , defaultTopic = \"dashboard\"
--- , maxTopicHistory = 10
--- , topicActions = M.fromList $
--- [ (\"conf\", spawnShell >> spawnShellIn \"wd\/ertai\/private\")
--- , (\"darcs\", spawnShell >*> 3)
--- , (\"yi\", spawnShell >*> 3)
--- , (\"haskell\", spawnShell >*> 2 >>
--- spawnShellIn \"wd\/dev-haskell\/ghc\")
--- , (\"xmonad\", spawnShellIn \"wd\/x11-wm\/xmonad\" >>
--- spawnShellIn \"wd\/x11-wm\/xmonad\/contrib\" >>
--- spawnShellIn \"wd\/x11-wm\/xmonad\/utils\" >>
--- spawnShellIn \".xmonad\" >>
--- spawnShellIn \".xmonad\")
--- , (\"mail\", mailAction)
--- , (\"irc\", ssh somewhere)
--- , (\"admin\", ssh somewhere >>
--- ssh nowhere)
--- , (\"dashboard\", spawnShell)
--- , (\"twitter\", spawnShell)
--- , (\"web\", spawn browserCmd)
--- , (\"movie\", spawnShell)
--- , (\"documents\", spawnShell >*> 2 >>
--- spawnShellIn \"Documents\" >*> 2)
--- , (\"pdf\", spawn pdfViewerCmd)
--- ]
--- }
--- @
---
--- @
--- -- extend your keybindings
--- myKeys conf\@XConfig{modMask=modm} =
--- [ ((modm , xK_n ), spawnShell) -- %! Launch terminal
--- , ((modm , xK_a ), currentTopicAction myTopicConfig)
--- , ((modm , xK_g ), promptedGoto)
--- , ((modm .|. shiftMask, xK_g ), promptedShift)
--- ...
--- ]
--- ++
--- [ ((modm, k), switchNthLastFocused myTopicConfig i)
--- | (i, k) <- zip [1..] workspaceKeys]
--- @
---
--- @
--- spawnShell :: X ()
--- spawnShell = currentTopicDir myTopicConfig >>= spawnShellIn
--- @
---
--- @
--- spawnShellIn :: Dir -> X ()
--- spawnShellIn dir = spawn $ \"urxvt '(cd ''\" ++ dir ++ \"'' && \" ++ myShell ++ \" )'\"
--- @
---
--- @
--- goto :: Topic -> X ()
--- goto = switchTopic myTopicConfig
--- @
---
--- @
--- promptedGoto :: X ()
--- promptedGoto = workspacePrompt myXPConfig goto
--- @
---
--- @
--- promptedShift :: X ()
--- promptedShift = workspacePrompt myXPConfig $ windows . W.shift
--- @
---
--- @
--- myConfig = do
--- checkTopicConfig myTopics myTopicConfig
--- myLogHook <- makeMyLogHook
--- return $ defaultConfig
--- { borderWidth = 1 -- Width of the window border in pixels.
--- , workspaces = myTopics
--- , layoutHook = myModifiers myLayout
--- , manageHook = myManageHook
--- , logHook = myLogHook
--- , handleEventHook = myHandleEventHook
--- , terminal = myTerminal -- The preferred terminal program.
--- , normalBorderColor = \"#3f3c6d\"
--- , focusedBorderColor = \"#4f66ff\"
--- , XMonad.modMask = mod1Mask
--- , keys = myKeys
--- , mouseBindings = myMouseBindings
--- }
--- @
---
--- @
--- main :: IO ()
--- main = xmonad =<< myConfig
--- @
+-- > -- The list of all topics/workspaces of your xmonad configuration.
+-- > -- The order is important, new topics must be inserted
+-- > -- at the end of the list if you want hot-restarting
+-- > -- to work.
+-- > myTopics :: [Topic]
+-- > myTopics =
+-- > [ "dashboard" -- the first one
+-- > , "admin", "build", "cleaning", "conf", "darcs", "haskell", "irc"
+-- > , "mail", "movie", "music", "talk", "text", "tools", "web", "xmonad"
+-- > , "yi", "documents", "twitter", "pdf"
+-- > ]
+-- >
+-- > myTopicConfig :: TopicConfig
+-- > myTopicConfig = defaultTopicConfig
+-- > { topicDirs = M.fromList $
+-- > [ ("conf", "w/conf")
+-- > , ("dashboard", "Desktop")
+-- > , ("yi", "w/dev-haskell/yi")
+-- > , ("darcs", "w/dev-haskell/darcs")
+-- > , ("haskell", "w/dev-haskell")
+-- > , ("xmonad", "w/dev-haskell/xmonad")
+-- > , ("tools", "w/tools")
+-- > , ("movie", "Movies")
+-- > , ("talk", "w/talks")
+-- > , ("music", "Music")
+-- > , ("documents", "w/documents")
+-- > , ("pdf", "w/documents")
+-- > ]
+-- > , defaultTopicAction = const $ spawnShell >*> 3
+-- > , defaultTopic = "dashboard"
+-- > , topicActions = M.fromList $
+-- > [ ("conf", spawnShell >> spawnShellIn "wd/ertai/private")
+-- > , ("darcs", spawnShell >*> 3)
+-- > , ("yi", spawnShell >*> 3)
+-- > , ("haskell", spawnShell >*> 2 >>
+-- > spawnShellIn "wd/dev-haskell/ghc")
+-- > , ("xmonad", spawnShellIn "wd/x11-wm/xmonad" >>
+-- > spawnShellIn "wd/x11-wm/xmonad/contrib" >>
+-- > spawnShellIn "wd/x11-wm/xmonad/utils" >>
+-- > spawnShellIn ".xmonad" >>
+-- > spawnShellIn ".xmonad")
+-- > , ("mail", mailAction)
+-- > , ("irc", ssh somewhere)
+-- > , ("admin", ssh somewhere >>
+-- > ssh nowhere)
+-- > , ("dashboard", spawnShell)
+-- > , ("twitter", spawnShell)
+-- > , ("web", spawn browserCmd)
+-- > , ("movie", spawnShell)
+-- > , ("documents", spawnShell >*> 2 >>
+-- > spawnShellIn "Documents" >*> 2)
+-- > , ("pdf", spawn pdfViewerCmd)
+-- > ]
+-- > }
+-- >
+-- > -- extend your keybindings
+-- > myKeys conf@XConfig{modMask=modm} =
+-- > [ ((modm , xK_n ), spawnShell) -- %! Launch terminal
+-- > , ((modm , xK_a ), currentTopicAction myTopicConfig)
+-- > , ((modm , xK_g ), promptedGoto)
+-- > , ((modm .|. shiftMask, xK_g ), promptedShift)
+-- > {- more keys ... -}
+-- > ]
+-- > ++
+-- > [ ((modm, k), switchNthLastFocused myTopicConfig i)
+-- > | (i, k) <- zip [1..] workspaceKeys]
+-- >
+-- > spawnShell :: X ()
+-- > spawnShell = currentTopicDir myTopicConfig >>= spawnShellIn
+-- >
+-- > spawnShellIn :: Dir -> X ()
+-- > spawnShellIn dir = spawn $ "urxvt '(cd ''" ++ dir ++ "'' && " ++ myShell ++ " )'"
+-- >
+-- > goto :: Topic -> X ()
+-- > goto = switchTopic myTopicConfig
+-- >
+-- > promptedGoto :: X ()
+-- > promptedGoto = workspacePrompt myXPConfig goto
+-- >
+-- > promptedShift :: X ()
+-- > promptedShift = workspacePrompt myXPConfig $ windows . W.shift
+-- >
+-- > myConfig = do
+-- > checkTopicConfig myTopics myTopicConfig
+-- > myLogHook <- makeMyLogHook
+-- > return $ defaultConfig
+-- > { borderWidth = 1 -- Width of the window border in pixels.
+-- > , workspaces = myTopics
+-- > , layoutHook = myModifiers myLayout
+-- > , manageHook = myManageHook
+-- > , logHook = myLogHook
+-- > , handleEventHook = myHandleEventHook
+-- > , terminal = myTerminal -- The preferred terminal program.
+-- > , normalBorderColor = "#3f3c6d"
+-- > , focusedBorderColor = "#4f66ff"
+-- > , XMonad.modMask = mod1Mask
+-- > , keys = myKeys
+-- > , mouseBindings = myMouseBindings
+-- > }
+-- >
+-- > main :: IO ()
+-- > main = xmonad =<< myConfig
-- | An alias for @flip replicateM_@
(>*>) :: Monad m => m a -> Int -> m ()