rendered paste bodyimport 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")]