module XMonad.Config.Sjanssen (sjanssenConfig) where
import XMonad
import qualified XMonad.StackSet as W
import XMonad.Layouts
import XMonad.Layout.Tabbed
import XMonad.Operations
import XMonad.Config (defaultConfig)
import XMonad.Layout.NoBorders
import XMonad.Hooks.DynamicLog
import XMonad.Prompt
import XMonad.Prompt.Shell
import Data.Ratio
import Data.Bits
import qualified Data.Map as M
import Graphics.X11
sjanssenConfig = defaultConfig
{ defaultGaps = [(15,0,0,0)]
, terminal = "urxvt"
, workspaces = ["irc", "web"] ++ map show [3..7] ++ ["mail", "im"]
, logHook = dynamicLogWithPP sjanssenPP
, modMask = mod4Mask
, mouseBindings = \(XConfig {modMask = modMask}) -> M.fromList $
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
, ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
, ((modMask .|. shiftMask, button1), (\w -> focus w >> mouseResizeWindow w)) ]
, keys = \c -> mykeys c `M.union` keys defaultConfig c
, layoutHook = Layout (smartBorders (tiled ||| Mirror tiled ||| Full ||| tabbed shrinkText defaultTConf))
}
where
mykeys (XConfig {modMask = modMask}) = M.fromList $
[((modMask, xK_p ), shellPrompt myPromptConfig)]
-- default tiling algorithm partitions the screen into two panes
tiled = Tall nmaster delta ratio
-- The default number of windows in the master pane
nmaster = 1
-- Default proportion of screen occupied by master pane
ratio = 1%2
-- Percent of screen to increment by when resizing panes
delta = 3%100
myPromptConfig = defaultXPConfig
{ position = Top
, promptBorderWidth = 0
}