diff options
Diffstat (limited to 'src/Rahm/Desktop/Dragging.hs')
| -rw-r--r-- | src/Rahm/Desktop/Dragging.hs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/Rahm/Desktop/Dragging.hs b/src/Rahm/Desktop/Dragging.hs index c95deff..1f19290 100644 --- a/src/Rahm/Desktop/Dragging.hs +++ b/src/Rahm/Desktop/Dragging.hs @@ -11,7 +11,7 @@ import Data.Maybe (fromMaybe, isJust, mapMaybe) import qualified Data.Set as Set import Graphics.X11.Xlib.Extras import Rahm.Desktop.BorderColors (BorderColor (BorderColor), setBorderColor) -import Rahm.Desktop.Common (pointerLocation, pointerWindow, runMaybeT_, floatAll) +import Rahm.Desktop.Common (floatAll, pointerLocation, pointerWindow, runMaybeT_) import Rahm.Desktop.Layout.Hole (addHoleForWindow, removeHoleForWindow, resetHole) import Rahm.Desktop.Layout.PinWindow (isWindowPinned, pinWindow, unpinWindow) import Rahm.Desktop.Logger @@ -20,6 +20,7 @@ import qualified Rahm.Desktop.StackSet as W import XMonad (X, io) import qualified XMonad as X import XMonad.Util.WindowProperties (getProp32s) +import Rahm.Desktop.Workspaces (accompanyingWorkspace) -- Action which happens after a dragging event. -- @@ -217,6 +218,17 @@ dragWorkspace = do lift $ X.windows $ W.switchWorkspaces ws1 ws2 +dragAlternateWorkspace :: X () +dragAlternateWorkspace = do + (ox, oy) <- pointerLocation + X.mouseDrag (\_ _ -> return ()) $ do + (nx, ny) <- pointerLocation + runMaybeT_ $ do + (W.Screen (W.tag -> ws1) _ _) <- MaybeT $ X.pointScreen ox oy + (W.Screen (W.tag -> ws2) _ _) <- MaybeT $ X.pointScreen nx ny + + lift $ X.windows $ W.switchWorkspaces (accompanyingWorkspace ws1) ws2 + dragWindow :: X () dragWindow = do w <- pointerWindow |