--- /dev/null
+import Graphics.X11
+import XMonad
+import XMonad.Layout
+import XMonad.Layout.Reflect
+import XMonad.Layout.NoBorders
+import XMonad.Prompt
+import XMonad.Prompt.Shell
+import XMonad.Actions.NoBorders
+import Data.Bits ((.|.))
+import qualified Data.Map as M
+import Data.Map ((!))
+
+
+defaults = defaultConfig {
+ modMask = mod4Mask
+ --, terminal = "rxvt-unicode +sb -bg black -fg white -fn 6x13"
+ , terminal = "gnome-terminal"
+ , keys = \x -> (M.fromList $ mykeys x) `M.union` dvorakify (keys defaultConfig x)
+ , layoutHook = smartBorders $ tiled ||| Mirror tiled ||| reflectHoriz tiled ||| Full
+ , manageHook = myManageHook <+> manageHook defaultConfig
+} where
+ mykeys x = [
+ ( (modMask x, xK_Return), spawn $ terminal defaults )
+ , ( (modMask x .|. mod1Mask , xK_1), spawn "xrandr --output TMDS-1 --mode 1680x1050 --left-of LVDS" )
+ , ( (modMask x .|. mod1Mask , xK_2), spawn "xrandr --output TMDS-1 --off" )
+ , ( (modMask x .|. shiftMask, xK_semicolon), withFocused toggleBorder )
+ ]
+ tiled = Tall nmaster delta ratio
+ nmaster = 1
+ ratio = 0.5
+ delta = 0.03
+ dvorakify kl = M.fromList $ map (\((m, k), d) -> ((m, dk k), d)) $ M.toList kl
+ myManageHook = composeAll [
+ className =? "Xpdf" --> doFloat
+ ]
+
+dk :: KeySym -> KeySym
+dk k | k == xK_minus = xK_bracketleft
+ | k == xK_underscore = xK_braceleft
+
+ | k == xK_equal = xK_bracketright
+ | k == xK_plus = xK_braceright
+
+ | k == xK_bracketleft = xK_slash
+ | k == xK_braceleft = xK_question
+
+ | k == xK_bracketright = xK_equal
+ | k == xK_braceright = xK_plus
+
+ | k == xK_semicolon = xK_s
+ | k == xK_colon = xK_S
+
+ | k == xK_apostrophe = xK_minus
+ | k == xK_quotedbl = xK_underscore
+
+ | k == xK_comma = xK_w
+ | k == xK_less = xK_W
+
+ | k == xK_period = xK_v
+ | k == xK_greater = xK_V
+
+ | k == xK_slash = xK_z
+ | k == xK_question = xK_Z
+
+ | k == xK_Q = xK_quotedbl
+ | k == xK_W = xK_less
+ | k == xK_E = xK_greater
+ | k == xK_R = xK_P
+ | k == xK_T = xK_Y
+ | k == xK_Y = xK_F
+ | k == xK_U = xK_G
+ | k == xK_I = xK_C
+ | k == xK_O = xK_R
+ | k == xK_P = xK_L
+ | k == xK_A = xK_A
+ | k == xK_S = xK_O
+ | k == xK_D = xK_E
+ | k == xK_F = xK_U
+ | k == xK_G = xK_I
+ | k == xK_H = xK_D
+ | k == xK_J = xK_H
+ | k == xK_K = xK_T
+ | k == xK_L = xK_N
+ | k == xK_Z = xK_colon
+ | k == xK_X = xK_Q
+ | k == xK_C = xK_J
+ | k == xK_V = xK_K
+ | k == xK_B = xK_X
+ | k == xK_N = xK_B
+ | k == xK_M = xK_M
+
+ | k == xK_q = xK_apostrophe
+ | k == xK_w = xK_comma
+ | k == xK_e = xK_period
+ | k == xK_r = xK_p
+ | k == xK_t = xK_y
+ | k == xK_y = xK_f
+ | k == xK_u = xK_g
+ | k == xK_i = xK_c
+ | k == xK_o = xK_r
+ | k == xK_p = xK_l
+ | k == xK_a = xK_a
+ | k == xK_s = xK_o
+ | k == xK_d = xK_e
+ | k == xK_f = xK_u
+ | k == xK_g = xK_i
+ | k == xK_h = xK_d
+ | k == xK_j = xK_h
+ | k == xK_k = xK_t
+ | k == xK_l = xK_n
+ | k == xK_z = xK_semicolon
+ | k == xK_x = xK_q
+ | k == xK_c = xK_j
+ | k == xK_v = xK_k
+ | k == xK_b = xK_x
+ | k == xK_n = xK_b
+ | k == xK_m = xK_m
+
+ | otherwise = k
+
+main = xmonad defaults