Xmonad/Config archive/skorpan's xmonad.hs
From HaskellWiki
< Xmonad | Config archive(Difference between revisions)
(Updating to new configuration.) |
(Updating.) |
||
| (2 intermediate revisions not shown.) | |||
| Line 1: | Line 1: | ||
| - | <haskell> | + | <haskell>import System.Exit |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
import XMonad | import XMonad | ||
| - | + | import XMonad.Hooks.DynamicLog | |
| - | + | import XMonad.Hooks.ManageDocks | |
| - | + | import XMonad.Layout.NoBorders | |
| - | + | import XMonad.Prompt (defaultXPConfig) | |
| - | + | import XMonad.Prompt.Shell (shellPrompt) | |
| - | + | import XMonad.Util.EZConfig | |
| - | + | ||
| - | import XMonad.Hooks.DynamicLog | + | |
| - | import XMonad.Hooks. | + | |
| - | import XMonad.Layout. | + | |
| - | import XMonad. | + | |
| - | import XMonad. | + | |
| - | import XMonad. | + | |
| - | + | ||
import XMonad.Util.Run | import XMonad.Util.Run | ||
import qualified XMonad.StackSet as W | import qualified XMonad.StackSet as W | ||
| - | + | import qualified Data.Map as M | |
| - | import qualified Data.Map as M | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | |||
| - | |||
| - | |||
| - | + | myKeys c = mkKeymap c $ | |
| - | + | [ ("M-<Return>", spawn $ XMonad.terminal c) | |
| - | + | , ("M-<Space>", sendMessage NextLayout) | |
| - | + | , ("M-<Tab>", windows W.focusDown) | |
| - | + | , ("M-S-<Return>", windows W.swapMaster) | |
| - | + | , ("M-S-c", kill) | |
| - | + | , ("M-S-q", io (exitWith ExitSuccess)) | |
| - | + | , ("M-b", sendMessage ToggleStruts) | |
| - | + | , ("M-h", sendMessage Shrink) | |
| - | + | , ("M-l", sendMessage Expand) | |
| - | + | , ("M-n", refresh) | |
| - | + | , ("M-q", broadcastMessage ReleaseResources >> restart "xmonad" True) | |
| - | + | , ("M-t", withFocused $ windows . W.sink) | |
| - | + | , ("M-x", shellPrompt defaultXPConfig)] | |
| - | + | ++ | |
| - | + | [(m ++ k, windows $ f w) | |
| - | + | | (w, k) <- zip (XMonad.workspaces c) (map show [1..9]) | |
| - | + | , (m, f) <- [("M-",W.greedyView), ("M-S-",W.shift)]] | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $ | |
| - | + | [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w)) | |
| - | + | , ((modMask, button2), (\w -> focus w >> windows W.swapMaster)) | |
| - | [ | + | , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w)) |
| - | + | ||
| - | + | ||
| - | , | + | |
| - | + | ||
| - | , | + | |
] | ] | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | + | myLayoutHook = smartBorders $ avoidStruts $ tiled ||| Mirror tiled ||| Full | |
| - | + | where | |
| - | + | tiled = Tall nmaster delta ratio | |
| - | + | nmaster = 1 | |
| - | + | ratio = 1/2 | |
| - | + | delta = 4/100 | |
| - | + | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| + | myManageHook = composeAll | ||
| + | [ floatC "MPlayer" | ||
| + | , floatC "Gimp" | ||
| + | , moveToC "Conkeror" "2" | ||
| + | ] | ||
| + | where moveToC c w = className =? c --> doF (W.shift w) | ||
| + | moveToT t w = title =? t --> doF (W.shift w) | ||
| + | floatC c = className =? c --> doFloat | ||
| + | |||
| + | |||
| + | myLogHook xmobar = dynamicLogWithPP $ defaultPP { | ||
| + | ppOutput = hPutStrLn xmobar | ||
| + | , ppTitle = xmobarColor "white" "" . shorten 110 | ||
| + | , ppCurrent = xmobarColor "white" "black" . pad | ||
| + | , ppHidden = pad | ||
| + | , ppHiddenNoWindows = \w -> xmobarColor "#444" "" (" " ++ w ++ " ") | ||
| + | , ppSep = xmobarColor "#555" "" " / " | ||
| + | , ppWsSep = "" | ||
| + | , ppLayout = \x -> case x of | ||
| + | "Tall" -> "T" | ||
| + | "Mirror Tall" -> "M" | ||
| + | "Full" -> "F" | ||
| + | _ -> "?" | ||
| + | } | ||
| + | |||
| + | |||
| + | main = do xmobar <- spawnPipe "xmobar" | ||
| + | xmonad $ defaultConfig { | ||
| + | terminal = "urxvtc", | ||
| + | focusFollowsMouse = True, | ||
| + | borderWidth = 2, | ||
| + | modMask = mod4Mask, | ||
| + | numlockMask = 0, | ||
| + | workspaces = [ show x | x <- [1..9] ], | ||
| + | normalBorderColor = "#444", | ||
| + | focusedBorderColor = "#f00", | ||
| + | keys = myKeys, | ||
| + | mouseBindings = myMouseBindings, | ||
| + | layoutHook = myLayoutHook, | ||
| + | manageHook = myManageHook, | ||
| + | logHook = myLogHook xmobar | ||
| + | } | ||
</haskell> | </haskell> | ||
Current revision
import System.Exit import XMonad import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Layout.NoBorders import XMonad.Prompt (defaultXPConfig) import XMonad.Prompt.Shell (shellPrompt) import XMonad.Util.EZConfig import XMonad.Util.Run import qualified XMonad.StackSet as W import qualified Data.Map as M myKeys c = mkKeymap c $ [ ("M-<Return>", spawn $ XMonad.terminal c) , ("M-<Space>", sendMessage NextLayout) , ("M-<Tab>", windows W.focusDown) , ("M-S-<Return>", windows W.swapMaster) , ("M-S-c", kill) , ("M-S-q", io (exitWith ExitSuccess)) , ("M-b", sendMessage ToggleStruts) , ("M-h", sendMessage Shrink) , ("M-l", sendMessage Expand) , ("M-n", refresh) , ("M-q", broadcastMessage ReleaseResources >> restart "xmonad" True) , ("M-t", withFocused $ windows . W.sink) , ("M-x", shellPrompt defaultXPConfig)] ++ [(m ++ k, windows $ f w) | (w, k) <- zip (XMonad.workspaces c) (map show [1..9]) , (m, f) <- [("M-",W.greedyView), ("M-S-",W.shift)]] myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $ [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w)) , ((modMask, button2), (\w -> focus w >> windows W.swapMaster)) , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w)) ] myLayoutHook = smartBorders $ avoidStruts $ tiled ||| Mirror tiled ||| Full where tiled = Tall nmaster delta ratio nmaster = 1 ratio = 1/2 delta = 4/100 myManageHook = composeAll [ floatC "MPlayer" , floatC "Gimp" , moveToC "Conkeror" "2" ] where moveToC c w = className =? c --> doF (W.shift w) moveToT t w = title =? t --> doF (W.shift w) floatC c = className =? c --> doFloat myLogHook xmobar = dynamicLogWithPP $ defaultPP { ppOutput = hPutStrLn xmobar , ppTitle = xmobarColor "white" "" . shorten 110 , ppCurrent = xmobarColor "white" "black" . pad , ppHidden = pad , ppHiddenNoWindows = \w -> xmobarColor "#444" "" (" " ++ w ++ " ") , ppSep = xmobarColor "#555" "" " / " , ppWsSep = "" , ppLayout = \x -> case x of "Tall" -> "T" "Mirror Tall" -> "M" "Full" -> "F" _ -> "?" } main = do xmobar <- spawnPipe "xmobar" xmonad $ defaultConfig { terminal = "urxvtc", focusFollowsMouse = True, borderWidth = 2, modMask = mod4Mask, numlockMask = 0, workspaces = [ show x | x <- [1..9] ], normalBorderColor = "#444", focusedBorderColor = "#f00", keys = myKeys, mouseBindings = myMouseBindings, layoutHook = myLayoutHook, manageHook = myManageHook, logHook = myLogHook xmobar }
