Xmonad/Config archive/skorpan's xmonad.hs
< Xmonad | Config archive
Jump to navigation
Jump to search
import XMonad
import System.Exit
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run (spawnPipe)
import System.IO (hPutStrLn)
import qualified XMonad.StackSet as W
import qualified Data.Map as M
dmenuExec =
"exe=`dmenu_path | dmenu -b -nb black -nf white -sb gray -sf black` && eval \"exec $exe\""
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, xK_Return), spawn $ XMonad.terminal conf)
, ((modMask, xK_p ), spawn dmenuExec)
, ((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_e ), windows W.focusDown)
, ((modMask, xK_Right ), windows W.focusDown)
, ((modMask, xK_k ), windows W.focusUp )
, ((modMask, xK_Left ), windows W.focusUp )
, ((modMask, xK_m ), windows W.focusMaster )
, ((modMask .|. shiftMask, xK_Return), windows W.swapMaster)
, ((modMask .|. shiftMask, xK_e ), windows W.swapDown )
, ((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_b ), sendMessage ToggleStruts)
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
, ((modMask , xK_q ),
broadcastMessage ReleaseResources >> restart "xmonad" True)
]
++
[((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
, ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
, ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
]
myLayout = avoidStruts (tall ||| Mirror tall ||| Full)
where
tall = Tall nmaster delta ratio
nmaster = 1
ratio = 1/2
delta = 2/100
myManageHook = composeAll
[ className =? "MPlayer" --> doFloat
, className =? "Gimp" --> doFloat
, resource =? "desktop_window" --> doIgnore
, resource =? "kdesktop" --> doIgnore ] <+> manageDocks
myLogHook h = dynamicLogWithPP $ defaultPP {
ppCurrent = dzenColor "black" "white" . pad
, ppVisible = dzenColor "white" "#333333" . pad
, ppHidden = dzenColor "white" "#333333" . pad
, ppHiddenNoWindows = dzenColor "#777777" "#333333" . pad
, ppUrgent = dzenColor "red" "yellow"
, ppWsSep = ""
, ppSep = ""
, ppLayout = dzenColor "white" "#333333" .
(\ x -> fill (case x of
"Tall" -> icon "tall.xbm"
"Mirror Tall" -> icon "mtall.xbm"
"Full" -> icon "full.xbm"
_ -> pad x) 4)
, ppTitle = ("^fg(white) " ++) . dzenEscape
, ppOutput = hPutStrLn h
}
where
icon h = "^i(/home/deniz/usr/share/dzen2/icons/" ++ h ++ ")"
fill :: String -> Int -> String
fill h i = "^p(" ++ show i ++ ")" ++ h ++ "^p(" ++ show i ++ ")"
myStatusBar = "dzen2 -fn '-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*' -bg '#222222' -fg '#777777' -h 16 -w 1280 -sa c -e '' -ta l"
main = do din <- spawnPipe myStatusBar
xmonad $ defaultConfig {
terminal = "urxvtc",
focusFollowsMouse = True,
borderWidth = 1,
modMask = mod4Mask,
numlockMask = mod2Mask,
workspaces = ["irc","web","dev","4","5","6","7","warez","music"],
normalBorderColor = "#000000",
focusedBorderColor = "#ff0000",
-- key bindings
keys = myKeys,
mouseBindings = myMouseBindings,
-- hooks, layouts
layoutHook = myLayout,
manageHook = myManageHook,
logHook = myLogHook din
}