Xmonad/Config archive/Wraithan's xmonad.hs
< Xmonad | Config archive
import XMonad hiding (Tall)
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Layout.HintedTile
import XMonad.Layout.LayoutHints (layoutHints)
import XMonad.Prompt
import XMonad.Prompt.Shell
import XMonad.Util.Run(spawnPipe)
import System.Exit
import System.IO
import Data.Monoid
import qualified XMonad.StackSet as W
import qualified Data.Map as M
main = do
xmproc <- spawnPipe "xmobar"
xmonad $ defaultConfig {
terminal = "urxvt -fg white",
modMask = mod4Mask,
workspaces = ["1:Chat", "2:Web", "3:Code", "4:Terms", "5", "6", "7", "8", "9:Music"],
normalBorderColor = "#333333",
focusedBorderColor = "#333399",
manageHook = composeAll [],
keys = myKeys,
mouseBindings = myMouseBindings,
layoutHook = myLayout,
logHook = dynamicLogWithPP $ xmobarPP {
ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor "green" "" . shorten 50
}
}
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, xK_Return), spawn $ XMonad.terminal conf)
, ((modMask, xK_F2 ), shellPrompt defaultXPConfig)
, ((modMask .|. shiftMask, xK_c ), kill)
, ((modMask, xK_space ), sendMessage NextLayout)
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
, ((modMask, xK_n ), refresh)
, ((modMask, xK_Tab ), windows W.focusDown)
, ((modMask, xK_j ), windows W.focusDown)
, ((modMask, xK_k ), windows W.focusUp)
, ((modMask, xK_m ), windows W.focusMaster)
, ((modMask .|. shiftMask, xK_Return), windows W.swapMaster)
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown)
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp)
, ((modMask, xK_h ), sendMessage Shrink)
, ((modMask, xK_l ), sendMessage Expand)
, ((modMask, xK_t ), withFocused $ windows . W.sink)
, ((modMask , xK_comma ), sendMessage (IncMasterN 1))
, ((modMask , xK_period), sendMessage (IncMasterN (-1)))
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
, ((modMask , xK_q ), spawn "xmonad --recompile; xmonad --restart")
, ((modMask , xK_y ), windows $ W.greedyView (XMonad.workspaces conf !! 9))
, ((modMask , xK_Page_Up ), spawn "amixer sset Master +5")
, ((modMask , xK_Page_Down), spawn "amixer sset Master -5")
, ((modMask , xK_less ), spawn "mocp --previous")
, ((modMask , xK_greater ), spawn "mocp --next")
, ((modMask , xK_Print ), spawn "scrot -e 'mv $f ~/Screenshots'")
]
++
[((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)]]
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w
>> windows W.shiftMaster))
, ((modMask, button2), (\w -> focus w >> windows W.shiftMaster))
, ((modMask, button3), (\w -> focus w >> mouseResizeWindow w
>> windows W.shiftMaster))
]
myLayout = avoidStruts $ tiled ||| wideTiled ||| Full
where
tiled = HintedTile nmaster delta ratio Center Tall
wideTiled = HintedTile nmaster delta ratio Center Wide
nmaster = 1
ratio = 1/2
delta = 3/100