diff options
Diffstat (limited to 'XMonad/Layout/Cross.hs')
-rw-r--r-- | XMonad/Layout/Cross.hs | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/XMonad/Layout/Cross.hs b/XMonad/Layout/Cross.hs index 26aa678..ec62a56 100644 --- a/XMonad/Layout/Cross.hs +++ b/XMonad/Layout/Cross.hs @@ -9,7 +9,7 @@ -- Stability : stable -- Portability : portable -- --- A Cross Layout with a main window in the center. +-- A Cross Layout with the main window in the center. -- module XMonad.Layout.Cross( -- * Usage @@ -26,7 +26,7 @@ import Control.Monad( msum ) -- -- > import XMonad.Layout.Cross -- --- Then edit your @layoutHook@ by adding the Spiral layout: +-- Then edit your @layoutHook@ by adding one of the Cross layouts: -- -- > myLayouts = simpleCross ||| etc.. -- > main = xmonad defaultConfig { layoutHook = myLayouts } @@ -36,31 +36,28 @@ import Control.Monad( msum ) (<%>) :: Dimension -> Rational -> Dimension d <%> f = floor $ f * (fromIntegral d) --- | The Cross Layout draw the focused window on the center of the screen +-- | The Cross Layout draws the focused window in the center of the screen -- and part of the other windows on the sides. The 'Shrink' and 'Expand' -- messages increment the size of the main window. -- --- With the focus keys you change the window on the center and the other --- windows put itself on the sides in a cycle way. --- --- e.g: focus down put down[0] on focus, focus up put up[0] on --- focus. --- --- Only five windows are shown in the Cross Layout, focus two ups and two --- downs. Everything else is hide. +-- The focus keybindings change the center window, while other windows +-- cycle through the side positions. With the Cross layout only four +-- windows are shown around the focused window, two ups and two downs, +-- no matter how many are in the current stack. I.e. focus down cycles the +-- window below focused into the center; focus up cycles the window above. data Cross a = Cross { - crossProp :: !Rational, -- ^ Proportion of screen occupies for main window. + crossProp :: !Rational, -- ^ Proportion of screen occupied by the main window. crossInc :: !Rational -- ^ Percent of main window to increment by when resizing. } deriving( Show, Read ) --- | A simple Cross Layout. It has a main window with focused windos on the center. --- The proportion of screen of main window is 3\/4. +-- | A simple Cross Layout. It places the focused window in the center. +-- The proportion of the screen used by the main window is 4\/5. simpleCross :: Cross a simpleCross = Cross (4/5) (1/100) instance LayoutClass Cross a where - pureLayout (Cross f _) r s = [(focus s, mainRect r f)] ++ + pureLayout (Cross f _) r s = [(focus s, mainRect r f)] ++ (zip winCycle (upRects r f)) ++ (zip (reverse winCycle) (downRects r f)) where winCycle = (up s) ++ (reverse (down s)) @@ -74,14 +71,14 @@ instance LayoutClass Cross a where -- get the Rectangle for the focused window mainRect :: Rectangle -> Rational -> Rectangle mainRect (Rectangle rx ry rw rh) f = Rectangle - (rx + (fromIntegral (rw <%> invf))) + (rx + (fromIntegral (rw <%> invf))) (ry + (fromIntegral (rh <%> invf))) (rw <%> f) (rh <%> f) where invf = (1/2) * (1-f) -- get the rectangles for the up windows upRects :: Rectangle -> Rational -> [Rectangle] -upRects r f = [topRectangle r nf, rigthRectangle r nf] +upRects r f = [topRectangle r nf, rightRectangle r nf] where nf = f * (8/10) -- get the rectangles for the down windows @@ -90,19 +87,19 @@ downRects r f = [bottomRectangle r nf, leftRectangle r nf] where nf = f * (8/10) topRectangle :: Rectangle -> Rational -> Rectangle -topRectangle (Rectangle rx ry rw rh) f = Rectangle +topRectangle (Rectangle rx ry rw rh) f = Rectangle (rx + (fromIntegral (rw <%> ((1-f)*(1/2))))) - ry + ry (rw <%> f) (rh <%> ((1-f)*(1/2))) -rigthRectangle :: Rectangle -> Rational -> Rectangle -rigthRectangle (Rectangle rx ry rw rh) f = Rectangle +rightRectangle :: Rectangle -> Rational -> Rectangle +rightRectangle (Rectangle rx ry rw rh) f = Rectangle (rx + (fromIntegral (rw - (rw <%> (1/2))))) (ry + (fromIntegral (rh <%> ((1-f)*(1/2))))) (rw <%> (1/2)) (rh <%> f) bottomRectangle :: Rectangle -> Rational -> Rectangle -bottomRectangle (Rectangle rx ry rw rh) f = Rectangle +bottomRectangle (Rectangle rx ry rw rh) f = Rectangle (rx + (fromIntegral (rw <%> ((1-f)*(1/2))))) (ry + (fromIntegral (rh - (rh <%> ((1-f)*(1/2)))))) (rw <%> f) (rh <%> ((1-f)*(1/2))) |