From de0ac7e06e82aecb9a3c79dbb0a60adeec544b2e Mon Sep 17 00:00:00 2001
From: Tom Willemsen <tom@ryuslash.org>
Date: Fri, 15 Feb 2013 00:35:52 +0100
Subject: [PATCH] Add XMonad config

---
 Makefile          |  2 +-
 xmonad/.gitignore |  3 +++
 xmonad/Makefile   | 10 ++++++++++
 xmonad/xmonad.hs  | 48 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 xmonad/.gitignore
 create mode 100644 xmonad/Makefile
 create mode 100644 xmonad/xmonad.hs

diff --git a/Makefile b/Makefile
index 2c76217..ffcb9cb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 export DESTDIR:=$(HOME)
 modules=.emacs.d .config .conkerorrc .local .moc .mutt .ncmpcpp \
-	.pentadactyl .sawfish .ssh .w3m .weechat .zsh
+	.pentadactyl .sawfish .ssh .w3m .weechat .zsh xmonad
 objects=.bash_profile .beetsconfig .conky_box.lua .conkyrc .gitconfig \
 	.guile .hgrc .offlineimap.py .offlineimaprc .screenrc .scwmrc \
 	.slrnrc .stumpwmrc .tmux.conf .urlview .xbindkeysrc.scm .Xdefaults \
diff --git a/xmonad/.gitignore b/xmonad/.gitignore
new file mode 100644
index 0000000..11a024e
--- /dev/null
+++ b/xmonad/.gitignore
@@ -0,0 +1,3 @@
+*.o
+xmonad-x86_64-linux
+xmonad.hi
diff --git a/xmonad/Makefile b/xmonad/Makefile
new file mode 100644
index 0000000..9b8d3c3
--- /dev/null
+++ b/xmonad/Makefile
@@ -0,0 +1,10 @@
+DESTDIR := $(DESTDIR)/.xmonad
+objects=xmonad-x86_64-linux xmonad.hs
+
+GHC := ghc
+
+include ../dotfiles.mk
+
+xmonad-x86_64-linux: xmonad.hs
+	$(GHC) --make $^ -i -ilib -fforce-recomp -main-is main  -v0 -o $@
+install-xmonad-x86_64-linux: MODE=744
diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs
new file mode 100644
index 0000000..40ec269
--- /dev/null
+++ b/xmonad/xmonad.hs
@@ -0,0 +1,48 @@
+--
+-- It overrides a few basic settings, reusing all other defaults.
+--
+
+import XMonad
+import XMonad.Actions.WindowGo
+import XMonad.Hooks.FadeInactive
+import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.ManageHelpers
+import XMonad.Util.EZConfig
+
+import qualified XMonad.StackSet as W
+
+myLogHook :: X ()
+myLogHook = fadeOutLogHook fadeRules
+
+fadeRules :: Query Rational
+fadeRules = do
+  fullscreen <- isFullscreen
+  conkeror <- className =? "Conkeror"
+  return $ case () of _ | fullscreen -> 1
+                        | conkeror -> 0.95
+                        | otherwise -> 0.9
+
+main = xmonad $ defaultConfig
+       { terminal = "urxvt"
+       , focusFollowsMouse = False
+       , clickJustFocuses = False
+       , modMask = mod4Mask
+       , layoutHook = avoidStruts $ layoutHook defaultConfig
+       , logHook = myLogHook
+       , manageHook = manageHook defaultConfig <+> manageDocks }
+       `additionalKeysP`
+       [
+         ("C-z ,", screenWorkspace 0 >>= flip whenJust (windows . W.view)),
+         ("C-z .", screenWorkspace 1 >>= flip whenJust (windows . W.view)),
+         ("C-z S-c", spawn "urxvt"),
+         ("C-z S-e", spawn "emacsclient -ca emacs"),
+         ("C-z c", runOrRaiseNext "urxvt" (className =? "URxvt")),
+         ("C-z e", runOrRaiseNext "emacsclient -ca emacs" (className =? "Emacs")),
+         ("C-z w", runOrRaiseNext "conkeror" (className =? "Conkeror")),
+         ("M-S-1", spawn "dmenu_run"),
+         ("M-n", windows W.focusDown),
+         ("M-p", windows W.focusUp),
+         ("M1-C-l", spawn "i3lock -c 000000")
+       ]
+       `removeKeysP`
+       [ ("M-j"), ("M-k") ]