aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--XMonad/Layout/SimplestFloat.hs64
-rw-r--r--xmonad-contrib.cabal1
2 files changed, 65 insertions, 0 deletions
diff --git a/XMonad/Layout/SimplestFloat.hs b/XMonad/Layout/SimplestFloat.hs
new file mode 100644
index 0000000..61a3c0d
--- /dev/null
+++ b/XMonad/Layout/SimplestFloat.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE TypeSynonymInstances, MultiParamTypeClasses #-}
+-----------------------------------------------------------------------------
+-- |
+-- Module : XMonad.Layout.SimplestFloat
+-- Copyright : (c) 2008 Jussi Mäki
+-- License : BSD-style (see xmonad/LICENSE)
+--
+-- Maintainer : joamaki@gmail.com
+-- Stability : unstable
+-- Portability : unportable
+--
+-- A basic floating layout like SimpleFloat but without the decoration.
+-----------------------------------------------------------------------------
+
+module XMonad.Layout.SimplestFloat
+ ( -- * Usage:
+ -- $usage
+ simplestFloat
+ , SimplestFloat
+ ) where
+
+import XMonad
+import qualified XMonad.StackSet as S
+import XMonad.Layout.WindowArranger
+import XMonad.Layout.LayoutModifier
+
+-- $usage
+-- You can use this module with the following in your
+-- @~\/.xmonad\/xmonad.hs@:
+--
+-- > import XMonad.Layout.SimplestFloat
+--
+-- Then edit your @layoutHook@ by adding the SimplestFloat layout:
+--
+-- > myLayouts = simplestFloat ||| Full ||| etc..
+-- > main = xmonad defaultConfig { layoutHook = myLayouts }
+--
+-- For more detailed instructions on editing the layoutHook see:
+--
+-- "XMonad.Doc.Extending#Editing_the_layout_hook"
+
+-- | A simple floating layout where every window is placed according
+-- to the window's initial attributes.
+simplestFloat :: Eq a => (ModifiedLayout WindowArranger SimplestFloat) a
+simplestFloat = (windowArrangeAll $ SF)
+
+data SimplestFloat a = SF deriving (Show, Read)
+instance LayoutClass SimplestFloat Window where
+ doLayout SF sc (S.Stack w l r) = do wrs <- mapM (getSize sc) (w : reverse l ++ r)
+ return (wrs, Nothing)
+ description _ = "SimplestFloat"
+
+getSize :: Rectangle -> Window -> X (Window,Rectangle)
+getSize (Rectangle rx ry _ _) w = do
+ d <- asks display
+ bw <- asks (borderWidth . config)
+ wa <- io $ getWindowAttributes d w
+ let x = max rx $ fi $ wa_x wa
+ y = max ry $ fi $ wa_y wa
+ wh = (fi $ wa_width wa) + (bw * 2)
+ ht = (fi $ wa_height wa) + (bw * 2)
+ return (w, Rectangle x y wh ht)
+ where
+ fi x = fromIntegral x \ No newline at end of file
diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal
index 128f3cf..d61e656 100644
--- a/xmonad-contrib.cabal
+++ b/xmonad-contrib.cabal
@@ -156,6 +156,7 @@ library
XMonad.Layout.WindowArranger
XMonad.Layout.WindowNavigation
XMonad.Layout.WorkspaceDir
+ XMonad.Layout.SimplestFloat
XMonad.Prompt.Directory
XMonad.Prompt
XMonad.Prompt.AppendFile