mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-07-31 20:21:51 -07:00
New module: XMonad.Prelude
This is a convenience module in order to have less import noise. It re-exports the following: a) Commonly used modules in full (Data.Foldable, Data.Applicative, and so on); though only those that play nicely with each other, so that XMonad.Prelude can be imported unqualified without any problems. This prevents things like `Prelude.(.)` and `Control.Category.(.)` fighting with each other. b) Helper functions that don't necessarily fit in any other module; e.g., the often used abbreviation `fi = fromIntegral`.
This commit is contained in:
@@ -19,11 +19,11 @@ module XMonad.Actions.TiledWindowDragging
|
||||
dragWindow
|
||||
)
|
||||
where
|
||||
|
||||
import XMonad
|
||||
import XMonad.Prelude
|
||||
import qualified XMonad.StackSet as W
|
||||
import XMonad.Layout.DraggingVisualizer
|
||||
import Control.Monad
|
||||
|
||||
|
||||
-- $usage
|
||||
-- You can use this module with the following in your @~\/.xmonad\/xmonad.hs@:
|
||||
@@ -32,7 +32,7 @@ import Control.Monad
|
||||
-- > import XMonad.Layout.DraggingVisualizer
|
||||
--
|
||||
-- then edit your 'layoutHook' by adding the draggingVisualizer to your layout:
|
||||
--
|
||||
--
|
||||
-- > myLayout = draggingVisualizer $ layoutHook def
|
||||
--
|
||||
-- Then add a mouse binding for 'dragWindow':
|
||||
@@ -54,10 +54,10 @@ dragWindow window = whenX (isClient window) $ do
|
||||
|
||||
mouseDrag
|
||||
(\posX posY ->
|
||||
let rect = Rectangle (fInt (fInt winX + (posX - fInt offsetX)))
|
||||
(fInt (fInt winY + (posY - fInt offsetY)))
|
||||
(fInt winWidth)
|
||||
(fInt winHeight)
|
||||
let rect = Rectangle (fi (fi winX + (posX - fi offsetX)))
|
||||
(fi (fi winY + (posY - fi offsetY)))
|
||||
(fi winWidth)
|
||||
(fi winHeight)
|
||||
in sendMessage $ DraggingWindow window rect
|
||||
)
|
||||
(sendMessage DraggingStopped >> performWindowSwitching window)
|
||||
@@ -67,13 +67,13 @@ dragWindow window = whenX (isClient window) $ do
|
||||
getPointerOffset :: Window -> X (Int, Int)
|
||||
getPointerOffset win = do
|
||||
(_, _, _, oX, oY, _, _, _) <- withDisplay (\d -> io $ queryPointer d win)
|
||||
return (fInt oX, fInt oY)
|
||||
return (fi oX, fi oY)
|
||||
|
||||
-- | return a tuple of windowX, windowY, windowWidth, windowHeight
|
||||
getWindowPlacement :: Window -> X (Int, Int, Int, Int)
|
||||
getWindowPlacement window = do
|
||||
wa <- withDisplay (\d -> io $ getWindowAttributes d window)
|
||||
return (fInt $ wa_x wa, fInt $ wa_y wa, fInt $ wa_width wa, fInt $ wa_height wa)
|
||||
return (fi $ wa_x wa, fi $ wa_y wa, fi $ wa_width wa, fi $ wa_height wa)
|
||||
|
||||
|
||||
performWindowSwitching :: Window -> X ()
|
||||
@@ -91,11 +91,3 @@ performWindowSwitching win = do
|
||||
switchEntries a b x | x == a = b
|
||||
| x == b = a
|
||||
| otherwise = x
|
||||
|
||||
|
||||
|
||||
-- | shorthand for fromIntegral
|
||||
fInt :: Integral a => Integral b => a -> b
|
||||
fInt = fromIntegral
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user