Difference between revisions of "Xmonad/Config archive/Ray's xmonad.hs"

From HaskellWiki
Jump to navigation Jump to search
(updated my config)
(new managehook system and type signatures)
Line 3: Line 3:
 
import XMonad.Layouts
 
import XMonad.Layouts
 
import XMonad.Operations
 
import XMonad.Operations
  +
import XMonad.ManageHook
 
import XMonad.Hooks.DynamicLog
 
import XMonad.Hooks.DynamicLog
 
import XMonad.Layout.NoBorders
 
import XMonad.Layout.NoBorders
Line 15: Line 16:
 
import Data.Bits
 
import Data.Bits
   
  +
main :: IO ()
 
main = xmonad rayConfig
 
main = xmonad rayConfig
   
  +
rayConfig :: XConfig
 
rayConfig = defaultConfig
 
rayConfig = defaultConfig
 
{ normalBorderColor = "#333333"
 
{ normalBorderColor = "#333333"
Line 32: Line 35:
 
}
 
}
   
rayManageHook :: Window -- ^ the new window to manage
+
rayManageHook :: ManageHook
  +
rayManageHook = composeAll . concat $
-> String -- ^ window title
 
-> String -- ^ window resource name
+
[ [ className =? c --> doFloat | c <- floats]
-> String -- ^ window resource class
+
, [ className =? "Opera" --> doF (W.shift "β") ]]
 
where floats = ["MPlayer", "Gimp","xli"]
-> X (WindowSet -> WindowSet)
 
rayManageHook w _ _ c | c `elem` floats = fmap (W.float w . snd) (floatLocation w)
 
where floats = ["MPlayer", "Gimp", "xli"]
 
rayManageHook _ _ _ "Opera" = return $ W.shift "β"
 
rayManageHook _ _ _ _ = return $ id
 
   
  +
rayKeys :: XConfig -> M.Map (KeyMask, KeySym) (X ())
 
rayKeys (XConfig {modMask = modm}) = M.fromList $
 
rayKeys (XConfig {modMask = modm}) = M.fromList $
[ ((modm , xK_s), sshPrompt defaultXPConfig)
+
[ ((modm , xK_s), sshPrompt defaultXPConfig)
, ((modm .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
+
, ((modm .|. controlMask, xK_x), xmonadPrompt defaultXPConfig)
]
+
]
   
  +
rayPP :: PP
 
rayPP = PP { ppCurrent = wrap "^fg(#ff0000)\"" "\"^fg()"
 
rayPP = PP { ppCurrent = wrap "^fg(#ff0000)\"" "\"^fg()"
 
, ppVisible = wrap "^fg(#a00000)\"" "\"^fg()"
 
, ppVisible = wrap "^fg(#a00000)\"" "\"^fg()"

Revision as of 06:47, 9 November 2007

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