--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/xmonad/xmonad.hs Thu Oct 13 08:28:49 2011 -0400
@@ -0,0 +1,121 @@
+-- Import statements
+import XMonad
+-- import XMonad.Config.Gnome
+import XMonad.Hooks.DynamicLog
+import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.EwmhDesktops
+import XMonad.Hooks.Place
+import XMonad.Hooks.FadeInactive
+import XMonad.Hooks.UrgencyHook
+import XMonad.Config.Gnome
+import XMonad.Util.Run
+import XMonad.Util.EZConfig
+import XMonad.Actions.CycleWS
+import XMonad.Actions.Promote
+import XMonad.Actions.RotSlaves
+import qualified XMonad.StackSet as S
+import System.IO
+import XMonad.Layout.NoBorders
+import XMonad.Layout.Tabbed
+import XMonad.Layout.Spiral
+import XMonad.Layout.MosaicAlt
+import XMonad.Layout.ThreeColumns
+import qualified Data.Map as M
+import System.Exit
+
+-- defines
+
+myModMask = mod4Mask -- Windows key
+myTerminal = "x-terminal-emulator"
+myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
+upperRowKeys = [ xK_quotedbl,
+ xK_guillemotleft,
+ xK_guillemotright,
+ xK_parenleft,
+ xK_parenright,
+ xK_at,
+ xK_plus,
+ xK_minus,
+ xK_slash,
+ xK_asterisk ]
+numberOfWS = 4
+
+myWSKeys = [ ((m .|. myModMask, k), windows $ f i)
+ | (i, k) <- take numberOfWS (zip myWorkspaces upperRowKeys),
+ (f, m) <- [(S.greedyView, 0), (S.shift, shiftMask)]]
+
+-- X Y W H
+myDefaultDialogSize = S.RationalRect (1/4) (1/4) (1/2) (1/2)
+
+myKeys = [
+ ((myModMask .|. shiftMask, xK_Return ), spawn $ myTerminal),
+ ((myModMask, xK_m ), windows S.focusMaster ),
+ ((myModMask .|. shiftMask, xK_m ), promote ),
+ ((myModMask .|. shiftMask, xK_Tab ), rotAllUp ),
+ ((myModMask , xK_space ), sendMessage NextLayout),
+ ((myModMask, xK_q ), kill),
+ ((myModMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)),
+ ((myModMask .|. shiftMask, xK_r ), spawn "xmonad --recompile && xmonad --restart"),
+ (( 0, xK_Print ), spawn "gnome-screenshot -i"),
+ ((myModMask, xK_b ), sendMessage ToggleStruts),
+ -- S.
+ ((myModMask, xK_d ), withFocused $ windows . (`S.float` myDefaultDialogSize)),
+ ((myModMask .|. shiftMask, xK_d ), withFocused $ windows . S.sink),
+ -- ((myModMask .|. shiftMask, xK_b ), sendMessage (SetStruts [D] [])),
+
+ -- Vi-like bindings for modifying layout
+ ((myModMask, xK_t ), windows S.focusDown ),
+ ((myModMask, xK_s ), windows S.focusUp ),
+ ((myModMask .|. shiftMask , xK_t ), windows S.swapDown ),
+ ((myModMask .|. shiftMask , xK_s ), windows S.swapUp ),
+ ((myModMask .|. controlMask, xK_t ), sendMessage Shrink ),
+ ((myModMask .|. controlMask, xK_s ), sendMessage Expand ),
+ ((myModMask .|. shiftMask , xK_n ), sendMessage (IncMasterN (1))),
+ ((myModMask , xK_n ), sendMessage (IncMasterN (-1)))
+ ] ++ myWSKeys
+
+
+fib :: Int -> Int
+fib 0 = 0
+fib 1 = 1
+fib n = fib (n-1) + fib (n-2)
+
+golden :: Int -> Rational
+golden n = toRational (fib n) / toRational (fib (n-1))
+
+myLayouts = tall ||| threeCol ||| Mirror tall ||| threeCol ||| mosaic ||| simpleTabbed ||| Full
+ where
+ mosaic = MosaicAlt M.empty
+ mySpiral = spiral ratio
+ tall = Tall nmaster delta ratio
+ threeCol = ThreeCol nmaster delta ratio
+ nmaster = 2
+ delta = 3/100
+ ratio = 2/3
+
+fadingHook = fadeInactiveLogHook fadeAmount
+ where fadeAmount = 0.7
+
+-- Run
+main = do
+ xmproc <- spawnPipe "xmobar"
+ xmonad
+ $ withUrgencyHook dzenUrgencyHook { args = ["-bg", "darkgreen", "-xs", "1"] }
+ $ ewmh
+ $ gnomeConfig {
+ terminal = myTerminal,
+ borderWidth = 0,
+ focusFollowsMouse = False,
+ workspaces = take numberOfWS myWorkspaces,
+ manageHook = manageDocks <+>
+ placeHook (smart (0.5, 0.5)) <+>
+ manageHook defaultConfig,
+ layoutHook = avoidStruts $ myLayouts,
+ logHook = fadingHook >> dynamicLogWithPP xmobarPP {
+ ppOutput = hPutStrLn xmproc,
+ ppTitle = xmobarColor "green" "" . shorten 50
+ },
+ modMask = myModMask -- windows key
+ } `removeKeys` [
+ (myModMask, xK_Return)
+ ] `additionalKeys` myKeys
\ No newline at end of file