summaryrefslogtreecommitdiff
path: root/xmonad.hs
blob: e77f0ebf3dd7cf5493df7a8b3e01138b530d8044 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import           XMonad
import           XMonad.Config.Desktop
import           XMonad.Layout.NoBorders
import           XMonad.Layout.Tabbed
import           XMonad.Layout.AvoidFloats
import XMonad.Layout.Monitor
import XMonad.Util.EZConfig (additionalKeys)
import XMonad.Actions.PhysicalScreens

main :: IO ()
main = xmonad $ desktopConfig {
            terminal = "xterm"
          , layoutHook = desktopLayoutModifiers layouts
          , modMask = theModMask
    } `additionalKeys` myKeys

  where

    theModMask = mod4Mask
    modm = theModMask

    myKeys = [((theModMask, xK_u ), broadcastMessage ToggleMonitor >> refresh)] ++ fixScreenOrder

    fixScreenOrder = [((modm .|. mask, key), f sc) | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..],
                                                     (f, mask) <- [(viewScreen def, 0), (sendToScreen def, shiftMask)]]

    layouts = noBorders Full
              ||| noBorders (tabbed shrinkText def)
              ||| smartBorders tiled
              ||| smartBorders (Mirror tiled)
    tiled = avoidFloats $ Tall nmaster delta ratio
    nmaster = 1 -- The default number of windows in the master pane
    ratio = 2 / 3 -- Default proportion of screen occupied by master pane
    delta = 3 / 100 -- Percent of screen to increment by when resizing panes