aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Rahm/Desktop/Keys.hs9
-rw-r--r--src/Rahm/Desktop/Marking.hs7
2 files changed, 15 insertions, 1 deletions
diff --git a/src/Rahm/Desktop/Keys.hs b/src/Rahm/Desktop/Keys.hs
index fec7ce5..d302b59 100644
--- a/src/Rahm/Desktop/Keys.hs
+++ b/src/Rahm/Desktop/Keys.hs
@@ -150,6 +150,15 @@ keymap = runKeys $ do
_ -> return ()
shiftMod $
+ doc "Move the marked windo to the current workspace." $
+ mapNextString $ \_ str ->
+ case str of
+ [ch] | isAlphaNum ch -> do
+ ws <- getCurrentWorkspace
+ maybe (return ()) (windows . W.shiftWin ws) =<< markToWindow ch
+ _ -> return ()
+
+ controlMod $
doc "Swap the current window with a mark." $
mapNextString $ \_ str ->
case str of
diff --git a/src/Rahm/Desktop/Marking.hs b/src/Rahm/Desktop/Marking.hs
index 1144ad7..98c96bb 100644
--- a/src/Rahm/Desktop/Marking.hs
+++ b/src/Rahm/Desktop/Marking.hs
@@ -2,7 +2,7 @@ module Rahm.Desktop.Marking (
historyNext, historyPrev,
markCurrentWindow, pushHistory,
jumpToMark, jumpToLast, swapWithLastMark,
- swapWithMark
+ swapWithMark, markToWindow
) where
import Rahm.Desktop.Windows (mapWindows, findWindow, getLocationWorkspace)
@@ -185,6 +185,11 @@ swapWithLastMark = pushHistory $ withHistory $ \hist -> do
windows $ swapWithFocused win
Nothing -> return ()
+markToWindow :: Mark -> X (Maybe Window)
+markToWindow m = do
+ MarkState { markStateMap = mp } <- XS.get
+ return $ Map.lookup m mp
+
swapWithMark :: Mark -> X ()
swapWithMark mark = pushHistory $ do
MarkState {markStateMap = m} <- XS.get