{-# OPTIONS_GHC -fno-warn-missing-signatures #-} module XMonad.Config.Sjanssen (sjanssenConfig) where import XMonad hiding (Tall(..)) import qualified XMonad.StackSet as W import XMonad.Actions.CopyWindow import XMonad.Layout.Tabbed import XMonad.Layout.HintedTile import XMonad.Config (defaultConfig) import XMonad.Layout.NoBorders import XMonad.Hooks.DynamicLog hiding (xmobar) import XMonad.Hooks.ManageDocks import XMonad.Prompt import XMonad.Prompt.Shell import XMonad.Util.Run (spawnPipe) import qualified Data.Map as M import System.IO (hPutStrLn) sjanssenConfig = do xmobar <- spawnPipe "xmobar" return $ defaultConfig { terminal = "urxvtc" , workspaces = ["irc", "web"] ++ map show [3 .. 9 :: Int] , logHook = dynamicLogWithPP $ sjanssenPP { ppOutput = hPutStrLn xmobar } , mouseBindings = \(XConfig {modMask = modm}) -> M.fromList $ [ ((modm, button1), (\w -> focus w >> mouseMoveWindow w)) , ((modm, button2), (\w -> focus w >> windows W.swapMaster)) , ((modm.|. shiftMask, button1), (\w -> focus w >> mouseResizeWindow w)) ] , keys = \c -> mykeys c `M.union` keys defaultConfig c , layoutHook = modifiers layouts , manageHook = composeAll [className =? x --> doF (W.shift w) | (x, w) <- [ ("Firefox", "web") , ("Ktorrent", "7")]] <+> manageHook defaultConfig <+> manageDocks } where tiled = HintedTile 1 0.03 0.5 TopLeft layouts = (tiled Tall ||| (tiled Wide ||| Full)) ||| tabbed shrinkText myTheme modifiers = avoidStruts . smartBorders mykeys (XConfig {modMask = modm, workspaces = ws}) = M.fromList $ [((modm, xK_p ), shellPrompt myPromptConfig) ,((modm .|. shiftMask, xK_c ), kill1) ,((modm .|. shiftMask .|. controlMask, xK_c ), kill) ,((modm .|. shiftMask, xK_0 ), windows $ \w -> foldr copy w ws) ,((modm, xK_b ), sendMessage ToggleStruts) ] myFont = "xft:Bitstream Vera Sans Mono:pixelsize=10" myTheme = defaultTheme { fontName = myFont } myPromptConfig = defaultXPConfig { position = Top , font = myFont , promptBorderWidth = 0 }