aboutsummaryrefslogtreecommitdiffstats
path: root/Rescreen.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Rescreen.hs')
-rw-r--r--Rescreen.hs41
1 files changed, 0 insertions, 41 deletions
diff --git a/Rescreen.hs b/Rescreen.hs
deleted file mode 100644
index 90e6ab9..0000000
--- a/Rescreen.hs
+++ /dev/null
@@ -1,41 +0,0 @@
--- Grabs new screen information. Useful for randr setups.
--- To use rescreen, add a keybinding in Config.hs. For example:
--- , ((modMask .|. shiftMask, xK_F12 ), rescreen)
-
--- TODO Get this code into xmonad when it is ready for randr support.
--- Make it happen automatically on randr events. It's currently 20 loc, but I
--- believe it can be shrunk a bit.
-
-module XMonadContrib.Rescreen (rescreen) where
-
-import qualified StackSet as W
-import XMonad
-import Operations
-
-import Graphics.X11.Xlib
-import Graphics.X11.Xinerama
-
-import Control.Monad.State
-import Control.Monad.Reader
-import Data.List (partition)
-
-rescreen :: X ()
-rescreen = do
- dpy <- asks display
- xinesc <- io $ getScreenInfo dpy
- -- TODO: This stuff is necessary because Xlib apparently caches screen
- -- width/height. Find a better solution later. I hate Xlib.
- let sx = maximum $ map (\r -> rect_x r + fromIntegral (rect_width r)) xinesc
- sy = maximum $ map (\r -> rect_y r + fromIntegral (rect_height r)) xinesc
- modify (\s -> s { xineScreens = xinesc, dimensions = (sx, sy) })
- ws <- gets windowset
- let s = W.current ws : W.visible ws
- t = zipWith const [0 :: ScreenId ..] xinesc
- (stay, hide) = partition (\x -> fromIntegral (W.screen x) < length t) s
- newsids = filter (\x -> fromIntegral x >= length s) t
- (newvis, newinvis) = splitAt (length newsids) (map W.workspace hide ++ W.hidden ws)
- (newcurr : xs) = stay ++ zipWith W.Screen newvis newsids
- windows $ const $ ws { W.current = newcurr
- , W.visible = xs
- , W.hidden = newinvis
- }