Xmonad/Config archive/Ray's xmonad.hs

From HaskellWiki
< Xmonad‎ | Config archive
Revision as of 06:47, 9 November 2007 by Ray (talk | contribs) (new managehook system and type signatures)
Jump to navigation Jump to search
import XMonad
import XMonad.Layouts
import XMonad.Operations
import XMonad.ManageHook
import XMonad.Hooks.DynamicLog
import XMonad.Layout.NoBorders
import XMonad.Prompt
import XMonad.Prompt.Ssh
import XMonad.Prompt.XMonad
import qualified XMonad.StackSet as W
import Graphics.X11
import qualified Data.Map as M
import System.IO.UTF8
import Data.Ratio
import Data.Bits

main :: IO ()
main = xmonad rayConfig

rayConfig :: XConfig
rayConfig = defaultConfig
            { normalBorderColor        = "#333333"
            , focusedBorderColor       = "#0000ff"
            , workspaces               = ["α","β","γ","δ","ε","ζ"]
            , terminal                 = "rayterm"
            , defaultGaps              = [(18,0,0,0)]
            , modMask                  = mod4Mask
            , manageHook               = rayManageHook
            , logHook                  = dynamicLogWithPP rayPP
            , keys                     = \c -> rayKeys c `M.union` keys defaultConfig c
            , layoutHook               = Layout
                                         $   Mirror (Tall 1 0 (1%2))
                                         ||| (noBorders Full)
            }

rayManageHook :: ManageHook
rayManageHook = composeAll . concat $
                [ [ className =? c --> doFloat | c <- floats]
                , [ className =? "Opera" --> doF (W.shift "β") ]]
    where floats = ["MPlayer", "Gimp","xli"]

rayKeys :: XConfig -> M.Map (KeyMask, KeySym) (X ())
rayKeys (XConfig {modMask = modm}) = M.fromList $
                                     [ ((modm                , xK_s), sshPrompt defaultXPConfig)
                                     , ((modm .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
                                     ]

rayPP :: PP
rayPP = PP { ppCurrent         = wrap "^fg(#ff0000)\"" "\"^fg()"
           , ppVisible         = wrap "^fg(#a00000)\"" "\"^fg()"
           , ppHidden          = wrap "^fg(#ffffff)\"" "\"^fg()"
           , ppHiddenNoWindows = wrap "^fg(#555555)\"" "\"^fg()"
           , ppSep             = "   "
           , ppWsSep           = ","
           , ppTitle           = shorten 80
           , ppLayout          = (++) "layout = "
           , ppOrder           = (take 2) . workspaceTag
           , ppOutput          = System.IO.UTF8.putStrLn
           }
    where workspaceTag (x:xs) = ("workspaces = [" ++ x ++ "]") : xs