Xmonad/Config archive/Eric Mertens' xmonad.hs

From HaskellWiki
< Xmonad‎ | Config archive
Revision as of 21:56, 6 November 2007 by Gwern (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
import XMonad
import XMonad.Actions.RotView ( rotView )
import XMonad.Config ( defaultConfig )
import XMonad.Core ( xmonad )
import XMonad.Hooks.DynamicLog
import XMonad.Layouts ( (|||), Full(..) )
import XMonad.Layout.LayoutHints ( layoutHints )
import XMonad.Layout.TilePrime ( TilePrime(TilePrime) )
import XMonad.Prompt
import XMonad.Prompt.Shell

import qualified Data.Map as Map
import Data.Ratio
import Graphics.X11

main = xmonad $ defaultConfig
                  { borderWidth        = 2
                  , normalBorderColor  = "#cccccc"
                  , focusedBorderColor = "#cd8b00"
                  , terminal           = "urxvtc"
                  , workspaces         = ["main","net","www"]
                                         ++ map show [4..9]
                  , defaultGaps        = [(18,0,0,0)]
                  , modMask            = mod4Mask
                  , logHook            = dynamicLogWithPP myPP
                  , mouseBindings      = myMouse `joinMap`
                                           mouseBindings defaultConfig
                  , keys               = myKeys `joinMap` keys defaultConfig
                  , layoutHook         = Layout
                                            $ TilePrime 1 (3%100) (1%2) False
                                          ||| TilePrime 1 (3%100) (1%2) True
                                          ||| layoutHints Full
                  }

joinMap m n c = m c `Map.union` n c

myKeys (XConfig {modMask = modm}) = Map.fromList $
  [ ((modm, xK_p), shellPrompt myPromptConfig)
  , ((0, 0x1008ff12), spawn "amixer -q set Front toggle")
  , ((0, 0x1008ff13), spawn "amixer -q set PCM 2dB+")
  , ((0, 0x1008ff11), spawn "amixer -q set PCM 2dB-")
  ]

myPromptConfig = defaultXPConfig
                   { position = Top
                   , promptBorderWidth = 0
                   }

myMouse (XConfig {XMonad.modMask = modMask}) = Map.fromList $
    [ ((modMask, button4), (\_ -> rotView True))
    , ((modMask, button5), (\_ -> rotView False))
    ]

myPP = defaultPP
         { ppCurrent  = dzenColor "white" "#222222" . pad
         , ppVisible  = dzenColor "black" "#999999" . pad
         , ppHidden   = dzenColor "black" "#cccccc" . pad
         , ppHiddenNoWindows = const ""
         , ppWsSep    = ""
         , ppSep      = ""
         , ppLayout   = dzenColor "black" "#cccccc" .
                        (\ x -> case x of
                                  "TilePrime Horizontal" ->
                                    " ^i(/home/emertens/images/tile_horz.xpm) "
                                  "TilePrime Vertical"   ->
                                    " ^i(/home/emertens/images/tile_vert.xpm) "
                                  "Hinted Full"          ->
                                    " ^i(/home/emertens/images/fullscreen.xpm) "
                                  _                      -> pad x
                        )
         , ppTitle    = (' ':) . escape
         }
  where
  escape = concatMap (\x -> if x == '^' then "^^" else [x])
  pad = wrap " " " "