Personal tools

Xmonad/Config archive/void’s xmonad.hs

From HaskellWiki

< Xmonad | Config archive
Revision as of 18:21, 19 October 2008 by Void (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
import XMonad hiding ((|||))
import XMonad.ManageHook
import qualified XMonad.StackSet as W
 
import XMonad.Actions.CycleWS
import XMonad.Actions.Promote
 
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.UrgencyHook
 
import XMonad.Layout.DwmStyle
import XMonad.Layout.IM
import XMonad.Layout.LayoutCombinators
import XMonad.Layout.Named
import XMonad.Layout.NoBorders
import XMonad.Layout.PerWorkspace
import XMonad.Layout.Reflect
import XMonad.Layout.ResizableTile
import XMonad.Layout.Tabbed
 
import XMonad.Util.EZConfig
import XMonad.Util.Run
import XMonad.Util.Scratchpad
 
import Data.Ratio ((%))
 
statusBarCmd= "dzen2 -e '' -w 1000 -ta l -fn '-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*' -bg black -fg #d3d7cf "
 
main = do 
       din <- spawnPipe statusBarCmd
       xmonad $ withUrgencyHook dzenUrgencyHook { args = ["-fn", "-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*","-bg", "yellow", "-fg", "black"] } $ defaultConfig
                     { borderWidth        = 2
                     , workspaces         = ["1:main","2:im","3:web","4:mail"] ++ map show [5..9] 
                     , terminal           = "urxvtc"
                     , modMask            = mod4Mask
                     , manageHook         = myManageHook <+> manageHook defaultConfig <+> manageDocks <+> scratchpadManageHookDefault
                     , logHook            = dynamicLogWithPP $ myPP din
                     , layoutHook         = myLayouts
                     }
                     `additionalKeysP` myKeys din
 
myManageHook  = composeAll [ className =? "Pidgin"         --> doF (W.shift "2:im")
                           , className =? "Firefox"        --> doF (W.shift "3:web")
                           , className =? "Gran Paradiso"  --> doF (W.shift "3:web")
                           , title     =? "mutt"           --> doF (W.shift "4:mail")
                           ]
 
myKeys conf = [ ("M-<Return>", spawn "urxvtc")
              , ("M-p",        spawn "dmenu_run")
              , ("M-c",        kill)
              -- run programs
              , ("M-f",        spawn "firefox")
              , ("M-e",        spawn "pcmanfm")
              , ("M-s",        scratchpadSpawnActionTerminal "urxvtc")
              -- resize tile
              , ("M-a",        sendMessage MirrorShrink)
              , ("M-z",        sendMessage MirrorExpand)
              -- moving workspaces
              , ("M-<Left>",    prevWS)
              , ("M-<Right>",   nextWS)
              , ("M-S-<Left>",  shiftToPrev)
              , ("M-S-<Right>", shiftToNext)
              , ("M-<Tab>",     toggleWS)
 
              , ("M-S-<Return>", promote)
 
              , ("M-u", focusUrgent)
              ]
 
myPP h = defaultPP 
                 {  ppCurrent = wrap "^fg(#000000)^bg(#a6c292) " " ^fg()^bg()"
                  , ppHidden  = wrap "^i(/home/void/.dzen/has_win_nv.xbm)" " "
                  , ppHiddenNoWindows  = wrap " " " "
                  , ppSep     = " ^fg(grey60)^r(3x3)^fg() "
                  , ppWsSep   = ""
                  , ppLayout  = dzenColor "#80AA83" "" .
                                (\x -> case x of
                                         "Tall"  -> "^i(/home/void/.dzen/tall.xbm)"
                                         "Mirror" -> "^i(/home/void/.dzen/mtall.xbm)"
                                         "Tabs" -> "Tabs"
                                         "IM"  -> "IM"
                                )
                  , ppTitle   = dzenColor "white" "" . wrap "< " " >" 
                  , ppOutput  = hPutStrLn h
                  }
 
myTheme = defaultTheme { decoHeight = 16
                        , activeColor = "#a6c292"
                        , activeBorderColor = "#a6c292"
                        , activeTextColor = "#000000"
                        , inactiveBorderColor = "#000000"
                        }
 
myLayouts = avoidStruts $ smartBorders $ 
  onWorkspace "2:im" (named "IM" (reflectHoriz $ withIM (1%8) (Title "Buddy List") (reflectHoriz $ dwmStyle shrinkText myTheme tiled ||| (smartBorders $ tabs)))) $ 
  onWorkspace "3:web" (tabs) $ 
  (tiled ||| named "Mirror" (Mirror tiled) ||| tabs)
    where
      tiled = named "Tall" (ResizableTall 1 (3/100) (1/2) [])
      tabs = named "Tabs" (tabbed shrinkText myTheme)