]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
xmonad.hs: Use improved layout.
authorSimon Ruderich <simon@ruderich.org>
Tue, 30 Jun 2009 12:19:04 +0000 (14:19 +0200)
committerSimon Ruderich <simon@ruderich.org>
Tue, 30 Jun 2009 12:19:04 +0000 (14:19 +0200)
xmonad.hs

index c71d10d2a9ec3e41b6728b013e87e7fa61f8d1fe..598f2873d720f10f0f614be4b0ce7363bd2d6784 100644 (file)
--- a/xmonad.hs
+++ b/xmonad.hs
@@ -2,6 +2,44 @@
 
 
 import XMonad
+-- Necessary for reflectVert.
+import XMonad.Layout.Reflect
+-- Necessary for avoidMaster.
+import qualified XMonad.StackSet as W
+
+
+-- Prevent new windows from spawning in the master pane. Taken from
+-- http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions on
+-- 2009-06-30. Thanks.
+avoidMaster :: W.StackSet i l a s sd -> W.StackSet i l a s sd
+avoidMaster = W.modify' $ \c -> case c of
+    W.Stack t [] (r:rs) -> W.Stack t [r] rs
+    otherwise           -> c
+
+-- Create my custom layout.
+--
+-- Only use horizontal (Mirror tiled) and fullscreen layouts.
+--
+-- The master pane is at the bottom of the screen (reflectVert). To make sure
+-- new windows don't spawn in the master pane avoidMaster (see below) is used.
+--
+-- Thanks to jrick in #xmonad on Freenode (2009-06-29 22:19) for telling me
+-- how to remove the vertical tiled layout.
+myLayoutHook = reflectVert $ Mirror tiled ||| Full
+    where
+    -- Default tiling algorithm partitions the screen into two panes.
+    tiled   = Tall nmaster delta ratio
+    -- The default number of windows in the master pane.
+    nmaster = 1
+    -- Default proportion of screen occupied by master pane.
+    ratio   = 1/2
+    -- Percent of screen to increment by when resizing panes.
+    delta   = 3/100
+
+-- Don't spawn new windows in the master pane (which is now at the bottom of
+-- the screen). Thanks to dschoepe, aavogt and especially vav in #xmonad on
+-- Freenode (2009-06-30 02:10f).
+myManageHook = doF avoidMaster
 
 main = xmonad $ defaultConfig
     -- Use Windows key as main key so it doesn't conflict with any other key
@@ -10,4 +48,8 @@ main = xmonad $ defaultConfig
     -- Inactive borders are black - invisible on my black screen.
     , normalBorderColor = "#000000"
     -- Active border is dark red.
-    , focusedBorderColor = "#990000" }
+    , focusedBorderColor = "#990000"
+    -- Use my layout and manage hooks (see above).
+    , layoutHook = myLayoutHook
+    , manageHook = myManageHook
+    }