aboutsummaryrefslogtreecommitdiffstats
path: root/XMonad/Actions/TopicSpace.hs
diff options
context:
space:
mode:
Diffstat (limited to 'XMonad/Actions/TopicSpace.hs')
-rw-r--r--XMonad/Actions/TopicSpace.hs9
1 files changed, 8 insertions, 1 deletions
diff --git a/XMonad/Actions/TopicSpace.hs b/XMonad/Actions/TopicSpace.hs
index 547d143..bb9bd24 100644
--- a/XMonad/Actions/TopicSpace.hs
+++ b/XMonad/Actions/TopicSpace.hs
@@ -159,6 +159,7 @@ module XMonad.Actions.TopicSpace
, currentTopicAction
, switchTopic
, switchNthLastFocused
+ , shiftNthLastFocused
, currentTopicDir
, checkTopicConfig
, (>*>)
@@ -168,7 +169,7 @@ where
import XMonad
import Data.List
-import Data.Maybe (fromMaybe, isNothing)
+import Data.Maybe (fromMaybe, isNothing, listToMaybe)
import Data.Ord
import qualified Data.Map as M
import Graphics.X11.Xlib
@@ -274,6 +275,12 @@ switchNthLastFocused tg depth = do
lastWs <- getLastFocusedTopics
switchTopic tg $ (lastWs ++ repeat (defaultTopic tg)) !! depth
+-- | Shift the focused window to the Nth last focused topic, or fallback to doing nothing.
+shiftNthLastFocused :: Int -> X ()
+shiftNthLastFocused n = do
+ ws <- fmap (listToMaybe . drop n) getLastFocusedTopics
+ whenJust ws $ windows . W.shift
+
-- | Returns the directory associated with current topic returns the empty string otherwise.
currentTopicDir :: TopicConfig -> X String
currentTopicDir tg = do