diff -r 000000000000 -r df7496e40bee xmonad/xmonad.hs --- /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