aboutsummaryrefslogtreecommitdiffstats
path: root/Warp.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-11-01 21:10:59 +0100
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-11-01 21:10:59 +0100
commit4866f2e367dfcf22a9591231ba40948826a1b438 (patch)
tree7a245caee3f146826b267d773b7eaa80386a818e /Warp.hs
parent47589e1913fb9530481caedb543978a30d4323ea (diff)
downloadXMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.tar.gz
XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.tar.xz
XMonadContrib-4866f2e367dfcf22a9591231ba40948826a1b438.zip
Hierarchify
darcs-hash:20071101201059-a5988-fc1f1262bec1b69e13ba18ae7cefeafc8c4471d4.gz
Diffstat (limited to 'Warp.hs')
-rw-r--r--Warp.hs74
1 files changed, 0 insertions, 74 deletions
diff --git a/Warp.hs b/Warp.hs
deleted file mode 100644
index e53b82c..0000000
--- a/Warp.hs
+++ /dev/null
@@ -1,74 +0,0 @@
------------------------------------------------------------------------------
--- |
--- Module : XMonadContrib.Warp
--- Copyright : (c) daniel@wagner-home.com
--- License : BSD3-style (see LICENSE)
---
--- Maintainer : daniel@wagner-home.com
--- Stability : unstable
--- Portability : unportable
---
--- This can be used to make a keybinding that warps the pointer to a given
--- window or screen.
---
------------------------------------------------------------------------------
-
-module XMonadContrib.Warp (
- -- * Usage
- -- $usage
- warpToScreen,
- warpToWindow
- ) where
-
-import Data.Ratio
-import Data.List
-import Control.Monad.RWS
-import Graphics.X11.Xlib
-import Graphics.X11.Xlib.Extras
-import XMonad.Operations
-import XMonad
-import XMonad.StackSet as W
-
-{- $usage
-This can be used to make a keybinding that warps the pointer to a given
-window or screen. For example, I've added the following keybindings to
-my Config.hs:
-
-> , ((modMask, xK_z ), warpToWindow (1%2) (1%2)) -- @@ Move pointer to currently focused window
->
->-- mod-ctrl-{w,e,r} @@ Move mouse pointer to screen 1, 2, or 3
->
-> [((modMask .|. controlMask, key), warpToScreen sc (1%2) (1%2))
-> | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]]
-
-Note that warping to a particular screen may change the focus.
--}
-
--- %import XMonadContrib.Warp
--- %keybind , ((modMask, xK_z ), warpToWindow (1%2) (1%2)) -- @@ Move pointer to currently focused window
--- %keybindlist ++
--- %keybindlist -- mod-ctrl-{w,e,r} @@ Move mouse pointer to screen 1, 2, or 3
--- %keybindlist [((modMask .|. controlMask, key), warpToScreen sc (1%2) (1%2))
--- %keybindlist | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]]
-
-fraction :: (Integral a, Integral b) => Rational -> a -> b
-fraction f x = floor (f * fromIntegral x)
-
-warp :: Window -> Position -> Position -> X ()
-warp w x y = withDisplay $ \d -> io $ warpPointer d none w 0 0 0 0 x y
-
-warpToWindow :: Rational -> Rational -> X ()
-warpToWindow h v =
- withDisplay $ \d ->
- withFocused $ \w -> do
- wa <- io $ getWindowAttributes d w
- warp w (fraction h (wa_width wa)) (fraction v (wa_height wa))
-
-warpToScreen :: ScreenId -> Rational -> Rational -> X ()
-warpToScreen n h v = do
- root <- asks theRoot
- (StackSet {current = x, visible = xs}) <- gets windowset
- whenJust (fmap (screenRect . W.screenDetail) . find ((n==) . W.screen) $ x : xs)
- $ \r ->
- warp root (rect_x r + fraction h (rect_width r))
- (rect_y r + fraction v (rect_height r))