aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-04-14 23:09:50 -0600
committerJosh Rahm <joshuarahm@gmail.com>2022-10-09 12:19:46 -0600
commitcd2c71097e0a878deada1337b58926fb9d7bc949 (patch)
tree1d95cc48e15cef992dc0ef217b6dd64cc3572347 /src/Rahm
parentbc348f98dd736c146493fcdb44aeedce538b9167 (diff)
downloadrde-cd2c71097e0a878deada1337b58926fb9d7bc949.tar.gz
rde-cd2c71097e0a878deada1337b58926fb9d7bc949.tar.bz2
rde-cd2c71097e0a878deada1337b58926fb9d7bc949.zip
Some changes to marking
Diffstat (limited to 'src/Rahm')
-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