All pastes #1261773 Raw Edit

xmonad

public text v1 · immutable
#1261773 ·published 2008-11-19 22:14 UTC
rendered paste body
import IO
import System.Exit
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Layout.NoBorders
import XMonad.Util.Run
import XMonad.Actions.FindEmptyWorkspace
import XMonad.Actions.FlexibleManipulate as Flex
import XMonad.Hooks.ManageDocks
import XMonad.Util.Dzen
import XMonad.Hooks.UrgencyHook


import qualified XMonad.StackSet as W
import qualified Data.Map as M


main = do
	xmobar <- spawnPipe "xmobar /home/tobsi/.xmobarrc"
	xmonad $ defaultConfig {
		terminal = urxvt,
		focusFollowsMouse = mouseFocus,
		borderWidth = 1,
		focusedBorderColor = "#FFFF00",
		normalBorderColor = "#111111",
		modMask = mod4Mask,
		numlockMask = mod2Mask,
		workspaces = map show [1..9],
		keys = keyBindings,
		mouseBindings = mouse,
		layoutHook = layouts,
		manageHook = manageHooks,
		logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmobar },
		startupHook = return ()
	}

urxvt = "urxvt -bg black -fg white -sl 5000"

keyBindings conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ [	
	 ((modMask, xK_Return), spawn $ XMonad.terminal conf)
	,((modMask .|. shiftMask, xK_c), kill)
	,((modMask, xK_space), sendMessage NextLayout)
	,((modMask, xK_n), refresh)
	,((modMask, xK_Tab), windows W.focusDown)
	,((modMask, xK_m), windows W.focusMaster)
	,((modMask .|. shiftMask, xK_Return),windows W.swapMaster)
	,((modMask, xK_l),windows W.swapDown)
	,((modMask, xK_r),windows W.swapUp)
	,((modMask, xK_h), sendMessage Shrink)
	,((modMask, xK_i), sendMessage Expand)
	,((modMask, xK_t), withFocused $ windows . W.sink)
	,((modMask .|. shiftMask, xK_q),io (exitWith ExitSuccess))
	,((modMask, xK_q), broadcastMessage ReleaseResources >> restart "xmonad" True) ] 
	++ 
	[	
	((m .|. modMask, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] 
	++ 
	[	
	((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
        | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
        , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] ]

mouse (XConfig {XMonad.modMask = modMask}) =
    M.fromList $
         [ ((modMask, button1), (\w -> focus w >> Flex.mouseWindow Flex.position w))
         , ((modMask, button3), (\w -> focus w >> Flex.mouseWindow Flex.resize w)) ]

layouts = avoidStrutsOn [U] (tiled ||| Mirror tiled ||| Full)
	where
	-- tiled
	tiled = Tall nmaster delta ratio
	nmaster = 1
	ratio = 1/2
	delta = 5/100

-- focus follows mouse
mouseFocus = True

-- special apps
manageHooks = composeAll [className =? "Gran Paradiso" --> doF (W.shift "2")]